大学最新C++题库及答案.doc

上传人:laozhun 文档编号:4123270 上传时间:2023-04-06 格式:DOC 页数:108 大小:528KB
返回 下载 相关 举报
大学最新C++题库及答案.doc_第1页
第1页 / 共108页
大学最新C++题库及答案.doc_第2页
第2页 / 共108页
大学最新C++题库及答案.doc_第3页
第3页 / 共108页
大学最新C++题库及答案.doc_第4页
第4页 / 共108页
大学最新C++题库及答案.doc_第5页
第5页 / 共108页
点击查看更多>>
资源描述

《大学最新C++题库及答案.doc》由会员分享,可在线阅读,更多相关《大学最新C++题库及答案.doc(108页珍藏版)》请在三一办公上搜索。

1、Q5.(10分)写一个程序根据从键盘输入的里氏强度显示地震的后果。根据里氏强度地震的后果如下:里氏强度 后果小于4很小4.0到5.0窗户晃动5.0到6.0墙倒塌;不结实的建筑物被破坏6.0到7.0烟囱倒塌;普通建筑物被破坏7.0到8.0地下管线破裂;结实的建筑物也被破坏超过8.0地面波浪状起伏;大多数建筑物损毁*输入格式要求:实数, 提示信息:cout 请输入地震的里氏强度: endl;*输出格式要求:本次地震后果:很小!本次地震后果:窗户晃动!本次地震后果:墙倒塌;不结实的建筑物被破坏!本次地震后果:烟囱倒塌;普通建筑物被破坏!本次地震后果:地下管线破裂;结实的建筑物也被破坏!本次地震后果:

2、地面波浪状起伏;大多数建筑物损毁!#include using namespace std;int main()double magnitude;cout 请输入地震的里氏强度: magnitude;if (magnitude 4.0)cout 本次地震后果:很小! endl;else if (magnitude 5.0)cout 本次地震后果:窗户晃动! endl;else if (magnitude 6.0)cout 本次地震后果:墙倒塌;不结实的建筑物被破坏! endl;else if (magnitude 7.0)cout 本次地震后果:烟囱倒塌;普通建筑物被破坏! endl;else

3、 if (magnitude 8.0)cout 本次地震后果:地下管线破裂;结实的建筑物也被破坏! endl;elsecout 本次地震后果:地面波浪状起伏;大多数建筑物损毁! endl;return 0;Q6.(10分)写一个程序从键盘输入1到7中的某个数字,其中1代表星期天,2代表星期一,3代表星期二等。根据用户输入的数字显示相应的星期几。如果用户输入的数字超出了1到7的范围,显示输出一个错误提示信息。*输入格式要求:整数, 提示信息:cout Please input a single numeral(1-7): ;*输出格式要求:Monday (星期几的英文单词首字母大写加换行) 提示

4、信息:Invalid - please input a single numeral(1-7).(加换行)#includeusing namespace std;int main()int a;cout a;if (a 7)cout Invalid - please input a single numeral(1-7). endl;switch (a)case 1:cout Sunday endl;break;case 2:cout Monday endl;break;case 3:cout Tuesday endl;break;case 4:cout Wednesday endl;brea

5、k;case 5:cout Thursday endl;break;case 6:cout Friday endl;break;case 7:cout Saturday endl;break;return 0;Q7.(10分)有一天,一位百万富翁遇到一个陌生人,陌生人找他谈一个换钱的计划,陌生人对百万富翁说:“我每天给你10万元,而你第一天只需给我1分钱,第二天我仍给你10万元,你给我2分钱,第三天我仍给你10万元,你给我4分钱。你每天给我的钱是前一天的两倍,直到满一个月(30天)为止”,百万富翁很高兴,欣然接受了这个契约。请编程计算在这一个月中陌生人总计给百万富翁多少钱,百万富翁总计给陌生人

