1.
输入两个正整数m和n,求其最大公约数和最小公倍数。
#include<stdio.h>
int main()
{
int m,n,x,y,t;
printf("请输入两个正整数:");
scanf("%d,%d",&m,&n);
if(n<m)
{
t=n;
n=m;
m=t;
}
x=m*n;
while(m!=0)
{
y=n%m;
n=m;
m=y;
}
printf("它们最大的公约数为:%d\n",n);
printf("它们最小的公约数为:%d\n",x/n);
return 0;
}
运行结果:
2.
输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
#include<stdio.h>
int main()
{
char c;
int letters=0,space=0,number=0,other=0;
printf("请输入一行字符:\n");
while((c=getchar())!='\n')
{
if(c>'a'&&c<'z'||c>='a'&&c<='Z')
letters++;
else if(c==' ')
space++;
else if(c>='0'&&c<='9')
number++;
else
other++;
}
printf("字母数:%d\n空格数:%d\n数字数:%d\n其他字符数:%d\n",letters,space,number,other);
return 0;
}
运行结果:
3.
求Sn=a+aa+aaa+a…aa…a之值,其中a是一个数字,n表示a的位数,n由键盘输入。例如:2+22+222+2222+22222(此时n=5)
#include<stdio.h>
int main()
{
int n,a,i=1,s=0,t=0;
printf("a,n=");
scanf("%d,%d",&a,&n);
while(i<=n)
{
t=t+a;
s=s+t;
a=a*10;
++i;
}
printf("a+aa+aaa+...=%d\n",s);
return 0;
}
运行结果:
4.
求1!到20!的和。
#include<stdio.h>
int main()
{
double s=0,t=1;
int n;
for(n=1;n<=20;n++)
{
t=t*n;
s=s+t;
}
printf("1!+2!+...+20!=%f\n",s);
return 0;
}
运行结果:
5.
#include<stdio.h>
int main()
{
int n1=100,n2=50,n3=10;
double k,s1=0,s2=0,s3=0;
for(k=1;k<=n1;k++)
{
s1=s1+k;
}
for(k=1;k<=n2;k++)
{
s2=s2+k*k;
}
for(k=1;k<=n3;k++)
{
s3=s3+1/k;
}
printf("sum=%f\n",s1+s2+s3);
return 0;
}
运行结果:
6.
输出所有水仙花数,所谓水仙花数是指一个3位数,其各位数字立方和等于该数本身。例如,153是水仙花数,因为153=1³+5³+3³。
#include<stdio.h>
int main()
{
int a,b,c,n;
printf("所有水仙花数是:");
for(n=100;n<1000;n++)
{
a=n%10;
b=(n%100-a)/10;
c=(n-10*b-a)/100;
if(n==a*a*a+b*b*b+c*c*c)
printf("%4d",n);
}
printf("\n");
return 0;
}
运行结果:
7.
一个数如果恰好等于它的因子之和,这个数就被称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子:6 its factors are 1,2,3
#include<stdio.h>
int main()
{
int m,s,i;
for(m=2;m<1000;m++)
{
s=0;
for(i=1;i<m;i++)
if((m%i)==0)
s=s+i;
if(s==m)
{
printf("%d it's factors are",m);
for(i=1;i<m;i++)
if(m%i==0)
printf("%4d",i);
printf("\n");
}
}
return 0;
}
运行结果: