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);      //如上所述
}