6、多少钱。*输入提示信息和数据格式:无*输出提示信息和数据格式:cout 百万富翁给陌生人: toStranger 元 endl; cout 陌生人给百万富翁: toRichman 元 endl;#include using namespace std;int main()int j;double toStranger = 0; /* 富翁给陌生人的钱,以元为单位 */double toRichman = 0; /* 陌生人给富翁的钱,以元为单位 */double term = 0.01; /* 富翁第一天给陌生人0.01元 */for (j = 1; j = 30; j+)toRichman

7、+= 100000; /* 陌生人每天给富翁10万元 */toStranger += term;term = term * 2; /* 富翁每天给陌生人的钱是前一天的两倍 */cout 百万富翁给陌生人: toStranger 元 endl;cout 陌生人给百万富翁: toRichman 元 endl;return 0;Q8.(10分)编程计算自然数的立方和,直到立方和大于等于1000000时为止。统计并输出实际累加的项数。输出格式要求:coutsum=sumendl; cout count = i endl;输出结果为: sum=1071225 count =45#include usin

8、g namespace std;int main()long i, sum = 0;for (i = 1; ; i+)sum = sum + i * i * i;if (sum = 1000000) break;coutsum=sumendl;cout count = i endl;return 0;Q9.(10分)求多项式 1!+2!+3!+15!的值。输出格式要求:couts=sendl;#includeusing namespace std;int main()int n = 1, s = 0;for (int i = 1; i = 15; i+)n = n * i;s += n;cou

9、t s= s endl;return 0; Q10.(10分)求1至200之间的所有质数,将质数和存入变量 sum 中并输出。质数(素数)的说明:“质数是只能被1和其本身整除的数”。输入提示要求:无输出结果格式要求:质数之间以一个空格隔开输出所有质数后换行输出:sum=4227#include#includeusing namespace std;int main()int N, m, sum = 0;for (m = 2; m = 200; m+)int i, tmp = (int)sqrt(m);for (i = 2; i tmp)cout m ;sum += m;cout endl;co

10、ut sum= sum endl;return 0;Q11.(10分)在一个已知的一维数组中分类统计正数和负数的个数。正数的个数存入变量C1中,负数个数存入变量C2中.输出格式要求:cout c1= c1 endl; cout c2= c2 endl;#include using namespace std;int main()int a10 = 1, -2, 0, 4, -5, 0, 7, 8, -9, 10;int c1 = 0, c2 = 0;int i;for (i = 0; i 0)c1+;else if (ai 0)c2+;cout c1= c1 endl;cout c2= c2

11、endl;return 0;Q12.(10分)在包含10个数的一维整数数组a中查找最大元素max和最小元素min。输出格式要求:cout 最大元素: max endl; cout 最小元素: min endl;#include using namespace std;int main()int a10 = 32, 43, 65, 23, 432, 543, 543, 54, 542, 87;int i;int max, min;max = a0, min = a0;for (i = 1; i max) max = ai;if (ai min) min = ai;cout 最大元素: max e

12、ndl;cout 最小元素: min endl;return 0;Q13.(10分)用while循环编程,求自然数1至100之间各奇数平方和sum。输出结果格式为:sum=166650#includeusing namespace std;int main()int i = 1, sum = 0;while (i = 100)sum += i * i;i += 2;cout sum= sum endl;return 0;Q14.(10分)判断一个数23437是否是素数(要求程序中设置一个参数flag,flag为1代表是素数,为0代表不是)输出结果:0#include#includeusing

13、namespace std;int main()int m, n, flag = 1;m = 23437;for (n = 2; n = m / 2 & flag; n+)if (m % n = 0)flag = 0;cout flag endl;return 0;Q15.(10分)已知一个数m(=252),用循环求各位数字之和。输出结果格式:s=9#includeusing namespace std;int main()int m = 252, a, b, c, s;a = m / 100;b = m / 10 % 10;c = m % 10;s = a + b + c;cout s= s

14、 endl;return 0;Q16.(10分)已知一个数m(=252),用循环求各位数字之积。输出结果格式:f=20#includeusing namespace std;int main()int m, f=1,n;m=252;while (m !=0)n=m%10;f*=n;m=m/10;coutf=fendl;return 0;Q17.(10分)已知10个四位数输出所有对称数及个数n。例如1221,2332都是对称数。设:int m10 = 1221, 2243, 2332, 1435, 1236, 5623, 4321, 4356, 6754, 3234;输出结果:1221 2332

