)
(*)(*)(*c s b s a s s ---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);
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);
}
7.(**)输入若干个自然数,对奇数从大到小排序,对偶数从小到大排序,输出两种结果。 maxji(int a[],int n)
{ int i,j,k,t;
for(i=0;i {k=i; for(j=i+1;j if(a[k] if (k!=i) {t=a[k];a[k]=a[j];a[j]=t;} }} #define N 10 main() {int c[N],i,j; for(i=0;i scanf("%d",&c[i]); maxji(c,N); for(i=N-1;i>=0;i--) if(c[i]%2==0) printf("%5d",c[i]); printf("\n"); for(i=0;i if(c[i]%2!=0) printf("%5d",c[i]); } 8.(*)求出0~999之间的所有“水仙花数”并输出。“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;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; if(i*i*i+j*j*j+k*k*k==m) printf("%d\n",m); } 9.(*)试编程:判断输入的正整数是否既是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;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++) {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; 程序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); } !21! 31 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; if(i else if(j>k) 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("%d\n",n); } 17.(*)编程实现输出所有1~100之间能被9整除余2的数。 18.(*)编写一程序实现如下功能:输入1、2、3、4、5、6、7(分别对应星期一至星期日)中的任何一个数,便能输出与之对应的英文名称。如输入1,则输出Monday。 main() {char day; scanf("%c",&day); swith(day) {case '1':printf(" monday\n");break; case '2':printf("tuesday\n"); break; case '3':printf("wednsday\n"); break; case '4':printf("thursday\n"); braek; case '5':printf(" friday\n"); break; case '6':printf("saturday\n"); break; case '7':printf("sunday\n"); break; defult: printf("error\n"); 19.(*)编一程序,对于给定的一个百分制成绩,输出相应的5分制成绩。设:90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。(用switch 语句实现)。 main() {int s,score; scanf("%d",&score); s=score/10; switch(s) {case 10:printf("A\n");break; case 9:printf("A\n");break; case 8:printf("B\n");break; case 7:printf("C\n");break; case 4: case 3: case 2: case 1:printf("E\n");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,2,3 main() {int m,i,s; for(m=2;m<1000;m++) { s=0; for(i=1; i if(m%i==0) s=s+i; if (m==s) { printf("%3d its factors are ",m); for(i=1;i if(m%i==0) printf("%4d",i); printf("\n"); } } } 22.(*)输入5对整数,请输出每对数中较大者 main() {int i,j,a[5][2]; for(i=0;i<=4;i++) for(j=0;j<=1;j++) scanf("%d",&a[i][j]); for(i=0;i<=4;i++) if(a[i][1]>a[i][0]) printf("%4d\n",a[i][1]); else printf("%4d\n",a[i][0]); } main() {int i,j, a[3][3],b[3][3]; for(i=0;i<=2;i++) for(j=0;j<=2;j++) scanf("%d",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {print(“%5d”,a[i][j]); b[j][i]=a[i][j];} printf('\n');} for(j=0;j<=2;j++) {for(i=0;i<=2;i++) printf("%5d",b[i][j]); printf(“\n”);} } 24.(**)求一个一维数组的最大值,最小值和平均值(主函数调用并输出)。 程序1: float max(int n,float a[]) {int i; float max; max=a[0]; for(i=0;i if(max return(max); } float min(int n,float a[]) { int i; float min; min=a[0];