第五章(答案仅供参考),欢迎大家一起讨论,一起进步。
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;
}
|