C++编程题集.doc_第1页
C++编程题集.doc_第2页
C++编程题集.doc_第3页
C++编程题集.doc_第4页
C++编程题集.doc_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Q5.(10分)写一个程序根据从键盘输入的里氏强度显示地震的后果。根据里氏强度地震的后果如下:里氏强度 后果小于4很小4.0到5.0窗户晃动5.0到6.0墙倒塌;不结实的建筑物被破坏6.0到7.0烟囱倒塌;普通建筑物被破坏7.0到8.0地下管线破裂;结实的建筑物也被破坏超过8.0地面波浪状起伏;大多数建筑物损毁*输入格式要求:实数, 提示信息:cout 请输入地震的里氏强度: endl;*输出格式要求:本次地震后果:很小!本次地震后果:窗户晃动!本次地震后果:墙倒塌;不结实的建筑物被破坏!本次地震后果:烟囱倒塌;普通建筑物被破坏!本次地震后果:地下管线破裂;结实的建筑物也被破坏!本次地震后果:地面波浪状起伏;大多数建筑物损毁!#include using namespace std; int main() int i; cout请输入地震的里氏强度: i; if (i=8) cout 本次地震后果:地面波浪状起伏;大多数建筑物损毁!=7&i8) cout 本次地震后果:地下管线破裂;结实的建筑物也被破坏!=6&i7) cout 本次地震后果:烟囱倒塌;普通建筑物被破坏!=5&i6) cout 本次地震后果:墙倒塌;不结实的建筑物被破坏!=4&i5) cout本次地震后果:窗户晃动! endl; else if (i 4) cout 本次地震后果:很小! endl; Q6.(10分)写一个程序从键盘输入1到7中的某个数字,其中1代表星期天,2代表星期一,3代表星期二等。根据用户输入的数字显示相应的星期几。如果用户输入的数字超出了1到7的范围,显示输出一个错误提示信息。*输入格式要求:整数, 提示信息:cout Please input a single numeral(1-7): ;*输出格式要求:Monday (星期几的英文单词首字母大写加换行) 提示信息:Invalid - please input a single numeral(1-7).(加换行)#include using namespace std; int main() int n; cout n; if (n = 1 & n = 7) switch (n) case 1: cout Sunday endl; break; case 2: cout Monday endl; break; case 3: cout Tuesday endl; break; case 4: cout Wensday endl; break; case 5: cout Thursday endl; break; case 6: cout Friday endl; break; case 7: cout Saturday endl; break; elsecout Invalid - please input a single numeral(1-7). endl; return 0; Q7.(10分)有一天,一位百万富翁遇到一个陌生人,陌生人找他谈一个换钱的计划,陌生人对百万富翁说:“我每天给你10万元,而你第一天只需给我1分钱,第二天我仍给你10万元,你给我2分钱,第三天我仍给你10万元,你给我4分钱。你每天给我的钱是前一天的两倍,直到满一个月(30天)为止”,百万富翁很高兴,欣然接受了这个契约。请编程计算在这一个月中陌生人总计给百万富翁多少钱,百万富翁总计给陌生人多少钱。*输入提示信息和数据格式:无*输出提示信息和数据格式:cout 百万富翁给陌生人: toStranger 元 endl; cout 陌生人给百万富翁: toRichman 元 endl;#include using namespace std; int main() double toStranger =0.01,toRichman=0; for(int i=1;i=30;i+) toStranger*=2; toRichman+=100000; cout 百万富翁给陌生人: toStranger 元 endl; cout 陌生人给百万富翁: toRichman 元 endl; Q8.(10分)编程计算自然数的立方和,直到立方和大于等于1000000时为止。统计并输出实际累加的项数。要求输出结果为: sum=1071225 count =45#include using namespace std; int main() int i=1,count=0,s,sum=0; do s=i*i*i; sum+=s; count+; i+; while(sum1000000); coutsum=sumendl; coutcount =countendl; return 0; Q9.(10分)求多项式 1!+2!+3!+15!的值。输出格式要求:couts=sendl;#include using namespace std; int main() int i,sum=1; int n=15,s=0; for(i=1;i=n;i+) sum=sum*i; s+=sum; couts=sendl; return 0; Q10.(10分)求1至200之间的所有质数,将质数和存入变量 sum 中并输出。质数(素数)的说明:“质数是只能被1和其本身整除的数”。输入提示要求:无输出结果格式要求:质数之间以一个空格隔开输出所有质数后换行输出:sum=4227#include #include using namespace std; int Prime(int m) int i,k; k=(int)sqrt(m); for(i=2;i=k;i+) if(m%i=0) return 0; return 1; int main() int a; int sum=0; for(a=2;a=200;a+) if(Prime(a) sum+=a; couta ; coutendl; coutsum=sumendl; 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 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 endl;cout 最小元素: min endl;return 0;Q13.(10分)用while循环编程,求自然数1至100之间各奇数平方和sum。输出结果格式为:sum=166650#include using namespace std; int main() int i=1,sum=0; while(i=100) if(i%2!=0) sum=sum+i*i; i+; coutsum=sum; Q14.(10分)判断一个数23437是否是素数(要求程序中设置一个参数flag,flag为1代表是素数,为0代表不是)输出结果:0#include #include using namespace std; int main() int a=23437; int c,flag; double b; b=sqrt(a); for(c=2;cb) flag=1; elseflag=0; if(flag=1) coutflagendl; else if(flag=0) coutflagendl; return 0; Q15.(10分)已知一个数m(=252),用循环求各位数字之和。输出结果格式:s=9#include using namespace std; int main() int m3 = 2, 5, 2, s = 0; for (int i = 0; i = 2; i+) s += mi; couts= s endl; return 0; Q16.(10分)已知一个数m(=252),用循环求各位数字之积。输出结果格式:f=20#include #include using namespace std; int main() int m3=2,5,2,f=1; for(int i=0;i=2;i+) f*=mi; coutf=fendl; return 0; Q17.(10分)已知10个四位数输出所有对称数及个数n。例如1221,2332都是对称数。设:int m10 = 1221, 2243, 2332, 1435, 1236, 5623, 4321, 4356, 6754, 3234;输出结果:1221 2332#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+;coutn=nendl;return 0;Q18.(10分)将1-100之间奇数顺序累加存入n中,直到其和等于或大于200为止。输出结果格式:n=225#include using namespace std; int main() int n=0; for(int i=1;i=100;i+) if(i%2!=0&n=200) n+=i; coutn=n; 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 = b; b = a; a = t; if (a c) t = c; c = a; a = t; max = a; cout 最大值是: max endl; return 0; Q20.(10分)输入年份和月份,编写程序,判断这一年该月份的天数。输入格式要求: cout 请输入年份和月份:;输出格式要求:cout year 年 month 月 是 day 天。 endl;#include using namespace std; int isLeap(int year) if ( year % 400 = 0 | (year % 4 = 0 & year % 100 != 0) return 1; else return 0; int main() int year; int month; int a12 = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31; cout year month; if (isLeap(year) a1 = a1 + 1; cout year 年 month 月 是 amonth - 1 天。 endl; return 0; Q21.(10分)编写程序,求解下面的分段函数:输入格式要求:cout请输入x:;输出格式要求:couty=yendl;#includeusing namespace std;int main()double x, y;cout x;if (x -10 & x 0 & x 10) y = x * x;cout y= y endl;return 0;Q22.(10分)用“辗转相除方法”计算两个数 x,y 的最大公约数。输入格式要求:无,直接输入输出格式要求:无,直接输出结果#include using namespace std; int main() int x,y,r; cinxy; while(y!=0) r=x%y; x=y; y=r; coutxendl; return 0; Q23.(10分)利用选择法将下面10个数按降序排列。有如下定义:int n10 = 5, 6, 4, 2, 3, 7, 8, 5, 6, 7;输入格式要求:无输出格式要求:以逗号分隔降序数列#include #include using namespace std; int main() int a10=5,6,4,2,3,7,8,5,6,7,i,j,k,t; for(i=0;i=8;i+) k=i; for(j=i+1;j=9;j+) if(akaj) k=j; if(k!=i) t=ak; ak=ai; ai=t; for(i=0;i=9;i+) coutai,; coutendl; return 0; Q24.(10分)定义数组,输入不多于20名若干学生成绩,统计高于平均分的人数k,用-1做结束标志。输入格式要求:无输出格式要求:cout 高于平均分的人数: k endl;#include using namespace std;int main()float cj = 76, 89, 90, 67, 56, 45, 24, 87, 66, 56, -1, aver, sum = 0;int i,n=0,k=0;while (cjn = 0)sum += cjn;n+;aver = sum / n;for (i = 0; i aver) k+;cout 高于平均分的人数: k endl;return 0;Q25.(10分)已知三个数a,b,c,按由小到大的顺序存入a,b,c中并输出.输入格式要求:cout 输入三个整数:;输出格式要求:如果输入三个数5 6 4,则输出为: 由小到大的顺序是:4,5,6#include using namespace std; 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 , c; return 0; Q26.(10分)编程计算 sum=1!+2!+.+9!。输入格式要求: 无输出格式要求: cout sum= sum endl;#include using namespace std; int main() int i, b = 1, sum = 0; for (i = 1; i 10; i+) b = b * i; sum = sum + b; cout sum= sum endl; Q27.(10分)编写函数,删除字符串中的指定字符,函数原型为:void deletechar(char *string, char ch);设char c100 = abcdabcd aabbccdd;输出结果:bcdbcd bbccdd#include #include using namespace std;void deletechar(char *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 transform(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 学生的平均分是: aver endl;#include using namespace std; int main() int a10,i,sum=0,aver; cout 请输入学生的分数:; for(i=0;iai; sum+=ai; aver=sum/10; cout 学生的总分是: sum endl; cout 学生的平均分是: aver endl; return 0; Q30.(10分)输入10个学生的成绩,存放在一个一维数组中,找出其中的最高分和所对应的学生。输入提示信息格式要求:cout 请输入学生的分数:;输出提示信息格式要求:cout 第 n + 1 名学生的分数最高,是: max endl;#include using namespace std; int main() int a10,i,max=0,n=0; cout 请输入学生的分数:; for(i=0;iai; if(aimax) max=ai; n=i; cout 第 n + 1 名学生的分数最高,是: max endl; return 0; Q31.(10分)求一个33矩阵的对角线元素之和。输入提示信息格式要求: cout 请输入3行3列矩阵的元素: endl;输出提示信息格式要求: 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; 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;#include using namespace std; int main() double pi = 0; double n = 1; int f = 1; while (4 / n = 1e-5) pi = pi + f * 4 / n; n = n + 2; f = -f; cout pi = pi endl; return 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+)for (j = 0; j 4; j+)cout setw(5) aij;cout endl;for (i = 0; i 4; i+)for (j = 0; j 4; j+)if (i = 0 | i = 3 | j = 0 | j = 3)sum += aii;cout 四周元素之和为: sum endl;return 0;34.(10分)4个学生学习5门功课,要求输入所有学生的各门功课的成绩,并分别求出每门功课的平均成绩。输入提示信息格式要求: cout 输入第 i + 1 个学生成绩:;输出提示信息格式要求: cout 第 i + 1 个学生平均成绩: setprecision(3) sum / 5 endl; #include#includeusing namespace std;int main()double s45, sum;int i, j, n;for (i = 0; i 4; i+)cout 输入第 i + 1 个学生成绩:;for (j = 0; j sij;for (i = 0; i 4; i+)sum = 0;n = 0;for (j = 0; j 5; j+)sum += sij;cout 第 i + 1 个学生平均成绩: setprecision(3) sum / 5 endl;return 0;Q35.(10分)请输入10个整数到一个一维数组,并逆序输出。输入提示信息格式要求:无输出提示信息格式要求:cout ai ;#include using namespace std; int main() int a10,i; for (i=0; i ai; for (i= 9; i= 0; i-) cout ai ; return 0; Q36.(10分)在a数组和b数组中放入an+1和bn+1个由小到大的有序数,程序把两个数组中的数按由小到大的顺序归并在c数组中。设: int a10 = 2, 4, 5, 8, 9, 19, an = 5; int b10 = 2, 3, 4, 8, 12, 18, bn = 5;输出格式要求:输出结果用2个空格隔开 cout endl;#include using namespace std;int main()int a10 = 2, 4, 5, 8, 9, 19, an = 5;int b10 = 2, 3, 4, 8, 12, 18, bn = 5;int i, j, k, c20, max = 999;aan + 1 = bbn + 1 = max;i = j = k = 0;while (ai != max) | (bj != max)if (ai bj)ck = ai;k+;i+;elseck = bj;k+;j+;for (i = 0; i k; i+)cout ci ;cout endl;return 0;Q37.(10分)请输出如下方阵:1 2 2 2 2 2 13 1 2 2 2 1 43 3 1 2 1 4 43 3 3 1 4 4 43 3 1 5 1 4 43 1 5 5 5 1 41 5 5 5 5 5 1输出格式要求:数据之间用2个空格隔开。#include using namespace std;int main()int a77, i, j;for (i = 0; i 7; i+)for (j = 0; j 7; j+)if (i = j | i + j = 6)aij = 1;else if (i j & i + j j & i + j 6)aij = 3;else if (i 6)aij = 4;elseaij = 5;for

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论