C++高級語言程序設計實驗三-中國礦業大學


第一題

編寫具有如下原型的函數:bool f(long x);其功能為:若整數 x 僅由偶數字(0、2、4、6、8)組成時(如 x=26480),函數返回 true,否則返回 false(如當 x=22034 時)。並編制主函數對它進行調用。

#include<iostream>
using namespace std;
bool f(long x){
    while(x){
        int a = x%10;
        if (a%2 == 1){
            return false;
        }
        else {
            x/=10;
        }
    }
    return true;
}
int main(){
    long a;
    cin>>a;
    if (f(a)==1){
        cout<<"true";
    }
    else {
        cout<<"false";
    }
}

第二題

編寫具有如下原型的函數:void find(int i, int n); 實現從 i 開始找起,連續找出 n 個素數並顯示在屏幕上。輸入兩個整數,前一個是查找的起始數字,后一個是指定查找幾個素數。

#include<iostream>
using namespace std;
void find(int i, int n){
    while(n){
        int a=2;
        for (; a<i; a++){
            if (i%a==0){
                i++;
                break;
            }
        }
        if (a==i){
            cout<<i<<" ";
            i++;
            n--;
        }
    }
}

int main(){
    int a,b;
    cin>>a>>b;
    find(a, b);
}

第三題

輸入正整數start和end,找出從start到end這一區間段內哪一個數n的因子和最大,並將該n及其因子和maxSum作為結果輸出。例如,當start=10,end=15時,所求的n應該為12,而maxSum應該為16。設計函數計算n的因子和,其中因子和為包括1但不包括n本身的所有因子之和。

#include<iostream>
using namespace std;
void maxSum(int a, int b){
    int maxindex=a;
    int max=1;
    int p=a;
    while(p<=b){
        int s=0;
        for (int n=1; n<p; n++){
            if (p%n==0){
                s+=n;
            }
        }
        if (s>max){
            maxindex=p;
            max=s;
        }
        p++;
    }
    cout<<maxindex<<" "<<max;
}

int main(){
    int start,end;
    cin>>start>>end;
    maxSum(start, end);
}

第四題

編寫具有如下原型的函數symm:bool symm(long n); 用來判斷正整數n是否為“回文數”(正讀與反讀為大小相同的數),若是返回true,否則返false。並編寫主函數,通過調用symm,求出n以內所有滿足下述特征的m:m和7m以及3mm都是“回文數”,如1,11,88,…(因為m=1,7m=7,3mm=3;m=11,7m=77,3mm=363;m=88,7m=616,3mm=23232;…)

#include<iostream>
using namespace std;
bool symm(long n){
    long beforereverse=n;
    long reverse=0;
    int temp=0;
    while(n){
        temp=n%10;
        reverse=reverse*10+temp;
        n/=10;
    }
    if (reverse==beforereverse){
        return true;
    }
    else {
        return false;
    }
}

int main(){
    long a;
    cin>>a;
    for (int i=1; i<=a; i++){
        if (symm(i)&&symm(7*i)&&symm(3*i*i)){
            cout<<i<<" ";
        }
    }
}

第五題

鍵盤輸入正整數 n,求出n與其反序數x之和並輸出。例如,輸入2038,n+x = 2038 +8302 =10340,輸出應為10340。要求:編寫函數實現數據轉換成反序數值。

#include<iostream>
using namespace std;
int re(int n){
    int beforereverse=n;
    int reverse=0;
    int temp=0;
    while(n){
        temp=n%10;
        reverse=reverse*10+temp;
        n/=10;
    }
    return reverse;
}

int main(){
    int a;
    cin>>a;
    cout<<a+re(a);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM