C++參考答案 w?
第一題
用函式計算輸入的整數位數
#include
using namespace std;
int num(int n){
int s=0; //設定變數s (放位數)
while (n != 0) //重複直到 n = 0
{
n = n/10; //將數字減少一位,又因c++對整數的處理,除10以後的小數點將會消失 (結果上是這樣)
s ++; //紀錄位數 (+1)
}
return s; //回傳結果
}
int main(){
int n; //設定變數N
cin >> n; //讓使用者輸入N
if (n == 2147483647) //因c++的整數記憶體大小限制,
out << "超出計算範圍,請輸入其他小於 2147483647 的數字"; // 超過2147483647的數字無法正常計算
else cout << num(n); //呼叫函式並輸出結果
}
第二題
列出N的所有因數
#include
using namespace std;
int main(){
int N; //設定變數N
cin >> N; //讓使用者輸入N
for (int i = 1; i <= N; i++) //重複N次 i從1跑到N
{
if (N % i == 0) //讓N除於i,如果餘數等於0則該數(i)為N的因數 (可被整除)
{
if (N == i)cout << i; //為了輸出時最後一位數的後面不要有 `,` (最後一位數並訂為N)
else cout << i << ","; //其他數字時的輸出方式
}
}
}
第三題
用函式計算 ax^2 +bx + c
#include
#include
using namespace std;
int cool_thing(int x,int a,int b,int c){ //定義函式並設定參數
return a*pow(x,2) + b*x + c; //回傳 ax^2+bx+c 的結果
}
int main(){
int x,a,b,c; //定義變數 x a b c
cin >> x >> a >> b >> c; //讓使用者依序輸入 x a b c
cout << cool_thing(x,a,b,c); //呼叫函式並輸出結果 (包含傳入參數)
}
第四題
輸出九九乘法 如圖所示
#include
using namespace std;
int main(){
for (int i = 9; i >= 1; i--) //外層迴圈
{
for (int j = 1 ;j <= i; j++) //內層迴圈
{
if ( (j == 3 or j == 2) and (i == 2 or i == 3 or i == 4) and not(j == 3 and i == 4)) //格式化輸出 (因為有些數字的乘積不一定為兩位數)
{
cout << j << "x" << i << "=" << j*i << " "; //比正常輸出多一個空格
}
else cout << j << "x" << i << "=" << j*i << " "; //正常輸出 (三個空格)
}
cout << endl; //跑完一行需換行一次 讓下一行正常輸出
}
}
第五題
用遞迴求最大公因數
#include
using namespace std;
// 用輾轉相除法求最大公因數
int cool_thing(int a,int b){ //定義函式並設定變數
if (a%b == 0)return b; //當a除b的餘數為0時,則b為最大公因數 同時回傳結果值
else return cool_thing(b,a%b); //當a除b的餘數不等於0時,則將b設為下次的除數,a除b的餘數設為下次的被除數
}
int main(){
int x,y; //設定變數x y
cin >> x >> y; //讓使用者輸入x y
if (x > y) cout << cool_thing(x,y); //因為使用輾轉相除法時,除數需大於被除數,所以需進行判斷後再呼叫函式
else if (x < y) cout << cool_thing(y,x); //如上所述
}