logo资料库

C++编程题库.doc

第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
资料共21页,剩余部分请下载后查看
“高级语言程序设计”编程题 1. 从键盘输入 3 个整数,求其中的最大数和最小数,并输出结果。 2. 从键盘上输入一个 3*3 的整数矩阵,求其各行的平均值并输出,输出时保留 两位小数。 3. 输出 x2 的值,x 取值从 0 到 10。 4. 从键盘上输入一个 3*4 的整数矩阵,要求输出其最大元素的值,以及它的行 号和列号。 5.编写一个程序从键盘输入 10 个数,要求输出其中最小的。 6.编写一个函数根据以下公式计算 s,计算结果作为函数值返回;n 通过形参传 入。 s= 7.输出 1000 年(包括 1000 年)到 1999 年之间的所有闰年,要求每三个一行, 分行输出。 8. 编写程序打印所有的“水仙花数”。“水仙花数”指一个三位数,其各位数字 立方和等于该数本身,例如 153 是一个“水仙花数”,因为 153=1×1×1+3×3 ×3+5×5×5。 9.编写一个程序,输入一个 3 位数的正整数,然后反向输出对应的数。如:123, 则输出 321。 参考答案: #include void main(){ int i,s=0,j; scanf("%d",&i); if(i>=100&&i<=999){ j=i%10; s=s+j; j=(i-j)/10%10; s=s*10+j; j=i/100; s=s*10+j; printf("the inverse number is %d",s); } 1
else printf("input erroe!"); } 10. 从键盘输入 10 名学生的 C 语言成绩存入一维数组内,编写程序计算 10 名学 生的最高分、平均分和及格人数。 参考答案: #include void main(){ int i,score[10],max,min; float ave; for(i=0;i<10;i++) scanf("%d",&score[i]); max=score[0]; min=score[0]; ave=score[0]; for(i=1;i<10;i++){ if(score[i]>max) max=score[i]; if(score[i] void main(){ char ch; ch=getchar(); if(ch>='0'&&ch<='9') printf("a numerical character"); else printf("other character"); } 2
12. 从键盘输入 12 个数存入二维数组 a[3][4]中,编写程序求出最大元素的值 及它所在的行号和列号。 参考答案: #include void main(){ int i,j,a[3][4],max,index_i,index_j; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",&a[i][j]); max=a[0][0]; index_i=0; index_j=0; for(i=0;i<3;i++) for(j=0;j<4;j++) if(a[i][j]>max){ max=a[i][j]; index_i=i; index_j=j; } printf("max=%d,index_x=%d,index_y=%d",max,index_i,index_j); } 13.打印所有的“水仙花数”,所谓“水仙花数”是指一个三位正整数,其各位 数字的立方和等于该数本身。 参考答案: #include void main() { int i, j, k, n; printf ("result is: "); for (n = 100; n < 1000; n++) { i = n / 100; j = (n - i *100) / 10; k = n % 10; if (n == i*i*i + j*j*j + k*k*k) printf ("%d ", n); } printf ("\n"); } 14.利用函数将给定的 3×3 二维数组转置。 3
参考答案: #include "stdio.h" void convert(int array[3][3]) { int i,j,k; for(i=0;i<3;i++) for(j=i+1;j<3;j++) { k=array[i][j]; array[i][j]=array[j][i]; array[j][i]=k; } } void main() { int i,j; int a[3][3]={1,2,3,4,5,6,7,8,9}; printf("转换前:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("\t%d",a[i][j]); printf("\n"); } convert(a); printf("\n 转换后:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("\t%d",a[i][j]); printf("\n"); } } 15.编程输入 a、b、c 的值后,输出一元二次方程 ax2+bx+c=0 的解。 参考答案: #include #include void main( ) { float a, b, c,d, x1, x2; printf("input a,b,c: "); 4
scanf("%f%f%f", &a, &b, &c); d = sqrt(b * b - 4 * a *c); x1 = (-b + d) / (2 * a); x2 = (-b - d) / (2 * a); printf("x1 = %.2f x2 = %.2f\n", x1, x2); } 16.从键盘上输入任意两个数和一个运算符(+、-、*、/),根据输入的运算符对 两个数计算,并输出结果。 参考答案: #include void main() { float a, b; int tag = 0; char ch; float result; printf("input two number: "); scanf("%f%f", &a, &b); fflush(stdin); printf("input arithmetic lable(+ - * /): "); scanf("%c", &ch); switch(ch) { case '+': case '-': case '*': case '/': result = a + b; result = a - b; result = a * b; if (!b) break; break; break; { printf("divisor is zero!\n"); tag = 1; } else result = a / b; break; default: printf("illegal arithmetic lable\n"); tag = 1; } if (!tag) printf("%.2f %c %.2f = %.2f\n", a, ch, b, result); } 17.编写输入一个字符串,计算其中空格的个数。 5
18. 采用二维数组输入多个学生五门课的成绩,分别求出每个学生的平均成绩和 每门课的成绩。 19.编写程序,逆转字符串。 20. 编写程序,统计一个英语文本中的英语单词个数。 21. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数 字立方和等于该数本身。例如:153 是一个“水仙花数”,因为 153=1 的三次方 +5 的三次方+3 的三次方。 参考答案: #include “stdio.h” void main() { int i,j,k,n; for(i=1;i<=9;i++) for(j=0;j<=9;j++) for(k=0;k<=9;k++) if(i*i*i+j*j*j+k*k*k==i*100+j*10+k) { n=i*100+j*10+k; printf("n=%d\n",n); } } 22.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和。 参考答案: #include "stdio.h" main() { int n,t,number=20; float a=2,b=1,s=0; for(n=1;n<=number;n++) { s=s+a/b; t=a;a=a+b;b=t; } printf("sum is %9.6f\n",s); } 6
23.找出 101~200 中所有的素数。 参考答案: #include #include int isprimer(int n) { int i,m; m=(int)(sqrt(n)); for(i=2;i<=m;i++) { if(n%i==0) return 0; } return 1; } void main() { int i; for(i=101;i<=200;i++) if(isprimer(i)) printf("%d\n",i); } 24.使用循环结构编写程序,打印出如下图案 * *** ***** 参考答案: #include “stdio.h” void main() { int i,j,k; for(i=1;i<=3;i++) { for(j=1;j<=3-i;j++) printf(" "); for(k=1;k<=2*i-1;k++) 7
printf("*"); printf("\n"); } } 25.用冒泡排序法将 10 个整数由大到小排序。 参考答案: #include void main ( ) { int a[10], i, j, t; printf ("input %d numbers: \n", 10); for (i = 0; i < 10; i++) scanf ("%d", &a[i]); for (i = 0; i < 9; i++) for (j = 0; j < 9 - i; j++) if (a[j] < a[j+1]) { t = a[j]; a[j] = a[j+1]; a[j+1] = t; } printf ("the sorted numbers:\n"); for (i = 0; i < 10; i++) printf ("%d ", a[i]); } 26.输入任意正整数,编程判断该数是否为回文数(回文数是指从左到右读与从右 到左读一样,如 12321)。 参考答案: #include void main ( ) { int n, m = 0, s, r; printf ("Input data is: "); scanf ("%d", &n); s = n; while (s != 0) { r = s % 10; m = 10 * m + r; s = s / 10; } if (m == n) 8
分享到:
收藏