大学C++题库及答案.docx
- 文档编号:7568520
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:159
- 大小:64.25KB
大学C++题库及答案.docx
《大学C++题库及答案.docx》由会员分享,可在线阅读,更多相关《大学C++题库及答案.docx(159页珍藏版)》请在冰豆网上搜索。
大学C++题库及答案
大学最新C++题库及答案
————————————————————————————————作者:
————————————————————————————————日期:
Q5.(10分)写一个程序根据从键盘输入的里氏强度显示地震的后果。
根据里氏强度地震的后果如下:
里氏强度后果
小于4很小
4.0到5.0窗户晃动
5.0到6.0墙倒塌;不结实的建筑物被破坏
6.0到7.0烟囱倒塌;普通建筑物被破坏
7.0到8.0地下管线破裂;结实的建筑物也被破坏
超过8.0地面波浪状起伏;大多数建筑物损毁
**输入格式要求:
实数,提示信息:
cout<<"请输入地震的里氏强度:
"< **输出格式要求: "本次地震后果: 很小! " "本次地震后果: 窗户晃动! " "本次地震后果: 墙倒塌;不结实的建筑物被破坏! " "本次地震后果: 烟囱倒塌;普通建筑物被破坏! " "本次地震后果: 地下管线破裂;结实的建筑物也被破坏! " "本次地震后果: 地面波浪状起伏;大多数建筑物损毁! " #include usingnamespacestd; intmain() { doublemagnitude; cout<<"请输入地震的里氏强度: "< cin>>magnitude; if(magnitude<4.0) { cout<<"本次地震后果: 很小! "< } elseif(magnitude<5.0) { cout<<"本次地震后果: 窗户晃动! "< } elseif(magnitude<6.0) { cout<<"本次地震后果: 墙倒塌;不结实的建筑物被破坏! "< } elseif(magnitude<7.0) { cout<<"本次地震后果: 烟囱倒塌;普通建筑物被破坏! "< } elseif(magnitude<8.0) { cout<<"本次地震后果: 地下管线破裂;结实的建筑物也被破坏! "< } else { cout<<"本次地震后果: 地面波浪状起伏;大多数建筑物损毁! "< } return0; } Q6.(10分)写一个程序从键盘输入1到7中的某个数字,其中1代表星期天,2代表星期一,3代表星期二等。 根据用户输入的数字显示相应的星期几。 如果用户输入的数字超出了1到7的范围,显示输出一个错误提示信息。 **输入格式要求: 整数,提示信息: cout<<"Pleaseinputasinglenumeral(1-7): "; **输出格式要求: "Monday"(星期几的英文单词首字母大写加换行) 提示信息: "Invalid-pleaseinputasinglenumeral(1-7)."(加换行) #include usingnamespacestd; intmain() { inta; cout<<"Pleaseinputasinglenumeral(1-7): "; cin>>a; if(a<1||a>7) { cout<<"Invalid-pleaseinputasinglenumeral(1-7)."< } switch(a) { case1: cout<<"Sunday"< break; case2: cout<<"Monday"< break; case3: cout<<"Tuesday"< break; case4: cout<<"Wednesday"< break; case5: cout<<"Thursday"< break; case6: cout<<"Friday"< break; case7: cout<<"Saturday"< break; } return0; } Q7.(10分)有一天,一位百万富翁遇到一个陌生人,陌生人找他谈一个换钱的计划,陌生人对百万富翁说: “我每天给你10万元,而你第一天只需给我1分钱,第二天我仍给你10万元,你给我2分钱,第三天我仍给你10万元,你给我4分钱……。 你每天给我的钱是前一天的两倍,直到满一个月(30天)为止”,百万富翁很高兴,欣然接受了这个契约。 请编程计算在这一个月中陌生人总计给百万富翁多少钱,百万富翁总计给陌生人多少钱。 **输入提示信息和数据格式: 无 **输出提示信息和数据格式: cout<<"百万富翁给陌生人: "< cout<<"陌生人给百万富翁: "< #include usingnamespacestd; intmain() { intj; doubletoStranger=0; /*富翁给陌生人的钱,以'元'为单位*/ doubletoRichman=0; /*陌生人给富翁的钱,以'元'为单位*/ doubleterm=0.01; /*富翁第一天给陌生人0.01元*/ for(j=1;j<=30;j++) { toRichman+=100000;/*陌生人每天给富翁10万元*/ toStranger+=term; term=term*2; /*富翁每天给陌生人的钱是前一天的两倍*/ } cout<<"百万富翁给陌生人: "< cout<<"陌生人给百万富翁: "< return0; } Q8.(10分)编程计算自然数的立方和,直到立方和大于等于1000000时为止。 统计并输出实际累加的项数。 输出格式要求: cout<<"sum="< cout<<"count="< 输出结果为: sum=1071225 count=45 #include usingnamespacestd; intmain() { longi,sum=0; for(i=1;;i++) { sum=sum+i*i*i; if(sum>=1000000) break; } cout<<"sum="< cout<<"count="< return0; } Q9.(10分)求多项式1! +2! +3! +……+15! 的值。 输出格式要求: cout<<"s="< #include usingnamespacestd; intmain() { intn=1,s=0; for(inti=1;i<=15;i++) { n=n*i; s+=n; } cout<<"s="< return0; } Q10.(10分)求1至200之间的所有质数,将质数和存入变量sum中并输出。 质数(素数)的说明: “质数是只能被1和其本身整除的数”。 输入提示要求: 无 输出结果格式要求: 质数之间以一个空格隔开 输出所有质数后换行输出: sum=4227 #include #include usingnamespacestd; intmain() { intN,m,sum=0; for(m=2;m<=200;m++) { inti,tmp=(int)sqrt(m); for(i=2;i<=tmp;i++) if(m%i==0) break; if(i>tmp) { cout< sum+=m; } } cout< cout<<"sum="< return0; } Q11.(10分)在一个已知的一维数组中分类统计正数和负数的个数。 正数的个数存入变量C1中,负数个数存入变量C2中. 输出格式要求: cout<<"c1="< cout<<"c2="< #include usingnamespacestd; intmain() { inta[10]={1,-2,0,4,-5,0,7,8,-9,10}; intc1=0,c2=0; inti; for(i=0;i<10;i++) if(a[i]>0) c1++; elseif(a[i]<0) c2++; cout<<"c1="< cout<<"c2="< return0; } Q12.(10分)在包含10个数的一维整数数组a中查找最大元素max和最小元素min。 输出格式要求: cout<<"最大元素: "< cout<<"最小元素: "< #include usingnamespacestd; intmain() { inta[10]={32,43,65,23,432,543,543,54,542,87}; inti; intmax,min; max=a[0],min=a[0]; for(i=1;i<10;i++) { if(a[i]>max)max=a[i]; if(a[i] } cout<<"最大元素: "< cout<<"最小元素: "< return0; } Q13.(10分)用while循环编程,求自然数1至100之间各奇数平方和sum。 输出结果格式为: sum=166650 #include usingnamespacestd; intmain() { inti=1,sum=0; while(i<=100) { sum+=i*i; i+=2; } cout<<"sum="< return0; } Q14.(10分)判断一个数23437是否是素数(要求程序中设置一个参数flag,flag为1代表是素数,为0代表不是) 输出结果: 0 #include #include usingnamespacestd; intmain() { intm,n,flag=1; m=23437; for(n=2;n<=m/2&&flag;n++) if(m%n==0)flag=0; cout< return0; } Q15.(10分)已知一个数m(=252),用循环求各位数字之和。 输出结果格式: s=9 #include usingnamespacestd; intmain() { intm=252,a,b,c,s; a=m/100; b=m/10%10; c=m%10; s=a+b+c; cout<<"s="< return0; } Q16.(10分)已知一个数m(=252),用循环求各位数字之积。 输出结果格式: f=20 #include usingnamespacestd; intmain() { intm,f=1,n; m=252; while(m! =0) { n=m%10; f*=n; m=m/10; } cout<<"f="< return0; } Q17.(10分)已知10个四位数输出所有对称数及个数n。 例如1221,2332都是对称数。 设: intm[10]={1221,2243,2332,1435,1236,5623,4321,4356,6754,3234}; 输出结果: 1221 2332 #include usingnamespacestd; intmain() { inti,n=0,m[10]={1221,2243,2332,1435,1236,5623,4321,4356,6754,3234}; for(i=0;i<10;i++) { inta,b,c,d; a=m[i]/1000; b=m[i]%1000/100; c=m[i]%100/10; d=m[i]%10; if(a==d&&c==b) { cout< n++; } } return0; } Q18.(10分)将1-100之间奇数顺序累加存入n中,直到其和等于或大于200为止。 输出结果格式: n=225 #include usingnamespacestd; intmain() { intn=0,i=1; while(n<200) { n=n+i; i++; i++; } cout<<"n="< return0; } Q19.(10分)从键盘上输入三个整数,编写程序求出三个数中的最大值。 输入格式要求: cout<<"请输入三个整数: "; 输出格式要求: cout<<"最大值是: "< #include usingnamespacestd; intmain() { inta,b,c,t,max; cout<<"请输入三个整数: "; cin>>a>>b>>c; if(a { t=a; a=b; b=t; } if(a { t=a; a=c; c=t; } max=a; cout<<"最大值是: "< return0; } Q20.(10分)输入年份和月份,编写程序,判断这一年该月份的天数。 输入格式要求: cout<<"请输入年份和月份: "; 输出格式要求: cout< "< #include usingnamespacestd; intmain() { intyear,month,day; cout<<"请输入年份和月份: "; cin>>year>>month; switch(month) { case1: case3: case5: case7: case8: case10: case12: day=31; break; case4: case6: case9: case11: day=30; break; case2: if(year%400==0||year%4==0&&year%100! =0) day=29; else day=28; break; } cout< "< return0; } Q21.(10分) 编写程序,求解下面的分段函数: 输入格式要求: cout << "请输入x: "; 输出格式要求: cout << "y="<< y << endl; #include usingnamespacestd; intmain() { doublex,y; cout<<"请输入x: "; cin>>x; if(x>-10&&x<0)y=x-8; if(x==0) y=x; if(x>0&&x<10)y=x*x; cout<<"y="< return0; } Q22.(10分)用“辗转相除方法”计算两个数x,y的最大公约数。 输入格式要求: 无,直接输入 输出格式要求: 无,直接输出结果 #include usingnamespacestd; intmain() { intx,y,n; cin>>x>>y; n=x%y; while(n! =0) { x=y; y=n; n=x%y; } cout< return0; } Q23.(10分)利用选择法将下面10个数按降序排列。 有如下定义: intn[10]={5,6,4,2,3,7,8,5,6,7}; 输入格式要求: 无 输出格式要求: 以逗号分隔降序数列 #include usingnamespacestd; intmain() { intn[10]={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(n[k] k=j; t=n[i]; n[i]=n[k]; n[k]=t; } for(j=0;j<10;j++) cout< return0; } Q24.(10分)定义数组,输入不多于20名若干学生成绩,统计高于平均分的人数k,用-1做结束标志。 输入格式要求: 无 输出格式要求: cout<<"高于平均分的人数: "< #include usingnamespacestd; intmain() { doublecj[20],aver,sum=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 C+ 题库 答案