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\ }
2.(*)从键盘输入一个字符串,再将其逆序输出。(如:输入abcde,输出edcba) main() {int i;
char c[10]; scanf(\"%s\ for(i=9;i>=0;i--) printf(\"%c\
} 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\ }
4.(*)利用海伦公式求三角形面积,三边长a,b,c由键盘输入。若输入的三边长不能构成 三角形,输出相应提示信息。海伦公式如下:其中s=(a+b+c)/2
三角形面积= s*(sa)*(sb)*(sc) #include\"math.h\" main()
{ float a,b,c,s,area;
scanf(\"%f,%f,%f\ 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\
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\ }
程序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\ }
程序3: main() { int i;
double p=1, sum=0; for(i=1;i<=10;i++) { p=p*i;
sum=sum+p;}
printf(\"sum=%f\ }
.2 .
6.(*)从键盘输入两个整数,输出其和,差,积,商。
#include int a,b,s,d,c; float p; scanf(\"%d%d\ s=a+b; d=a-b; c=a*b; p=(a/b); printf(\"s=a+b=%d\\nd=a-b=%d\\nc=a*b=%d\\np=a/b=%f\\n\ } 7.(**)输入若干个自然数,对奇数从大到小排序,对偶数从小到大排序,输出两种结果。 maxji(int a[],int n) { int i,j,k,t; for(i=0;i for(j=i+1;j }} #define N 10 main() {int c[N],i,j; for(i=0;i printf(\"%5d\ printf(\"\\n\"); for(i=0;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\ } 程序: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\ } 9.(*)试编程:判断输入的正整数是否既是5,又是7的整数倍数。若是则输出yes;否 则输出no。 #include int a; scanf(\"%d\ if(a%5==0&&a%7==0) printf(\"yes\"); else printf(\"no\"); } 10.(*)已有函数调用语句c=add(a,b);请编写aad函数,计算两个实数a和b的和,并返回和值。#include int add(int a,int b) { return (a+b); } main() { int a,b,c; scanf(\"%d%d\ c=add(a,b); printf(\"%d\\n\} 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<98;k++) if(5*i+j+0.5*k==100&&i+j+k==100) {printf(\"%d,%d,%d\\n\printf(\"%d\ } 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\for(i=1;i<=n;i++) {sum+=a*c; 程序3:main() b*=10;c+=b;} {long int sn=0,k=a; printf(\"%ld\int a,i,j; } scanf(\"%d\ for(i=1;i<=5;i++) 程序2:main() { k=10*k+a; { long int sn=0,k=0; sn=sn+k; int a,i,j; } scanf(\"%d\ printf(\"%ld\\n\ 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\ } 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\ } 15.(*)请编程,用scanf()函数输入三个字符,对这三个字符各加一个整数1后,用 putchar()函数输出,且每输出一个字符换一行。 16.(*)请编程,用scanf()函数输入三个整数,输出其中不大不小的那个数,输出宽度为五位。 int findmid(int i,int j,int k) {int n; .5 . if(i main() 12!13!{int i,j,k,n; scanf(\"%d%d%d\n=findmid(i,j,k); printf(\"%d\\n\} 17.(*)编程实现输出所有1~100之间能被9整除余2的数。 18.(*)编写一程序实现如下功能:输入1、2、3、4、5、6、7(分别对应星期一至星期日)中的任何一个数,便能输出与之对应的英文名称。如输入1,则输出Monday。 main() {char day; scanf(\"%c\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\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 6:printf(\"D\\n\");break; case 5: 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 } 22.(*)输入5对整数,请输出每对数中较大者 main() {int i,j,a[5][2]; for(i=0;i<=4;i++) for(j=0;j<=1;j++) scanf(\"%d\ for(i=0;i<=4;i++) if(a[i][1]>a[i][0]) printf(\"%4d\\n\ else printf(\"%4d\\n\ } .6 . 23.(**)编程将一个3x3矩阵转置(行列互换)后输出。 main() {int i,j, a[3][3],b[3][3]; for(i=0;i<=2;i++) for(j=0;j<=2;j++) scanf(\"%d\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\printf(“\\n”);} } 24.(**)求一个一维数组的最大值,最小值和平均值(主函数调用并输出)。 程序2: 程序1: main() float max(int n,float a[]) {void make(); {int i; int a[10],i; float max; extern int max,min; max=a[0]; extern float aver; for(i=0;i make(a,10); } printf(\"max=%d,min=%d,aver=%.2f\; float min(int n,float a[]) } { int i; int max,min; float aver; float min; void make(int a[],int n) min=a[0];