15、#include using namespace std;int main()int i, n = 0, m10 = 1221, 2243, 2332, 1435, 1236, 5623, 4321, 4356, 6754, 3234;for (i = 0; i 10; i+)int a, b, c, d;a = mi / 1000;b = mi % 1000 / 100;c = mi % 100 / 10;d = mi % 10;if (a = d & c = b)cout mi endl;n+;return 0;Q18.(10分)将1-100之间奇数顺序累加存入n中,直到其和等于或大于20

16、0为止。输出结果格式:n=225#includeusing namespace std;int main()int n = 0, i = 1;while (n 200)n = n + i;i+;i+;cout n= n endl;return 0;Q19.(10分)从键盘上输入三个整数,编写程序求出三个数中的最大值。输入格式要求:cout请输入三个整数:;输出格式要求:cout最大值是:maxendl;#include using namespace std;int main( )int a, b, c, t, max;cout a b c;if (a b)t = a;a = b;b = t;

17、if (a c)t = a;a = c;c = t;max = a;cout 最大值是: max endl;return 0;Q20.(10分)输入年份和月份,编写程序,判断这一年该月份的天数。输入格式要求: cout 请输入年份和月份:;输出格式要求:cout year 年 month 月 是 day 天。 endl;#includeusing namespace std;int main()int year, month, day;cout year month;switch (month)case 1:case 3:case 5:case 7:case 8:case 10:case 12

18、:day = 31;break;case 4:case 6:case 9:case 11:day = 30;break;case 2:if (year % 400 = 0 | year % 4 = 0 & year % 100 != 0)day = 29;elseday = 28;break;cout year 年 month 月 是 day 天。 endl;return 0; Q21.(10分)编写程序,求解下面的分段函数:输入格式要求:cout请输入x:;输出格式要求:couty=yendl;#includeusing namespace std;int main()double x,y;

19、coutx;if(x-10&x0&x10) y=x*x;couty=yendl;return 0;Q22.(10分)用“辗转相除方法”计算两个数 x,y 的最大公约数。输入格式要求:无,直接输入输出格式要求:无,直接输出结果#includeusing namespace std;int main()int x, y, n;cin x y;n = x % y;while (n != 0)x = y;y = n;n = x % y;cout y endl;return 0;Q23.(10分)利用选择法将下面10个数按降序排列。有如下定义:int n10 = 5, 6, 4, 2, 3, 7, 8,

20、 5, 6, 7;输入格式要求:无输出格式要求:以逗号分隔降序数列#includeusing namespace std;int main()int n10 = 5, 6, 4, 2, 3, 7, 8, 5, 6, 7, i, j, k, t;for (i = 0; i 9; i+)k = i;for (j = i + 1; j 10; j+)if (nk nj)k = j;t = ni;ni = nk;nk = t;for (j = 0; j 10; j+)cout nj ,;return 0;Q24.(10分)定义数组,输入不多于20名若干学生成绩,统计高于平均分的人数k,用-1做结束标志

21、。输入格式要求:无输出格式要求:cout 高于平均分的人数: k endl;#include using namespace std;int main()double cj20, aver, sum = 0;int n = 0, k = 0, i;cin cj0;while (cjn = 0)sum += cjn;n+;cin cjn;aver = sum /( n-1);for (i = 0; i aver) k+;cout 高于平均分的人数: k endl;return 0;Q25.(10分)已知三个数a,b,c,按由小到大的顺序存入a,b,c中并输出.输入格式要求:cout 输入三个整数

22、:;输出格式要求:cout 由小到大的顺序是: a , b ,cendl;#include using namespace std;int main()int a, b, c, t;cout a b c;if (a b)t = a;a = b;b = t;if (a c)t = a;a = c;c = t;if (b c)t = b;b = c;c = t;cout 由小到大的顺序是: a , b ,cendl;return 0;Q26.(10分)编程计算 sum=1!+2!+.+9!。输入格式要求: 无输出格式要求: cout sum= sum endl;#includeusing name

