1、编程50精题“高级语言程序设计”编程题1. 从键盘输入3个整数,求其中的最大数和最小数,并输出结果。# include stdio.hvoid main() int x, y, z, max, min; printf(Please input three integer number:); scanf(%d %d %d, &x, &y, &z); max =(xy) ?x : y ; min=(xz) ?max :z ;min= (minz) ?min :z ; printf(max=%d, min=%dn, max, min); 2. 从键盘上输入一个3*3的整数矩阵,求其各行的平均值并输出
2、,输出时保留两位小数。#include void main() int a33,b3=0; int i, j; printf(Please input the data of a33:n); for(i=0; i3; i+) for(j=0; j3; j+) scanf(%d,&aij); bi+=aij; printf(the average of row %d is:%.2fn, i+1, bi/3.0); 3. 输出x2的值,x取值从0到10。#include stdio.hvoid main() int x; for(x=0; x=10; x+) printf(square(%d)=%
3、dn, x, x*x);4. 从键盘上输入一个3*4的整数矩阵,要求输出其最大元素的值,以及它的行号和列号。#include stdio.hvoid main() int a34, max, i, j, row, colum; printf(Please input a34:n); for(i=0;i3;i+) for(j=0;j4;j+) scanf(%d,&aij); max=a00;row=0;colum=0; for(i=0;i3;i+) for(j=0;jmax) max=aij; row=i; colum=j; printf(max=%d, row=%d, colum=%d n,m
4、ax, row, colum);5.编写一个程序从键盘输入10个数,要求输出其中最小的。#include main() int a10; /*定义数组a有10个元素,使用09*/ int i,min; for(i=0;i=9;i+) /*键盘输入10个数据*/ scanf(%d,&ai); printf(The old numbers are:n); for(i=0;i=9;i+) /*屏幕输出输入的数据*/ printf(%5d,ai); min=a0; for(i=1;iai) min=ai; printf(nThe minimum number is:%dn,min);/屏幕输出最小的数
5、据 return 0;6.编写一个函数根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。 s= 1+13+15+12n-1#include double f1(int n);void main() int n=1; printf(Input the value of nn); scanf(%d,&n); printf(%lf,f1(n);double f1(int n)int i; double term,s=0; for(i=1;i=n;i+) term=1.0/(2*i-1); s+=term; return(s);7.输出1000年(包括1000年)到1999年之间的所有闰年,
6、要求每三个一行,分行输出。#include void main() int i=0; int year,leap; for(year=1000;year2000;year+) if (year%4=0) if(year%100=0) if(year%400=0) leap=1; else leap=0; else leap=1; else leap=0; if(leap) i+; printf(%dt,year); if (i%3=0) printf(n); 8. 编写程序打印所有的“水仙花数”。“水仙花数”指一个三位数,其各位数字立方和等于该数本身,例如153是一个“水仙花数”,因为 153
7、111333555。void main() int i,j,k,n; printf(result is:); for(n=100;n1000;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);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;
8、 s=s*10+j; j=i/100; s=s*10+j; printf(the inverse number is %d,s); else printf(input erroe!);10. 从键盘输入10名学生的C语言成绩存入一维数组内,编写程序计算10名学生的最高分、平均分和及格人数。参考答案:#include void main() int i,score10,max,min; float ave; for(i=0;i10;i+) scanf(%d,&scorei); max=score0; min=score0; ave=score0; for(i=1;imax) max=scorei
9、; if(scoreimin) min=scorei; ave=ave+scorei; ave=ave/10.0; printf(max=%d,min=%d,ave=%f,max,min,ave);11. 编写一个程序,判断用户输入的字符是否是数字,若是数字,则输出“a numerical character”,否则输出“other character”。参考答案:#include void main() char ch; ch=getchar(); if(ch=0&ch=9) printf(a numerical character); else printf(other character
10、);12. 从键盘输入12个数存入二维数组a34中,编写程序求出最大元素的值及它所在的行号和列号。参考答案:#include void main() int i,j,a34,max,index_i,index_j; for(i=0;i3;i+) for(j=0;j4;j+) scanf(%d,&aij); max=a00; index_i=0; index_j=0; for(i=0;i3;i+) for(j=0;jmax) max=aij; index_i=i; index_j=j; printf(max=%d,index_x=%d,index_y=%d,max,index_i,index_j
11、);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. 利用函数将给定的33二维数组转置。参考答案:#include stdio.h void conve
12、rt(int array33) int i,j,k; for(i=0;i3;i+) for(j=i+1;j3;j+) k=arrayij; arrayij=arrayji; arrayji=k; void main() int i,j; int a33=1,2,3,4,5,6,7,8,9; printf(转换前:n); for(i=0;i3;i+) for(j=0;j3;j+) printf(t%d,aij); printf(n); convert(a); printf(n转换后:n); for(i=0;i3;i+) for(j=0;j3;j+) printf(t%d,aij); printf
13、(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: ); 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 = %.2fn, x1, x2);16. 从键盘上输入任意两个数和一个运算符(+、-、*、/),
14、根据输入的运算符对两个数计算,并输出结果。参考答案:#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 +: result = a + b; break; case -: result = a - b; break; case *: r
15、esult = a * b; break; case /: if (!b) printf(divisor is zero!n); tag = 1; else result = a / b; break; default: printf(illegal arithmetic lablen); tag = 1; if (!tag) printf(%.2f %c %.2f = %.2fn, a, ch, b, result); 17.编写输入一个字符串,计算其中空格的个数。#include void main()char s30;int i,j=0;printf(请输入字符串:n);gets(s);
16、for(i=0;istrlen(s);i+)if(si= )j+;printf(空格数为:%dn,j);18.采用二维数组输入多个学生五门课的成绩,分别求出每个学生的平均成绩和每门课的成绩。#include void main()int a1005,i,j,n;float ave1100=0;float ave280=0;printf(请输入学生的人数:n);scanf(%d,&n);for(i=0;in;i+) for(j0;j=5;j+) printf(n请输入第%d位同学的第%d门成绩:i+1,j+1); scanf(%d,&aij); ave1i= ave1i+ aij; ave1i=
17、 ave1i/5;for(j=0;j5;j+)for(i=0;in;i+)ave2j= ave2j+ aij; ave2j= ave2j/n;for(i=0;in;i+)printf(第%d位同学的平均成绩为:%.2fn,i+1,ave1i);for(j=0;j5;j+)printf(第%d门课的平均成绩为:%.2fn,j+1,ave2i);19.编写程序,逆转字符串。#include void main()int i,t;char s100;printf(请输入字符串:n);gets(s);t=strlen(s);for(i=t-1;i=0;i-)printf(逆转后的字符串:%d,si);
18、20.编写程序,统计一个英语文本中的英语单词个数。#include void main()char s100;int i,j;printf(请输入文本:n);gets(s);for(i=0;istrlen(s);i+)if(si= )j+;printf(单词数为%d个,j+1);21. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方5的三次方3的三次方。参考答案:#include void main() int i,j,k,n; for(i=1;i=9;i+) for(j=0;j=9;j+) for
19、(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=%dn,n); 22有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。参考答案:#include stdio.hmain() 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.6fn,s);23找出101200中所有的素数。参考答案:#include #in
20、clude 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(%dn,i);24使用循环结构编写程序,打印出如下图案*参考答案:#include 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+) printf(*); p
21、rintf(n); 25.用冒泡排序法将10个整数由大到小排序。参考答案:#include void main ( ) int a10, i, j, t; printf (input %d numbers: n, 10); for (i = 0; i 10; i+) scanf (%d, &ai); for (i = 0; i 9; i+) for (j = 0; j 9 - i; j+) if (aj aj+1) t = aj; aj = aj+1; aj+1 = t; printf (the sorted numbers:n); for (i = 0; i 10; i+) printf (
22、%d , ai);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) printf (yesn); else printf (non);27. 求出10至1000之内能同时被2、3、7整除的数,并输出。#include ma
23、in() int i; for(i=10;i1000;i+) if (i%2=0&i%3=0&i%7=0) printf(%d, i);28. 输入一字符串,检查是否回文 (回文是指正反序相同,如,LeveL),若是则输出“Yes”,否则输出“No”。#include #includemain() int i,j,tag=1; char ch50; printf(Please input a string:); scanf(%s,ch); j=strlen(ch); for (i=0;ij/2;i+) if(chi!=chj-i-1) tag=0; break; if (tag) printf
24、(Yes.n); else printf(No. n);29. 设计一个函数,用来判断一个整数是否为素数。参考答案:#include #includeint IsPrimer(int n) int i; if(n=1) return 0; for(i=2;i=(int)sqrt(n);i+) if(n%i=0) return 0; return 1; void main() int i; scanf(%d,&i); if(IsPrimer(i) printf(这是素数n); else printf(这不是素数n); printf (the sorted numbers:n); for (i = 0; i 10; i+) printf (%d , ai);30. 从键盘上输入若干学生成绩(成绩在0100之间),计算平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。参考答案:#include void main() float x1000,sum=0,ave, a; int n=0, i; printf(Enter mark:n); scanf(%f,&a); while(a=0 & a=100 & n1000) sum+=a; xn=a; n+; scanf(%f,&a); ave= sum/n;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1