2022年C语言编程题及答案电子教案 .pdf

上传人:C****o 文档编号:32507515 上传时间:2022-08-09 格式:PDF 页数:19 大小:129.91KB
返回 下载 相关 举报
2022年C语言编程题及答案电子教案 .pdf_第1页
第1页 / 共19页
2022年C语言编程题及答案电子教案 .pdf_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《2022年C语言编程题及答案电子教案 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言编程题及答案电子教案 .pdf(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、C 语 言 编 程 题 及 答 案名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 19 页 - - - - - - - - - )(*)(*)(*csbsassC语言编程题1(*)求分数序列: 1/2,2/3,3/5,5/8,8/13,13/21. 前 20 项的和。main() float i=1,j=2,t=0,s,n,m; for(n=1;n=0;i-) printf(%c,ci); 3 ( * ) 已 知 abc+cba=1333, 其 中a、 b、 c 均 为

2、一 位 数 , 例 如 : 617+716=1333, 518+815=1333, 试编程求出符合这一规律的a、b、c,并输出结果。 main() int a,b,c,x,y; for(a=1;a=9;a+) for(b=0;b=9;b+) for(c=1;cc&a+cb&b+ca) printf(area=%f,area); else 1 printf(no); 5( *)编程求出1!+2!+3!+ +8!+9!+10!的值并输出。程序 1: main() int i,j; double p=1, sum=0; for(i=1;i=10;i+) for(j=1;j=i;j+) p=p*i;

3、sum=sum+p;p=1.0; printf(sum=%f,sum); 程序 2: float fac(n) int n; float f; if (n0) printf(n0,error!); else if(n=0|n=1) f=1; else f=fac(n-1)*n; return(f); main() int h,s=0,n; for(n=1;n=4;n+) h=fac(n); s=s+h; printf(s=1!+2!+.+10!=%dn,s); 程序 3: main() int i; double p=1, sum=0; for(i=1;i=10;i+) p=p*i; sum=

4、sum+p; printf(sum=%f,sum); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 19 页 - - - - - - - - - 2 6( *)从键盘输入两个整数,输出其和,差,积,商。7( * )输入若干个自然数,对奇数从大到小排序,对偶数从小到大排序,输出两种结果。 maxji(int a,int n) int i,j,k,t; for(i=0;in-1;i+) k=i; for(j=i+1;jn;j+) if(akaj) k=j; if (k!=i

5、) t=ak;ak=aj;aj=t; #define N 10 main() int cN,i,j; for(i=0;i=0;i-) if(ci%2=0) printf(%5d,ci); printf(n); for(i=0;iN;i+) if(ci%2!=0) printf(%5d,ci); 8( *)求出0999 之间的所有“水仙花数”并输出。“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;15315 3 ,则 153 是一个“水仙花数”。程序 1: main() int i,j,k,a; for(i=1;i=9;i+) for(j=0;j=9;j+) for(k=0;

6、k=9;k+) if(i*i*i+j*j*j+k*k*k=100*i+10*j+k) printf(%d%d%dn,i,j,k); 程序: main() int m,i,j,k,a; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 19 页 - - - - - - - - - for(m=101;i=999;m+) i=m/100; j=(m-m*100)/10; 3 k=m%10; if(i*i*i+j*j*j+k*k*k=m) printf(%dn,m); 9( *)

7、试编程:判断输入的正整数是否既是5,又是7 的整数倍数。若是则输出yes;否则输出 no。10(*) 已有函数调用语句c=add(a,b);请编写aad 函数,计算两个实数a 和 b 的和,并返回和值。11( * )有人想将手中一张面值100 元的人民币换成5 元、 1 元、 0.5 元面值的零钱100张,以上三种面值的零钱至少有一张,问共有几种换法。请编程实现。程序 1: main() int i,j,k,n=0; for(i=1;i19;i+) for(j=1;j95;j+) for(k=1;k94;k+) if(5*i+j+0.5*k=100&i+j+k=100) printf(%d,%

8、d,%dn,i,j,k);n+; printf(%d,n); 12(*) 求 Sn=a+aa+aaa+aaaa+aaaaa 的前 5 项之和,其中a 是一个数字,例如:2+22+222+2222+22222 程序 1: main() int i, a,n; long sum=0, b=1,c=1; scanf(%d,%d,&a,&n); for(i=1;i=n;i+) sum+=a*c; b*=10;c+=b; printf(%ld,sum); 程序 2:main() long int sn=0,k=0; int a,i,j; 程序 3:main() long int sn=0,k=a; in