23、space std;int main()int sum=0;for (int i=1; i=9; i+)int x=1;for (int j=1;j=i;j+)x=x*j;sum=sum+x;cout sum= sum endl; return 0;Q27.(10分)编写函数,删除字符串中的指定字符,函数原型为:void deletechar(char *string, char ch);设char c100 = abcdabcd aabbccdd;输出结果:bcdbcd bbccdd#include#includeusing namespace std;void deletechar(cha

24、r *string, char ch)int i(0), k(0);while (stringi+ != 0)if (stringi != ch)stringk+ = stringi;stringk = 0;int main ()char c100 = abcdabcd aabbccdd;deletechar(c, a);cout c endl;return 0;Q28.(10分)编写函数,将一个十进制无符号整数转换为二进制整数,函数原型为:void transform(char*p,long i,int base=2);#include using namespace std;void tr

25、ansform(char*p, long i, int base = 2)int r(0), k(0);char t128;while (i 0)r = i % base;if (r = 0)*(p + r) = tk;r+;k-;*(p + r) = 0;int main()char c256;transform(c, 45678, 2);cout c endl;return 0;Q29.(10分)输入10个学生的成绩,存放在一个一维数组中,求出总分和平均分。输入提示信息格式要求: cout 请输入学生的分数:;输出结果格式要求:cout 学生的总分是: sum endl; cout 学生的

26、平均分是: aver endl;#include#includeusing namespace std;int main()int a10, sum, aver, i;sum = 0;cout 请输入学生的分数:;for (i = 0; i ai;for (i = 0; i = 9; i+)sum = sum + ai;aver = sum / 10;cout 学生的总分是: sum endl;cout 学生的平均分是: aver endl;return 0;Q30.(10分)输入10个学生的成绩,存放在一个一维数组中,找出其中的最高分和所对应的学生。输入提示信息格式要求:cout 请输入学生

27、的分数:;输出提示信息格式要求:cout 第 n + 1 名学生的分数最高,是: max endl;#includeusing namespace std;int main()int a10, max, i, n;cout 请输入学生的分数:;for (i = 0; i ai;max = a0;for (i = 1; i = 9; i+)if (max ai)max = ai;n = i;cout 第 n + 1 名学生的分数最高,是: max endl;return 0;Q31.(10分)求一个33矩阵的对角线元素之和。输入提示信息格式要求: cout 请输入3行3列矩阵的元素: endl;

28、输出提示信息格式要求: cout 请输出这个3行3列的矩阵: endl; cout 对角线元素之和为: sum endl;#include#includeusing namespace std;int main()double a33, sum = 0;int i, j;cout 请输入3行3列矩阵的元素: endl;for (i = 0; i 3; i+)for (j = 0; j aij;cout 请输出这个3行3列的矩阵: endl;for (i = 0; i 3; i+)for (j = 0; j 3; j+)cout setw(5) aij;cout endl;for (i = 0;

29、 i 3; i+)sum += aii;cout 对角线元素之和为: sum endl;return 0;Q32.(10分)用公式 =4-4/3+4/5-4/7+.)计算的近似值,直到最后一项绝对值小于1e-5输入格式要求:无输出结果格式要求: cout pi = pi endl;#includeusing namespace std;int main()double pi = 0;double n = 1;int f = 1;while (4.0 / n = 1e-5)pi = pi + f * 4 / n;n = n + 2;f = -f;cout pi = pi endl;return

30、0;Q33.(10分)求一个44矩阵的四周元素之和。输入提示信息格式要求:cout 请输入4行4列矩阵的元素: endl;输出提示信息格式要求:cout 请输出这个4行4列的矩阵: endl; cout 四周元素之和为: sum endl;#include #includeusing namespace std;int main()double a44, sum = 0;int i, j;cout 请输入4行4列矩阵的元素: endl;for (i = 0; i 4; i+)for (j = 0; j aij;cout 请输出这个4行4列的矩阵: endl;for (i = 0; i 4; i+)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号