1、C语言编程复习【5.4】求!+2!+3!+10!的值#includeint main(void) int f,i,j,s=0; for(i=1;i=10;i+) f=1; for(j=1;j=i;j+) f*=j; s+=f; printf(1!+2!+3!+.+10!=%dn,s); return 0;【5.9】求-2/3+3/5-4/7+5/9-6/11+的前项之和#includeint main(void) int a,i; /a:分子 double s=0; for(i=1;i=20;i+) if(i%2=0) a=-i; else a=i; s+=1.0*a/(2*i-1); pri
2、ntf(=%.2lfn,s); return 0;【5.10】求数列1,2,3,5,8,13,21,34中第25项的值#includeint main(void) int a,b,i,f; a=1,b=2; for(i=3;i=25;i+) f=a+b; a=b; b=f; printf(=%dn,f); return 0;【5.13】输出20002100年之间所有的闰年。符合以下二者之一的年份是闰年:(1)能被整除,但不能被100整除,如2016(2)能被400整除,如2000要求:每行输出5项#includeint main(void) int year,n=0; for(year=200
3、0;year=2100;year+) if(year%4=0&year%100!=0|year%400=0) printf(%6d,year); n+; if(n%5=0) printf(n); return 0; 【5.14】输出所有的水仙花数。水仙花数是一个三位正整数,每位数字的三次方之和等于该数本身。例如:13+53+33=153,153是水仙花数。#includeint main(void)int x,i,j,k; for(x=100;x=999;x+) i=x/100; j=x/10%10; k=x%10; if(x=i*i*i+j*j*j+k*k*k) printf(%5d,x);
4、 printf(n); return 0; 【5.15】输入若干整数,以-1结束,去掉最大值和最小值,求平均值。#includeint main(void) int x,max,min,n=0,sum=0; printf(输入若干个数,以-1结束:n); scanf(%d,&x); max=min=x; while(x!=-1) sum+=x; n+; if(maxx) min=x; scanf(%d,&x); if(n2) printf(平均值为:%.1lfn,1.0*(sum-max-min)/(n-2); else printf(输入的分数个数小于n); return 0; 【5.16】
5、输入一行字符,统计英文字母、数字字符、空格和其他字符的个数。#includeint main(void)int n1=0,n2=0,n3=0,n4=0; char ch; printf(输入一行字符:n); while(ch=getchar()!=n) if(ch=a&ch=A&ch=0&ch=9) n2+; else if(ch= ) n3+; else n4+; printf(英文字母%d个,数字字符%d个,空格%d个,其他字符%d个。n,n1,n2,n3,n4); return 0; 【5.18】根据公式/41-1/3+1/5-1/7+求的近似值,绝对值小于10-5的项不计算。#incl
6、ude#includeint main(void) int a=1; double b=1,s=0; while(abs(a)/b=10e-5) s+=a/b; a=-a; b=b+2; printf(pi=%lfn,s*4); return 0; 【5.21】输入一个正整数n,求n是几位数includeint main(void) int n,count=0; printf(输入一个正整数:n); scanf(%d,&n); while(n) n=n/10; count+; printf(是%d位数n,count); return 0;【5.27】根据输入的行数输出图案。 例如,输入行数为7
7、,则 #include#includeint main(void) int n,i,j; printf(输入行数:); scanf(%d,&n); for(i=-n/2;i=n/2;i+) for(j=1;j=abs(i);j+) printf( ); for(j=1;j=n-2*abs(i);j+) printf(*); printf(n); return 0;【5.28】输出100以内的所有质数,每行输出5个质数#includeint main(void) int n,cou=0,i; for(n=2;n=100;n+) for(i=2;i=n-1;i+) if(n%i=0) break;
8、 if(i=n) printf(%6d,n); cou+; if(cou%5=0) printf(n); return 0;【5.29】一百个铜钱买100只鸡,其中公鸡一只5钱,母鸡一只3钱,小鸡1钱三只。问100只鸡中公鸡母鸡小鸡各多少只?#includeint main(void) int x,y,z; for(x=0;x=100;x+) for(y=0;y=100;y+) for(z=0;z=100;z+) if(x+y+z=100&15*x+9*y+z=300) printf(公鸡%d个,母鸡%d个,小鸡%d个n,x,y,z); return 0;【6.1】输入10个数到数组t中,求最
9、小值及最小值在数组t中的下标#includeint main(void) int t10,i,mini; printf(输入10个数:n); for(i=0;i10;i+) scanf(%d,&ti); mini=0; for(i=1;i10;i+) if(titmini) mini=i; printf(最小值为:%d,其下标为:%dn,tmini,mini); return 0;【6.2】输入10个数到数组t中,再输入x,如果有与x相等的数组元素,输出该元素的下标,否则输出-1#includeint main(void) int t10,x,i,flag=0; printf(输入10个数:n
10、); for(i=0;i10;i+) scanf(%d,&ti); printf(输入x:); scanf(%d,&x); for(i=0;i10;i+) if(x=ti) printf(与x相等的数组元素的下标是:%dn,i); flag=1; if(flag=0) printf(-1n); return 0;【6.3】输入10个数到数组t中,按降序排序,输出排序结果#includeint main(void) int t10,i,j,tmp; printf(输入10个数:n); for(i=0;i10;i+) scanf(%d,&ti); for(i=1;i10;i+) for(j=0;j
11、10-i;j+) if(tjtj+1) tmp=tj; tj=tj+1; tj+1=tmp; for(i=0;i10;i+) printf(%6d,ti); printf(n); return 0;【6.7】求3行5列二维数组中的最小值,及最小值在数组中的行号和列号#includeint main(void) int a35,i,j,mini,minj; printf(输入3行5列数组:n); for(i=0;i3;i+) for(j=0;j5;j+) scanf(%d,&aij); mini=minj=0; for(i=0;i3;i+) for(j=0;jaij) mini=i; minj=
12、j; printf(最小值:%d,最小值行号:%d,列号:%dn,aminiminj,mini,minj); return 0;【6.8】求3行5列二维数组中每列数组元素的最小值,输出。#includeint main(void) int a35,i,j,min; printf(输入3行5列数组:n); for(i=0;i3;i+) for(j=0;j5;j+) scanf(%d,&aij); for(i=0;i5;i+) min=a0i; for(j=1;jaji) min=aji; printf(%d列最小值为:%dn,i,min); return 0;【6.9】求3行5列二维数组主对角线
13、上元素之和#includeint main(void) int a33,i,j,sum=0; printf(输入3行3列数组:n); for(i=0;i3;i+) for(j=0;j3;j+) scanf(%d,&aij); for(i=0;i3;i+) sum+=aii; printf(主对角线上元素只和为:%dn,sum); return 0;【6.11】不调用库函数strcpy,将以下数组s1的字符串复制到数组s2中,并输出s2的字符串Char s180,s280;Gets s1;#includeint main(void) int i=0; char s180,s280; printf
14、(输入一个字符串:); gets(s1); while(s1i!=0) s2i=s1i; i+; s2i=0; printf(复制的字符串为:); puts(s2); return 0;【6.14】输出数组s中字符串的子串,子串从sbegin开始长度为lenChar s80;Int begin ,len;Gets(s);Scanf(“%d%d, &begin, &len);【6.14】#includeint main(void) int i,begin,len; char s80; printf(输入一个字符串:); gets(s); printf(输入子串的开始位置及长度:); scanf(
15、%d%d,&begin,&len); for(i=begin;ibegin+len;i+) printf(%c,si); printf(n); return 0;nf(“%d%d, &begin, &len);【7.3】编4个程序,分别用4种方法引用数组元素,输入10 个整数,按升序排序,输出排序结果#includeint main(void) int a10,*p,t,i,j; printf(输入10个整数:n); for(p=a;pa+10;p+) scanf(%d,p); for(i=0;i10;i+) p=a+i; for(j=i+1;j*(a+j) p=a+j; t=*p; *p=*
16、(a+i); *(a+i)=t; for(p=a;pa+10;p+) printf(%5d,*p); printf(n); return 0;【7.5】不调用库函数strcpy,将p指向的字符串复制到数组s中,并输出数组s中的字符串。Char s10,*p=”Chinese”;#includeint main(void) char s10,*p=Chinese; int i=0; while(*(p+i)!=0) si=*(p+i); i+; si=0; puts(s); return 0;【8.9】一只函数头为”int getgcd(int m,int n)”,函数 getgcd的功能:返回
17、形参m、n的最大公约数。编写并调用函数getgcd.#includeint getgcd(int m,int n);int main(void) int a,b,c; printf(input 2 positive integers:); scanf(%d%d,&a,&b); c=getgcd(a,b); printf(%dn,c); return 0;int getgcd(int m,int n) int gcd; if(mn) gcd=n; else gcd=m; while(m%gcd|n%gcd) gcd-; return gcd;【8.10】已知函数头为“int prime(int
18、n)”,函数prime的功能:如果n是质数,返回1;否则返回0.编写并调用函数prime输出100以内的所有质数,每行输出5个质数#include#includeint prime(int n);int main(void) int a,b,c=0; for(a=1;a=100;a+) b=prime(a); if(1=b) c+; printf(%3d,a); if(c%5=0) printf(n); return 0;int prime(int n) int i,m,flag=1; m=(int)(sqrt(n)+1); for(i=2;im;i+) if(n%i=0) flag=0; r
19、eturn flag;【8.12】已知函数头为“int avg(int n,int)”,函数avg的功能:去掉长度为n的一维数组t中的最大值和最小值,计算并返回平均值,编写并调用函数avg#includeint avg(int n,int t);int main(void) int a80,i; printf(input 10 numbersn); for(i=0;i10;i+) scanf(%d,&ai); printf(avg=%dn,avg(10,a); return 0;int avg(int n,int t) int j,sum=0,max,min; max=t0; min=max;
20、 for(j=0;jn;j+) if(maxtj) min=tj; sum+=tj; return (sum-max-min)/(n-2);【8.15】已知函数头为“int getmin(int n,inr3)”,函数getmin的功能:计算并返回行数为n列数为3的二维数组t中的最小值。编写并调用函数getmin.#includeint getmin(int n,int r3);int main(void) int a23,i,j; printf(输入两行三列个正整数n); for(i=0;i2;i+) for(j=0;j3;j+) scanf(%d,&aij); printf(min=%dn,getmin(2,a); return 0;int getmin(int n,int r3) int i,j,min; min=r00; for(i=0;in;i+) for(j=0;jrij) min=rij; return min;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1