9、t a,i,j; scanf(%d,&a); for(i=1;i=5;i+) k=10*k+a; sn=sn+k; printf(%ldn,sn); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 19 页 - - - - - - - - - !21!31 scanf(%d,&a); for(i=1;i=5;i+) for(j=1;j=i;j+) k=10*k+a; 4 sn=sn+k; k=0; printf(%ldn,sn); 13( * )编程输出如下图形(不能仅用

10、printf语句): * * * * * * * * * * * * * * * * * * * * * * * * * main() int i,k,j; for(i=0;i=4;i+) for(j=0;j4-i;j+) printf( ); for(k=0;k=2*i;k+) printf(*); printf(n); 14( * )用近似公式求自然对数的底e 的值。e1+1!+ + +#includemath.h main() float i,j,e,p=1.0,sum=0.0; for(i=1;i10 ;i+) for(j=1;j=i;j+) p=p*j; sum=sum+1.0/p;

11、 p=1.0; e=i+sum; printf(%fn,e); 15( * )请编程,用scanf()函数输入三个字符,对这三个字符各加一个整数1 后,用putchar()函数输出,且每输出一个字符换一行。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 19 页 - - - - - - - - - 16( * )请编程,用scanf()函数输入三个整数,输出其中不大不小的那个数,输出宽度为五位。 int findmid(int i,int j,int k) int n;

12、5 if(ij) n=i;i=j;j=n; if(ik) n=j; else n=k; return(n);main() int i,j,k,n; scanf(%d%d%d,&i,&j,&k); n=findmid(i,j,k); printf(%dn,n); 17(*)编程实现输出所有1100之间能被 9 整除余 2 的数。18( * )编写一程序实现如下功能:输入1、2、3、4、5、 6、7(分别对应星期一至星期日)中的任何一个数,便能输出与之对应的英文名称。如输入1,则输出 Monday。 main() char day; scanf(%c,&day); swith(day) case

13、1:printf( mondayn);break; case 2:printf(tuesdayn); break; case 3:printf(wednsdayn); break; case 4:printf(thursdayn); braek; case 5:printf( fridayn); break; case 6:printf(saturdayn); break; case 7:printf(sundayn); break; defult: printf(errorn); 19(*) 编一程序,对于给定的一个百分制成绩,输出相应的5 分制成绩。设:90 分以上为 A , 8089 分

14、为 B, 7079 分为 C, 6069 分为 D, 60 分以下为 E。(用switch语句实现)。 main() int s,score; scanf(%d,&score); s=score/10; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 19 页 - - - - - - - - - switch(s) case 10:printf(An);break; case 9:printf(An);break; case 8:printf(Bn);break; cas

15、e 7:printf(Cn);break; case 6:printf(Dn);break; case 5: case 4: case 3: case 2: case 1:printf(En);break; default:printf(error); 20( * )试编程:判断输入的正整数是否既是5,又是7 的整数倍数。若是则输出yes;否则输出no。21(* )一个数如果却好等于它的因子之和,这个数就称为“完数”。例如,6 的因子为 1、2、3,而 6=1+2+3 ,因此 6 是“完数”。编程序找出 100 之内的所有完数,并按下列格式输出其因子: 6 its factors are 1,

16、2,3 main() int m,i,s; for(m=2;m1000;m+) s=0; for(i=1; im ;i+) if(m%i=0) s=s+i; if (m=s) printf(%3d its factors are ,m); for(i=1;im;i+) if(m%i=0) printf(%4d,i); printf(n); 22(*)输入 5 对整数,请输出每对数中较大者 main() int i,j,a52; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,

17、共 19 页 - - - - - - - - - for(i=0;i=4;i+) for(j=0;j=1;j+) scanf(%d,&aij); for(i=0;iai0) printf(%4dn,ai1); else printf(%4dn,ai0); 6 23(* )编程将一个 3x3 矩阵转置 ( 行列互换 ) 后输出。 main() int i,j, a33,b33; for(i=0;i=2;i+) for(j=0;j=2;j+) scanf(%d,&aij); for(i=0;i=2;i+) for(j=0;j=2;j+) print(“ %5d ” ,aij); bji=aij;

