第五章(答案仅供参考),欢迎大家一起讨论,一起进步。
5.2//输出一千以内的完数(完数指除了自身以外的因子之和) #include<stdio.h> void wanshu(int i); int main() { int i; //printf("n="); //scanf("%d",&n); for(i=1;i<=1000;i++) { wanshu(i); //printf("sum=%-4d",sum); }putchar('\n'); return 0; } void wanshu(int i) { int j, sum=0; for(j=1;j<i;j++) { if(i%j==0) { sum=sum+j; } } if(sum==i) { printf("sum=%-3d",i); } }
5.3//输入两个正整数m和n,计算并输出其最大公约数 #include<stdio.h> int Max(int m,int n); int Min(int m,int n,int max); int main() { int m,n,max,min; printf("m,n==\n"); scanf("%d%d",&m,&n); max=Max(m,n); min=Min(m,n,max); printf("max=%d\nmin=%d\n",max,min); return 0; } int Max(int m,int n) { int i,temp,max=0; if(m>n) { temp=m; m=n; n=temp; } for(i=1;i<=m;i++) { if(m%i==0&&n%i==0) { max=i; } } return max; } int Min(int m,int n,int max) { int min; int i,j=0,s; i=m; //j=n; do{ s=i; i=n%i; j=s; } while(i!=0); min=m*n/j; return min; }
5.5//输入一行字符,分别统计其中英文字母,数字和其他字符的个数; #include<stdio.h> int main() { char c; int letters=0,space=0,digit=0,others=0; while((c=getchar())!='\n') { if(c>='a'&&c<='z'||c>='A'&&c<='Z') { letters++; } else if(c>='0'&&c<='9') { digit++; } else if(c=='\t'||c==' '||c=='\b') { space++; } else { others++; } } printf("letters=%-4ddigit=%-4dspace=%-4dothers=%-4d\n",letters,digit,space,others); return 0; }
5.6//从键盘输入任意个整数,以-888结束(不计入),计算并输出其中的最大数和最小数 #include<stdio.h> int main() { int i,max,min; printf("please input some numbers:"); scanf("%d",&i); if(i==-888) { printf("重新输入\n"); scanf("%d",&i); } max=i; min=i; while(i!=-888) { if(max<i) { max=i; } if(min>i) { min=i; } scanf("%d",&i); } printf("max=%-4dmin=%-4d\n",max,min); return 0; }
5.7//将100元换成1元,5元,10元零钱,每种零钱张数大于0,且为五的倍数,输出所有可能的换法; #include<stdio.h> int main() { int a,b,c; int i,j,h; a=1; b=5; c=10; for(i=1;i<100/c;i++) { for(j=1;j<100/b;j++) { for(h=1;h<100/a;h++) { if(i*c+j*b+h*a==100&&(i%5==0&&j%5==0&&h%5==0)) { printf("%3d个10元,%3d个5元,%3d个1元\n",i,j,h); } } } } return 0; }
5.8//百钱买百鸡,100钱买100只鸡,公鸡一只5钱,母鸡一只3钱,小鸡三只1钱,输出所有可能的卖法(每种鸡至少买一只) #include<stdio.h> int main() { int cock,hen,chick; for(cock=1;cock<=100/5;cock++) for(hen=1;hen<=100/3;hen++) for(chick=3;chick<=99;chick++) { if(cock+hen+chick==100) if(cock*5+hen*3+chick/3==100) if(chick%3==0) { printf("%dcock+%dhen+%dchick\n",cock,hen,chick); } } return 0; }