0


C++上机题汇总

C++期末复习题目汇总

本人汇总了本学期上机考的题目,并借鉴和自己编写了这些代码。

///题目如下

1.字母大小写转换

#include<iostream>usingnamespace std;voidchange(char x){
    x +=32;
    cout << x << endl;}intmain(){char a;
    cin >> a;change(a);return0;}

2.计算圆的周长和面积

#include<iostream>usingnamespace std;#define PI 3.14classCircle{public:Circle(double radius){this->C =2* PI * radius;this->S = PI * radius * radius;
        cout <<this->C <<" "<<this->S << endl;}double S;double C;};intmain(){double radius;
    cin >> radius;
    Circle a(radius);return0;}

3.数据逆序输出

#include<iostream>usingnamespace std;intfunction(int n){int temp =0;while(n >0){
        n /=10;
        temp++;}return temp;}intmain(){int array[10];int num, x;
    cin >> num;
    x =function(num);for(int i =0; i < x; i++){
        array[i]= num %10;
        num /=10;}for(int i =0; i < x; i++){
        cout << array[i];}return0;}

4.判断是否是闰年

#include<iostream>usingnamespace std;voidfunction(int a ){if(a %4==0&& a %100!=0|| a %400==0){
        cout <<"是"<< endl;}else{
        cout <<"不是"<< endl;}}intmain(){int year;
    cin >> year;function(year);return0;}

5.打点滴实验

#include<iostream>usingnamespace std;voidcalculate(int V){int num =1, time =2, sum =0;while(V-num >0){
        V -= num;
        num++;
        sum += time;
        time++;}if(V >0){
        sum += V;}
    cout << sum << endl;}intmain(){int V;
    cin >> V;calculate(V);return0;}

6.母牛生小牛,四年生一头

#include<iostream>usingnamespace std;intfunc(int N){if(N <4){return1;}else{returnfunc(N -1)+func(N -3);}}intmain(){int N;
    cin >> N;
    cout <<func(N);return0;}

7.输出1-100(每行十个),并输出序号为素数的元素(一行十个)

代码一:

#include<iostream>usingnamespace std;intmain(){int arr[100];for(int i =0; i <100; i++){
        arr[i]= i+1;}for(int i =0; i <100; i+=10){for(int j =0; j <9; j++){
            cout << arr[i + j]<<" ";}
        cout << arr[i +9]<< endl;}//寻找100以内素数int arr1[50];int temp =0, count =0;for(int i =2; i <=100; i++){for(int j =2; j < i; j++){if(i % j ==0){
                temp =1;break;}}if(temp ==0){
            count++;
            arr1[count-1]= i;}
        temp =0;}
    
    cout << arr[arr1[0]]<<" ";for(int i =1; i<count; i++){if(i %10!=9){
            cout << arr[arr1[i]]<<" ";}else{
            cout << arr[arr1[i]]<< endl;}}return0;}

代码二:

#include<iostream>usingnamespace std;intmain(){int a[100];int n =1;for(int i =0; i <100; i++){
        a[i]= n;
        n++;}for(int i =0; i <100;){for(int j =0; j <9; j++){
            cout << a[i]<<" ";
            i++;}
        cout << a[i++]<< endl;}int m =1;
    cout <<3<<" ";for(int i =3; i <100; i++){int sum =0;for(int j =2; j < i /2+1; j++){int x;
            x = i % j;if(x ==0)
                sum++;}if(sum ==0){
            m++;if(m <10)
                cout << a[i]<<" ";elseif(m >=10){
                m =0;
                cout << a[i]<< endl;}}}return0;}

8.仓库结算
某仓库共有ABCDE五种货物,每天需要补货的数量不同,每种货物的单价不同,如下所示。由键盘输入五种货物需要补货的数量,请计算出当日仓库需支付多少货款。
货物名称 货物单价
A 10
B 5
C 3
D 20
E 13

#include<iostream>usingnamespace std;intmain(){int m, sum =0;char P;for(int i =0; i <5; i++){
        cin >> P >> m;switch(P){case'A':
            sum +=10* m;break;case'B':
            sum +=5* m;break;case'C':
            sum +=3* m;break;case'D':
            sum +=20* m;break;case'E':
            sum +=13* m;break;}}
    cout << sum << endl;return0;}

9.编写一个评分统计程序。从键盘获取8个评委打分的百分制成绩(double类型),统计平均分时,去掉一个最高分和一个最低分其余6个分数的平均值即为最后得分。请将这个分数输出到屏幕上,格式为:平均成绩是XXX。