18、printf(n); for(j=0;j=2;j+) for(i=0;i=2;i+) printf(%5d,bij); printf(“ n ” ); 24(*)求一个一维数组的最大值,最小值和平均值(主函数调用并输出)。程序 1:float max(int n,float a) int i; float max; max=a0; for(i=0;in;i+) if(maxai) max=ai; return(max); float min(int n,float a) 程序 2:main() void make(); int a10,i; extern int max,min; extern

19、 float aver; for(i=0;i10;i+) scanf(%d,&ai); make(a,10); printf(max=%d,min=%d,aver=%.2f,max,min,aver); int max,min; float aver; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 19 页 - - - - - - - - - int i; float min; min=a0; for(i=0;iai) min=ai; return(min); floa

20、t aver(int n,float a) int i; float sum=0,aver; 7 for(i=0;in;i+) sum=sum+ai; aver=sum/n; return(aver); #includemath.h main() int i; float m,n,a5,c; for(i=0;i5;i+) scanf(%f,&ai); m=max(5,a); n=min(5,a); c=aver(5,a); printf(%5f%5f%5fn,m,n,c); 25(* )编写函数,求一个不超过五位的十进制整数各位数值的和。(如:输入 2634,输出 15) #includema

21、th.h main() int i,a5,m,n=0; scanf(%d,&m); for(i=0;i=4;i+) ai=m%10; n=n+ai; m=m-ai*10; printf(%5d,ai); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 19 页 - - - - - - - - - printf(n); printf(%d,n); 26( * )编程求出一个3x3 矩阵的最大和最小元素及其下标。 main() int i,j,max,min,a33,m1,

22、n1,m2,n2; for(i=0;i=2;i+) for(j=0;j=2;j+) scanf(%d,&aij); min=max=a00; 8 for(i=0;i=2;i+) for(j=0;jmax) max=aij;m1=I;n1=j; else if(aijmin) min=aij;m2=i;n2=j; printf(max=%d,%3d,%3d,min=%d,%3d,%3d,max,m1,n1,min,m2,n2); 27( * )有一个字符串,包含n 个字符,编写一个函数,将此字符串中从第m 个字符开始的全部字符复制成另一个字符串。 main() char chs230=0,chs

23、130=this is my first C program; int i,j,m; scanf(%d,&m); for(i=m,j=0;i30;i+,j+) chs2j=chs1i; chs229=0; printf(%s,chs2); 28( * )求一个3x3 矩阵的对角线元素之和。 main() int i,j,sum1=0,sum2=0,a33; for(i=0;i=2;i+) for(j=0;j=2;j+) scanf(%d,&aij); for(i=0;i=2;i+) for(j=0;j=2;j+) if(i=j) sum1+=aij; 名师资料总结 - - -精品资料欢迎下载

24、- - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 19 页 - - - - - - - - - if(i+j)=2) sum2+=aij; printf(%5d%5d,sum1,sum2); 29( * )从键盘输入两个整数,输出其最大公约数和最小公倍数。程序 1: main() int a,b,t,p,r; scanf(%d,%d,&a,&b); if(ab) t=a;a=b;b=t; p=a*b; while(b!=0) r=a%b;a=b;b=r; printf(“ %5d%5d ” ,a,p/a); 9

25、main() int a,b,m,n,i,t; scanf(“ %d%d ” ,&a,&b); if(ab)t=a;a=b;b=t; m=a;n=b; for(i=1;i=n;i+) if(m%i=0)&(n%i=0) printf(%5dn,i);break; printf(%5d,a*b/i); 30( * )一个已按从小到大的顺序排序的数组,有9 个元素 , 从终端输入第10 个数 , 要求按原来排序的规律将它插入数组中。(该数比第一个数大,比第九个数小) #define N 10 main() int b,i,n,aN=1,5,7,11,15,19,23,28,31; scanf(%d

