编程50精题.docx
- 文档编号:4932737
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:37
- 大小:28.79KB
编程50精题.docx
《编程50精题.docx》由会员分享,可在线阅读,更多相关《编程50精题.docx(37页珍藏版)》请在冰豆网上搜索。
编程50精题
“高级语言程序设计”编程题
1.从键盘输入3个整数,求其中的最大数和最小数,并输出结果。
#include"stdio.h"
voidmain()
{
intx,y,z,max,min;
printf("Pleaseinputthreeintegernumber:
");
scanf("%d%d%d",&x,&y,&z);
max=(x>y)?
x:
y;
min=(x x: y; max=(max>z)? max: z; min=(min min: z; printf("max=%d,min=%d\n",max,min); } 2.从键盘上输入一个3*3的整数矩阵,求其各行的平均值并输出,输出时保留两位小数。 #include voidmain() { inta[3][3],b[3]={0}; inti,j; printf("Pleaseinputthedataofa[3][3]: \n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) {scanf("%d",&a[i][j]); b[i]+=a[i][j]; } printf("theaverageofrow%dis: %.2f\n",i+1,b[i]/3.0); } } 3.输出x2的值,x取值从0到10。 #include"stdio.h" voidmain() { intx; for(x=0;x<=10;x++) printf("square(%d)=%d\n",x,x*x); } 4.从键盘上输入一个3*4的整数矩阵,要求输出其最大元素的值,以及它的行号和列号。 #include"stdio.h" voidmain() { inta[3][4],max,i,j,row,colum; printf("Pleaseinputa[3][4]: \n"); for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",&a[i][j]); max=a[0][0]; row=0; colum=0; for(i=0;i<3;i++) for(j=0;j<4;j++) if(a[i][j]>max) { max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum); } 5.编写一个程序从键盘输入10个数,要求输出其中最小的。 #include main() { inta[10];/*定义数组a有10个元素,使用0~9*/ inti,min; for(i=0;i<=9;i++)/*键盘输入10个数据*/ scanf("%d",&a[i]); printf("Theoldnumbersare: \n"); for(i=0;i<=9;i++)/*屏幕输出输入的数据*/ printf("%5d",a[i]); min=a[0]; for(i=1;i<=9;i++)/*相邻元素进行比较,如果前面比后面的大则进行交换*/ if(min>a[i])min=a[i]; printf("\nTheminimumnumberis: %d\n",min);//屏幕输出最小的数据 return0; } 6.编写一个函数根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。 s=1+1\3+1\5+…+1\2n-1 #include doublef1(intn); voidmain() { intn=1; printf("Inputthevalueofn\n"); scanf("%d",&n); printf("%lf",f1(n)); } doublef1(intn) {inti; doubleterm,s=0; for(i=1;i<=n;i++) {term=1.0/(2*i-1); s+=term;} return(s); } 7.输出1000年(包括1000年)到1999年之间的所有闰年,要求每三个一行,分行输出。 #include voidmain() { inti=0; intyear,leap; for(year=1000;year<2000;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("%d\t",year); if(i%3==0)printf("\n"); } } } 8.编写程序打印所有的“水仙花数”。 “水仙花数”指一个三位数,其各位数字立方和等于该数本身,例如153是一个“水仙花数”,因为153=1×1×1+3×3×3+5×5×5。 voidmain() { inti,j,k,n; printf("resultis: "); 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"); } 9.编写一个程序,输入一个3位数的正整数,然后反向输出对应的数。 如: 123,则输出321。 参考答案: #include voidmain(){ inti,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("theinversenumberis%d",s); } else printf("inputerroe! "); } 10.从键盘输入10名学生的C语言成绩存入一维数组内,编写程序计算10名学生的最高分、平均分和及格人数。 参考答案: #include voidmain(){ inti,score[10],max,min; floatave; 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] min=score[i]; ave=ave+score[i]; } ave=ave/10.0; printf("max=%d,min=%d,ave=%f",max,min,ave); } 11.编写一个程序,判断用户输入的字符是否是数字,若是数字,则输出“anumericalcharacter”, 否则输出“othercharacter”。 参考答案: #include voidmain(){ charch; ch=getchar(); if(ch>='0'&&ch<='9') printf("anumericalcharacter"); else printf("othercharacter"); } 12.从键盘输入12个数存入二维数组a[3][4]中,编写程序求出最大元素的值及它所在的行号和列号。 参考答案: #include voidmain(){ inti,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 voidmain() { inti,j,k,n; printf("resultis: "); 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二维数组转置。 参考答案: #include"stdio.h" voidconvert(intarray[3][3]) { inti,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; } } voidmain() { inti,j; inta[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 voidmain() { floata,b,c,d,x1,x2; printf("inputa,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=%.2fx2=%.2f\n",x1,x2); } 16.从键盘上输入任意两个数和一个运算符(+、-、*、/),根据输入的运算符对两个数计算,并输出结果。 参考答案: #include voidmain() { floata,b; inttag=0; charch; floatresult; printf("inputtwonumber: "); scanf("%f%f",&a,&b); fflush(stdin); printf("inputarithmeticlable(+-*/): "); scanf("%c",&ch); switch(ch) { case'+': result=a+b;break; case'-': result=a-b;break; case'*': result=a*b;break; case'/': if(! b) { printf("divisoriszero! \n"); tag=1; } else result=a/b; break; default: printf("illegalarithmeticlable\n"); tag=1; } if(! tag) printf("%.2f%c%.2f=%.2f\n",a,ch,b,result); } 17.编写输入一个字符串,计算其中空格的个数。 #include voidmain() { chars[30]; inti,j=0; printf("请输入字符串: \n"); gets(s); for(i=0;i printf("空格数为: %d\n",j); } 18.采用二维数组输入多个学生五门课的成绩,分别求出每个学生的平均成绩和每门课的成绩。 #include voidmain() { inta[100][5],i,j,n; floatave1[100]={0}; floatave2[80]={0}; printf("请输入学生的人数: \n"); scanf("%d",&n); for(i=0;i { for(j<0;j=5;j++) {printf("\n请输入第%d位同学的第%d门成绩: "i+1,j+1); scanf("%d",&a[i][j]); ave1[i]=ave1[i]+a[i][j]; } ave1[i]=ave1[i]/5; } for(j=0;j<5;j++) { for(i=0;i ave2[j]=ave2[j]+a[i][j]; ave2[j]=ave2[j]/n; } for(i=0;i printf("第%d位同学的平均成绩为: %.2f\n",i+1,ave1[i]); for(j=0;j<5;j++) printf("第%d门课的平均成绩为: %.2f\n",j+1,ave2[i]); } 19.编写程序,逆转字符串。 #include voidmain() { inti,t; chars[100]; printf("请输入字符串: \n"); gets(s); t=strlen(s); for(i=t-1;i>=0;i--)printf("逆转后的字符串: %d",s[i]); } 20.编写程序,统计一个英语文本中的英语单词个数。 #include voidmain() { chars[100]; inti,j; printf("请输入文本: \n"); gets(s); for(i=0;i printf("单词数为%d个",j+1); } 21.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。 例如: 153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 参考答案: #include voidmain() { inti,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() { intn,t,number=20; floata=2,b=1,s=0; for(n=1;n<=number;n++) { s=s+a/b; t=a;a=a+b;b=t; } printf("sumis%9.6f\n",s); } 23.找出101~200中所有的素数。 参考答案: #include #include intisprimer(intn) { inti,m; m=(int)(sqrt(n)); for(i=2;i<=m;i++) { if(n%i==0) return0; } return1; } voidmain() { inti; for(i=101;i<=200;i++) if(isprimer(i)) printf("%d\n",i); } 24.使用循环结构编写程序,打印出如下图案 * *** ***** 参考答案: #include voidmain() { inti,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("*"); printf("\n"); } } 25.用冒泡排序法将10个整数由大到小排序。 参考答案: #include voidmain() {inta[10],i,j,t; printf("input%dnumbers: \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++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程 50 精题