#include<iostream>usingnamespace std;voidfunc(double arr[]){int num =7, num1;double sum =0;while(num){
        num1 = num;
        num =0;for(int i =0; i < num1; i++){if(arr[i]<arr[i+1]){double temp = arr[i];
                arr[i]= arr[i +1];
                arr[i +1]= temp;
                num = i;}}}for(int i =1; i <7; i++){
        sum += arr[i];}
    cout <<"平均成绩是"<< sum /6<< endl;}intmain(){double score[8];for(int i =0; i <8; i++){
        cin >> score[i];}func(score);return0;}

10.编写一个记录5个学生的姓名、性别、年龄和学号的程序,要求使用结构数组表示学生信息,用for循环获得键盘输入的学生记录的数据,所有数据输入完毕后,将5个学生的信息在屏幕上输出,格式要求:按表格行列格式输出,每行输出一个学生的信息,按照姓名、性别、年龄、学号的顺序,各列信息左对齐,各信息占10位。

#include<iostream>#include<iomanip>#include<string>usingnamespace std;struct Student
{
    string name;
    string sex;int age;
    string number;};
Student P[5];intmain(){for(int i =0; i <5; i++){
        cin >> P[i].name >> P[i].sex >> P[i].age >> P[i].number;}for(int i =0; i <5; i++){
        cout <<setiosflags(ios::left)<<setw(10)<< P[i].name
            <<setw(10)<< P[i].sex
            <<setw(10)<< P[i].age
            <<setw(10)<< P[i].number << endl;}return0;}

11.定义一个结构型变量(包括年、月、日),并从键盘上获取该变量的值,计算该日在本年中是第几天,输出到屏幕上,格式为:“X年X月X日是本年中的第X天。”(提示:注意闰年问题)。

代码一:

#include<iostream>usingnamespace std;classDate{friendvoidfunc(Date *p);public:Date(int y,int m,int d){this->year = y;this->month = m;this->day = d;}int year;int month;int day;};intjudgement(int y){if(y %400==0|| y %4==0&& y %100!=0){return1;}else{return0;}}voidfunc(Date &p){int arr[12];int sum =0;if(judgement(p.year)){
        arr[1]=29;}else{
        arr[1]=28;}
    arr[0]= arr[2]= arr[4]= arr[6]= arr[7]= arr[9]= arr[11]=31;
    arr[3]= arr[5]= arr[8]= arr[10]=30;for(int i =0; i < p.month -1; i++){
        sum += arr[i];}
    sum += p.day;
    cout << p.year <<"年"<< p.month <<"月"<< p.day <<"日是本年中的第"<< sum <<"天"<< endl;}intmain(){int y, m, d;
    cin >> y >> m >> d;
    Date a(y, m, d);func(a);return0;}

代码二:

#include<iostream>usingnamespace std;struct Date
{int year;int month;int day;};booljudge(int y){int sum =0;if(y %100==0){if(y %400==0)returntrue;elsereturnfalse;}else{if(y %4==0)returntrue;elsereturnfalse;}}intmain(){
    Date d;
    cin >> d.year >> d.month >> d.day;int a[12];if(judge(d.year)){
        a[1]=29;}else{
        a[1]=28;}
    a[0]= a[2]= a[4]= a[6]= a[7]= a[9]= a[11]=31;
    a[3]= a[5]= a[8]= a[10]=30;int sum =0;for(int i =0; i < d.month -1; i++){
        sum += a[i];}
    sum += d.day;
    cout << d.year <<"年"<< d.month <<"月"<< d.day <<"日是本年中的第"<< sum <<"天"<< endl;return0;}

12.从键盘输入一行或几行字符串,行数由键盘输入,一行字符串用字符数组存储。请统计所输入的字符串中26个字母(不区分大小写)出现的次数,并将出现次数非零的字母统计结果输出到屏幕上,格式参见样例。如果没有字母,请输出字符串中无字母。

代码一:

#include<iostream>usingnamespace std;intmain(){constint N =80;char buffer[N];int k =0;constint NUM =26;int counts[NUM]={0};char letters[NUM];int i =0;int count =0;int num;
    cin >> num;do{
        cin.getline(buffer, N,'\n');
        k =0;while(buffer[k]!='\0'){if(tolower(buffer[k])>='a'&&tolower(buffer[k])<='z'){
                i =tolower(buffer[k])-'a';
                counts[i]++;}
            k++;}
        num--;}while(num >=0);for(i =0; i < NUM; i++){
        letters[i]=char('a'+ i);if(counts[i]>0){
            count++;
            cout << letters[i]<<":"<< counts[i]<< endl;}}if(count ==0){
        cout <<"字符串中无字母。"<< endl;}}