26、,&b); for(i=0;ib) n=i;break; for(i=(N-2);i=n;i-) ai+1=ai; an=b; for(i=0;iN;i+) printf(%5d,ai); 31( * )请编写程序,输出以下扬辉三角形( 要求输出 10 行) 。 1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 19 页 - - - - - - - - - 1 1 1 2 1 1 3 3 1 1 4 6 4 1 : # define M 10 # define N 1

27、0 main() int aMN,i,j; for(i=0;iM;i+) for(j=0;j=i;j+) if(j=0|j=i) aij=1; else aij=ai-1j-1+ai-1j; for(i=0;iM;i+) for(j=0;j=i;j+) printf(%4d,aij); printf(n); 32( * )从键盘输入少于50 个的整数,其值在0 和 4 之间(包括0 和 4),用 -1 作为输入结束标志,统计每个整数的个数。请编程实现。33(*)从键盘输入两个字符串a 和 b,要求不用库函数strcat把串 b 的前五个字符连接到串 a 中;如果b 的长度小于5,则把 b 的所

28、有元素都连接到a 中,请编程实现。 main() char a50,b10,*p1,*p2; int i,j; scanf( “%s%s ”,a,b); n=strlen(a); for(p1=a+n,p2=b;p1=a+(n+4);p1+,p2+) *p1 =*p2; if(*p2= =0) break;*p1=0;printf(“%s ”,a);34( * )编写函数,在一个一维数组中查找指定值,若找到则返回该数值的下标,否则返回-1 。要求用指针变量传递数组首地址。 main() float a10=1,2,3,4,5,6,7,8,9,10; 名师资料总结 - - -精品资料欢迎下载 -

29、 - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 19 页 - - - - - - - - - float b; int i; scanf(%f,&b); for(i=0;i=10) printf(-1); printf(n); 35( * )写一程序,要求用户在键盘上输入一个整数,并把每位数字转换为英文。例如:输入 1024 时,输出 One Zero Two Four main() long int n; int m,i=0,c10; scanf(%ld,&n); do m=n%10; i+; ci=m; pr

30、intf(%5d%5d%5dn,i,m,ci); while (n/=10)0); while(i=1) i-; switch(ci+1) case 0: printf(zero);printf( );break; case 1: printf(one);printf( ); break; case 2: printf(two);printf( ); break; case 3: printf(three);printf( );break; case 4: printf(four);printf( );break; case 5: printf(five);printf( );break; c

31、ase 6: printf(six);printf( ); break; case 7: printf(seven);printf( ); break; case 8: printf(eight);printf( ); break; case 9: printf(nine);printf( ); break; default:printf(no); 36( * )A 数组中有8 个元素,从第6 个元素开始将数组后三个元素移到数组开头。例如:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -

32、第 14 页,共 19 页 - - - - - - - - - A数组元素为: 2 6 9 8 5 3 7 4 移动后数组变为:3 7 4 2 6 9 8 5 #define N 8 main() int a8=2,6,9,8,5,3,7,4; int i, j,t; for(i=0;i8;i+) printf(%5d,ai); printf(n); for(j=0;j=0;i-) ai+1=ai; a0=t; for(i=0;i8;i+) printf(%5d,ai); 37( * )按如下格式打印输出乘法口诀表: 11=1 12=2 2 2=4 19=9 2 9=18 3 9=27 9 9

33、=81 38( * )请将 n 个整数按升序重新放在原数组中,操作时不得另开辟数组。39( * )输入若干学生一门功课的成绩,统计各分数段的人数。凡不及格(60 分以下)都由一个计数器来统计,其它以10 分作为一个数段,100 分作为一个分数段。 main() int a10; int i,j,t,p; for(i=0;i10;i+) scanf(%d,&ai); for(i=0;i9;i+) p=i; for(j=i+1;jaj)p=j; if(p!=j) t=ai;ai=ap;ap=t; for(i=0;i10;i+) printf(%5d,ai); 名师资料总结 - - -精品资料欢迎下

34、载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 19 页 - - - - - - - - - 40(* ) 编写函数,给定一个数,删除数组中与之相等的元素,返回值为删除后数组中的元素个数。 main() float a10,t; int s,b6=0,i; for(i=0;i10;i+) scanf(%f,&ai); i=0; while(i10) s=(int)ai/10; i+; switch(s) case 10:b0+; break; case 9:b1+; break; case 8:b2+; b

