
C语言编程题及答案.doc
27页C语言编程题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<=20;n++)ﻩ s=i/j,m=i,i=j,j=m+j,t=t+s;ﻩ printf("t=%f",t); }2.(*)从键盘输入一种字符串,再将其逆序输出如:输入abcde,输出edcba) main() {int i; char c[10]; scanf("%s",c); for(i=9;i>=0;i--) printf("%c",c[i]); }3.(*)已知abc+cba=1333,其中a、b、c均为一位数,例如: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;c<=9;c++) { x=100*a+10*b+c; y=100*c+10*b+a; if(x+y==1333) printf("x=%d,y=%d",x,y);} }4.(*)运用海伦公式求三角形面积,三边长a,b,c由键盘输入。
若输入的三边长不能构成三角形,输出相应提示信息海伦公式如下:其中s=(a+b+c)/2三角形面积= #include"math.h" main() { float a,b,c,s,area; scanf("%f,%f,%f",&a,&b,&c);ﻩ s=(a+b+c)/2;ﻩ area=sqrt(s*(s-a)*(s-b)*(s-c)); if(a+b>c&&a+c>b&&b+c>a)ﻩ 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; sum=sum+p;p=1.0;} printf("sum=%f",sum); } 程序2:float fac(n)int n;{float f;if (n<0) printf("n<0,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!=%d\n",s); }程序3: main() { int i; double p=1, sum=0; for(i=1;i<=10;i++) { p=p*i; sum=sum+p;} printf("sum=%f",sum); }ﻺ.2 .6.(*)从键盘输入两个整数,输出其和,差,积,商。
7.(**)输入若干个自然数,对奇数从大到小排序,对偶数从小到大排序,输出两种成果 maxji(int a[],int n) { int i,j,k,t; for(i=0;i 水仙花数”是指一种三位数,其各位数字的立方和确好等于该数自身,如;153=1+5+3 ,则153是一种“水仙花数”程序1: main(){int i,j,k,a;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==100*i+10*j+k)printf("%d%d%d\n",i,j,k);}ﻺ程序:main(){int m,i,j,k,a;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("%d\n",m);}ﻺ9.(*)试编程:判断输入的正整数与否既是5,又是7的整数倍数若是则输出yes;否则输出no10.(*)已有函数调用语句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;i<19;i++)for(j=1;j<95;j++)for(k=1;k<94;k++)if(5*i+j+0.5*k==100&&i+j+k==100){printf("%d,%d,%d\n",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++)程序3:main() {long int sn=0,k=a;int a,i,j; scanf("%d",&a); for(i=1;i<=5;i++) { k=10*k+a; sn=sn+k; } printf("%ld\n",sn); }{sum+=a*c;b*=10;c+=b;}printf("%ld",sum);}ﻺ 程序2:main() { long int sn=0,k=0;int a,i,j; 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("%ld\n",sn); }ﻺ13.(*)编程输出如下图形(不能仅用printf语句): ** * * * * * * * * * * * * * * * * * * * * * * *main(){int i,k,j;for(i=0;i<=4;i++) {for(j=0;j<4-i;j++) printf(" "); for(k=0;k<=2*i;k++) printf("*"); printf("\n");} }ﻺ14.(*)用近似公式求自然对数的底e的值。 e≈1+1!+ + +……#include"math.h" main() {float i,j,e,p=1.0,sum=0.0; for(i=1;i<10 ;i++) {for(j=1;j<=i;j++) p=p*j; sum=sum+1.0/p; p=1.0;} e=i+sum; printf("%f\n",e); }15.(*)请编程,用scanf()函数输入三个字符,对这三个字符各加一种整数1后,用putchar()函数输出,且每输出一种字符换一行16.(*)请编程,用scanf()函数输入三个整数,输出其中不大不小的那个数,输出宽度为五位 int findmid(int i,int j,int k){int n;.5 .if(i<j) {n=i;i=j;j=n;}if(i