代码二:

#include<iostream>usingnamespace std;int b[26]={0};voidfunc(char a){if(a >='a'&& a <='z'){
        b[a -'a']++;}elseif(a >='A'&& a <='Z'){
        b[a -'A']++;}}intmain(){int n;
    cin >> n;char a[100]={0};for(int i =0; i < n +1; i++){
        cin.getline(a,100,'\n');int j =0;while(a[j]!='\0'){func(a[j]);
            j++;}}int count =0;//判断有无字母for(int i =0; i <26; i++){if(b[i]!=0){
            cout <<char(i +'a')<<":"<< b[i]<< endl;
            count++;}}if(count ==0){
        cout <<"字符串中无字母。"<< endl;}return0;}

13.温度转换

#include<iostream>usingnamespace std;intmain(){double F, C;
    cin >> F;
    C =(F -32)/1.8;
    cout << C << endl;return0;}

14.斐波那契数列

递归版:

#include<iostream>usingnamespace std;intFabo(int x){int sum =0;if(x ==0)sum =0;elseif(x ==1)sum =1;else sum = sum +Fabo(x -1)+Fabo(x -2);return sum;}intmain(){int x;
    cin >> x;
    cout <<Fabo(x)<< endl;}

非递归版:

#include<iostream>usingnamespace std;voidfunc(int n){if(n ==0){
        cout <<0<< endl;}elseif(n ==1|| n ==2){
        cout <<1<< endl;}else{int a =1, b =1, temp =0;for(int i =3; i <= n; i++){
            temp = a + b;
            a = b;
            b = temp;}
        cout << temp << endl;}}intmain(){int n;
    cin >> n;func(n);return0;}

15.有10个小朋友围成一圈分糖果,老师顺次分给每人一定数量糖果(初始值为偶数)然后按照下列规则调整,所有小朋友同时把自己的糖果分一半给右边的人,糖果数变为奇数的人,向老师补要一块糖果,问经过多少次调整后,大家糖果数一样多,且每人多少块。建立两个函数,一个负责传递糖果,一个负责判断所有人的糖果是否相等。

#include<iostream>usingnamespace std;voidfunc(int arr[],int*arr1){for(int i =1; i <10; i++){
        arr1[i]= arr[i]/2+ arr[i -1]/2;}
    arr1[0]= arr[0]/2+ arr[9]/2;for(int i =0; i <10; i++){if(arr1[i]%2!=0){
            arr1[i]++;}}for(int i =0; i <10; i++){
        arr[i]= arr1[i];}}intjudgement(int arr[]){for(int i =0; i <10; i++){if(arr[i]!= arr[0]){return1;}}return0;}intmain(){int count =0;int arr[10]={0};int*arr1 =newint[10];for(int i =0; i <10; i++){
        cin >> arr[i];}while(judgement(arr)){func(arr,arr1);
        count++;}
    cout << count <<" "<<arr[0]<< endl;system("pause");return0;}

16.歌手大奖赛共有10位评委,为每位选手打分(double型)。
预赛部分歌手的分数,为去掉1个最高分、1个最低分后其余8个分数的平均值;
决赛部分歌手的分数,为去掉2个最高分、2个最低分后其余6个分数的平均值。
通过键盘输入10位评委的打分,以及当前处于哪个阶段(预赛部分用1表示,决赛部分用2表示)。
主函数中,只负责输入数据、调用分数计算函数、输出结果,评分计算部分编写独立函数完成。

#include<iostream>usingnamespace std;voidfunc(double* p){for(int i =0; i <9; i++){for(int j =0; j <9- i; j++){double temp;
            temp = p[j];
            p[j]= p[j +1];
            p[j +1]= temp;}}}doublejs(double* p){double sum =0;for(int i =2; i <8; i++){
        sum += p[i];}return sum /6.0;}doubleys(double* p){double sum =0;for(int i =1; i <9; i++){
        sum += p[i];}return sum /8.0;}intmain(){double* p =newdouble[10];for(int i =0; i <10; i++){
        cin >> p[i];}int x;
    cin >> x;if(x ==1){
        cout <<ys(p)<< endl;}if(x ==2){
        cout <<js(p)<< endl;}delete[]p;return0;}

17.编写一个函数get_average()获取整型数组元素的平均值。
要求这个函数既可以用来求一维数组元素的平均值,
也可以求二维数组元素的平均值。
在main()函数中通过具体的一维数组Array_1D和二维数组Array_2D测试这个函数。
假定一维数组为a[5],二维数组为b[2][3],一维数组和二维数组的变量值由键盘分别输入,
在屏幕上输出一维数组和二维数组的平均值,平均值间用一个空格分开。