35、reak; case 7:b3+; break; case 6:b4+;break; case 5: case 4: case 3: case 2: case 1: case 0: b5+; break; for(i=0;i=5;i+) printf(%2d,bi); 41. ( * )输入一个整数,判断它能否被3、5、7 整除,并输出以下信息之一:能同时被3、5、7 整除;能被其中两个数(说明哪两个数)整除;只能被其中一个整除(说明哪个数);不能被3、 5、7 任何一个整除。42( * )有10 个数已按由小到大的顺序存放在一个整型数组中,从键盘输入一个数,找出该数是数组中的第几个元数,如果

36、该数不在数组中,则打印出“无此数”。 main() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 19 页 - - - - - - - - - int a10= 2,4,6,8,10,12,14,16,18,20; int i,t,j,m; for(i=0;i10;i+) printf(“%5d ”,ai);printf(“ n”);scanf( “%d ”,&m); for(i=0;i=10) printf(“no”); 43( * )给出年、月、日,计算出该日是该

37、年的第几天。44(* )求 3 至 50之间所有素数之和,用子函数判断是否为素数。 #include main() int m,k,i,s=0; for (m=3;m50;m+) k=sqrt(m); for(i=2;i=k+1) s=s+m ; printf(%5dn,s); 45(* )不用 strcpy 函数,实现两个字符串的复制( 形参用指针变量 ) 。46( * )从键盘输入10 个数,将其中最小的数与第一个数对换,最大的数与最后一个数对换,实现从小到大的排序。(用指针实现)47( * )编制程序。在主函数中输入a、b、 c 三个数,在子函数中用指针法将a、 b、c 排序(最大数放在

38、a 变量中,最小数放在c 变量着),在主函数中输出。48(* ) 输入三个字符串,按由小到大的顺序输出。(用字符指针实现)。49( * )请编程,从键盘输入6 名学生的5 门成绩,分别统计每个学生的平均成绩。(在主函数中输入输出,子函数求平均成绩)50( * )编写函数将一个字符串中每一个单词的第一个字母转换为大写。 main() char ch50=he is my friend; int i,word=0; for(i=0;chi!=0;i+) if(chi= ) word=0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -

39、- 名师精心整理 - - - - - - - 第 17 页,共 19 页 - - - - - - - - - else if (word=0) chi=capslock(chi); word=1; printf(%s,ch); capslock(char a) a=a-32; return(a); 51( * )一个班有10 名学生,每位学生有四门功课。请编程输出平均成绩、总分最高和最低的俩位学生所有课程的成绩。52( * )输入任意5 个数放在数组中,假如5 个数为 1、2、8、2、10,请打印出以下方阵:1 2 8 2 10 2 8 2 10 1 8 2 10 1 2 2 10 1 2 8

40、 10 1 2 8 2 main() int a5,i,j,t; for(i=0;i5;i+) scanf(%d,&ai); for(i=0;i5;i+) printf(%5d,ai); printf(n); for(j=1;j5;j+) t=a0; for(i=1;i=5;i+) ai-1=ai; ai=t; for(i=0;i5;i+) printf(%5d,ai); printf(n); 53(* )设有一数列,包含10 个数,已按升序排好。编写程序,能够把从指定位置开始的n 个数按逆序重新排列并输出新的完整序列。要求使用指针处名师资料总结 - - -精品资料欢迎下载 - - - - -

41、 - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 19 页 - - - - - - - - - 理逆序部分。(例如:原数列为2,4,6,8,10,12,14,16,18,20,从第 4个数开始的 5 个数按逆序重新排列,则得2,4,6,16,14,12,10,8,18,20) main() int a10= 2,4,6,8,10,12,14,16,18,20; int i,t,j; for(i=0;i3;i-,j+) t=aj;aj=ai;ai=t; for(i=0;i10;i+) printf(“%5d ”,ai); printf(“ n”); 54( * )试编程序,找出1 至 99 之间的全部同构数。同构数是这样的一组数:它出现在平方数的右边。如5 是 25 右边的数, 25 是 625 右边的数, 5 和 25 均是同构数。 #include main() int i; for(i=1;i100;i+) if(i*i%10=i|i*i%100=i) printf(“%5d ”,i);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 19 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com