#include<iostream>usingnamespace std;intmain(){double sum1 =0, sum2 =0;int a[5];int b[2][3];for(int i =0; i <5; i++){
        cin >> a[i];
        sum1 += a[i];}for(int i =0; i <2; i++){for(int j =0; j <3; j++){
            cin >> b[i][j];
            sum2 += b[i][j];}}
    cout << sum1 /5<<" "<< sum2 /6<< endl;return0;}

18.编制程序,调用指针作为参数的函数,实现下面两字符串变量的交换。 char* ap=“hello”; char* bp=“how are you”;
交换的结果为:ap 指向"how are you",bp 指向"hello"。 (注意:输出语句中的;和.为英文符号)

#include<iostream>usingnamespace std;voidswap(char* a,char* b){char* t;
    t = a;
    a = b;
    b = t;}intmain(){constchar* ap ="hello.";constchar* bp ="how are you;";swap(ap, bp);
    cout <<"ap指向"<< ap << endl;
    cout <<"bp指向"<< bp << endl;return0;}

19.用字符指针数组,将给定的5个字符串(可以是任意5个国家名字)进行排序并输出。

#include<iostream>usingnamespace std;intmain(){char* name[5];char arr[5][100];for(int i =0; i <5; i++){
        cin >> arr[i];}for(int i =0; i <5; i++){
        name[i]= arr[i];}for(int i =0; i <5; i++){for(int j =0; j <4- i; j++){if(*name[j]>*name[j+1]){char* t = name[j];
                name[j]= name[j +1];
                name[j +1]= t;}}}for(int i =0; i <5; i++){
        cout << name[i]<< endl;}return0;}

20.已知有3名学生及五门课程的成绩,要求根据学生的各科平均分排序(降序),并输出学生的所有信息和平均分(用指针数组完成)。

#include<iostream>usingnamespace std;struct student {char name[10];int score[5];float aver;};student a[3];intmain(){for(int i =0; i <3; i++){
        cin >> a[i].name;float num =0;for(int j =0; j <5; j++){
            cin >> a[i].score[j];
            num +=(float)a[i].score[j];}
        a[i].aver = num /5;}
    student* p[3];for(int i =0; i <3; i++){
        p[i]=&a[i];}for(int i =0; i <2; i++){for(int j =0; j <2- i; j++){if(p[j]->aver < p[j +1]->aver){
                student* temp;
                temp = p[j];
                p[j]= p[j +1];
                p[j +1]= temp;}}}for(int i =0; i <3; i++){
        cout << p[i]->name <<" ";for(int j =0; j <5; j++){
            cout << p[i]->score[j]<<" ";}
        cout << p[i]->aver << endl;}return0;}

21.请编写函数实现将一个数值插入到数组中适当的位置,使新数组按降序排列,并将插入的位置输出到屏幕上。 说明:1)原数组大小和数值由键盘输入,动态创建数组; 2)插入的数值由键盘输入。
3)如果插入数据与原数组中某数据相同,则插在该数据之前。

#include<iostream>usingnamespace std;intmain(){int num,num1;
    cin >> num;int* p =newint[100];int* x =newint[100];for(int i =0; i < num; i++){
        cin >> p[i];}for(int i =0; i < num -1; i++){for(int j =0; j < num - i -1; j++){if(p[j]< p[j +1]){int temp = p[j];
                p[j]= p[j +1];
                p[j +1]= temp;}}}
    cin >> num1;
    x[0]= num1;for(int i =0; i < num; i++){
        x[i +1]= p[i];}int count =1;for(int i =0; i < num ; i++){if(x[i]< x[i +1]){int temp = x[i];
            x[i]= x[i +1];
            x[i +1]= temp;
            count++;}}
    cout << count << endl;system("pause");return0;}

22.老王的密码

#include<iostream>usingnamespace std;intmain(){int num =0;char* p =newchar[100];
    cin >> p;for(int i =0; i <100; i++){if(p[i]==NULL){
            num = i;break;}}for(int i =0; i < num; i++){if(p[i]>='a'&& p[i]<='z'){if(p[i]>='a'&& p[i]<='c'){
                p[i]='2';}elseif(p[i]>='d'&& p[i]<='f'){
                p[i]='3';}elseif(p[i]>='g'&& p[i]<='i'){
                p[i]='4';}elseif(p[i]>='j'&& p[i]<='l'){
                p[i]='5';}elseif(p[i]>='m'&& p[i]<='o'){
                p[i]='6';}elseif(p[i]>='p'&& p[i]<='s'){
                p[i]='7';}elseif(p[i]>='t'&& p[i]<='v'){
                p[i]='8';}else{
                p[i]='9';}}elseif(p[i]>='A'&& p[i]<='Z'){
            p[i]= p[i]+33;}else{
            p[i]= p[i];}}for(int i =0; i < num; i++){
        cout << p[i];}system("pause");return0;}

23.矩形类

#include<iostream>usingnamespace std;classRec{public:Rec(double R_len,double R_wid){this->R_len = R_len;this->R_wid = R_wid;this->S =this->R_len *this->R_wid;}double R_len;double R_wid;double S;

    Rec compare(Rec rec1, Rec rec2);};

Rec Rec::compare(Rec rec1, Rec rec2){if(rec1.S > rec2.S){return rec1;}else{return rec2;}}intmain(){double l, w;
    cin >> l >> w;
    Rec rec1(5.2,4.3);
    Rec rec2(100,20);
    Rec rec3(l, w);
    cout <<(rec1.compare(rec1.compare(rec1,rec2),rec3)).S << endl;system("pause");return0;}

24.三角类

#include<iostream>usingnamespace std;classTri{public:Tri(int a,int b,int c){this->L1 = a;this->L2 = b;this->L3 = c;}int L1;int L2;int L3;voidjudgement(int a1,int a2,int a3);};void Tri::judgement(int a1,int a2,int a3){if((a1 + a2 > a3)&&(a1 + a3 > a2)&&(a2 + a3 > a1)){if(a1 == a2 && a2== a3){
            cout <<"A equileteral triangle"<< endl;}elseif((a1 == a2)|(a1 == a3)|(a2 == a3)){
            cout <<"A isosceles triangle"<< endl;}elseif((a1 * a1 == a2 * a2 + a3 * a3)||(a2 * a2 == a1 * a1 + a3 * a3)||(a3 * a3 == a2 * a2 + a1 * a1)){
            cout <<"A right triangle"<< endl;}else{
            cout <<"A triangle"<< endl;}}else{
        cout <<"Not a triangle"<< endl;}}intmain(){int a, b, c;
    cin >> a >> b >> c;
    Tri S(a, b, c);
    S.judgement(S.L1, S.L2, S.L3);system("pause");return0;}

25.时间类

#include<iostream>usingnamespace std;classTime{public:Time(int a,int b,int c);voidfunc(bool d);int Year;int Month;int Day;};
Time::Time(int a,int b,int c){this->Year = a;this->Month = b;this->Day = c;}void Time::func(bool d){if(d ==true){
        cout << Year <<"-"<< Month <<"-"<< Day << endl;}else{
        cout << Year <<"年"<< Month <<"月"<< Day <<"日"<< endl;}}intmain(){char str[15];int a, b, c, i;bool e;
    cin >> a >> b >> c>> str;for(i =0; str[i]; i++){if(str[i]=='.')break;}if(str[i])
            e =false;else
            e =true;
    Time T(a, b, c);
    T.func(e);system("pause");return0;}

26.员工薪金管理类

#include<iostream>#include<string>usingnamespace std;classemployee{public:int num;
    string name;int money;int year;int month;int day;employee(int a, std::string b,int c,int d,int e,int f){this->num = a;this->name = b;this->money = c;this->year = d;this->month = e;this->day = f;}intsum(int x,int y);};int employee::sum(int x,int y){int time =(x - year)*12+ y - month;int sum = time * money;return sum;}intmain(){
    employee a(1,"wang",5000,2000,10,23);
    employee b(2,"liu",4500,2008,1,20);
    employee c(3,"huo",3800,2003,7,3);
    employee d(4,"ma",5300,2015,4,10);
    employee e(5,"meng",6000,2016,3,16);int x, y, z;
    cin >> x >> y >> z;switch(x){case1:
        cout << a.name <<" "<< a.sum(y, z)<< endl;break;case2:
        cout << b.name <<" "<< b.sum(y, z)<< endl;break;case3:
        cout << c.name <<" "<< c.sum(y, z)<< endl;break;case4:
        cout << d.name <<" "<< d.sum(y, z)<< endl;break;case5:
        cout << e.name <<" "<< e.sum(y, z)<< endl;break;}return0;}

以上就是一些题目,不敢保证代码写的很完美,仅供参考。

标签: c++

本文转载自: https://blog.csdn.net/qq_50469517/article/details/111329662
版权归原作者 下饭的PP 所有, 如有侵权,请联系我们删除。

“C++上机题汇总”的评论:

还没有评论