- 2022年的一个求近似π的类似考题。
int main()
{
float s=0,i,m=1;
int sign=-1,k=0;
printf("求π的近似值:");
for (i=1;;i+=2,k++)
{
m=1/i;
sign=-sign;
s=s+sign*m;
if (fabs(m)<(1e-6)) break;
}
printf("\n%10.8f",s*4);
return 0;
}
2. 输入两个正整数m和n,求其最大公约数和最小公倍数。
int main()
{
int m,n,temp,p,r;
printf("请输入两个正整数n和m:");
scanf("%d%d",&n,&m);
if(n<m)
{
temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!=0)
{
r=n%m;
n=m;
m=r;
}
printf("它们的最大公约数为:%d\n",n);
printf("它们的最大公倍数为:%d\n",p/n); //反斜杠是标识符
return 0;
}
3.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
int main()
{
char c;
int letters=0,space=0,digit=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') digit++;
else other++;
}
printf("字母数:%d\n空格数:%d\n数字数:%d\n其他字符数:%d\n",letters,space,digit,other);
return 0;
}
4.求Sn=a+aa+aaa+aaaa+···+n*a。
int main()
{
int a,n,i,s=0,tn=0;
printf("请输入一个数字a和a的位数n:\n");
scanf("%d%d",&a,&n);
for(i=1;i<=n;i++) //注意i取到n的哪儿
{
tn=tn+a; //少用变量
s+=tn;
a=a*10; //a=a*10+a错误,后面的a是一直在变化的
}
printf("Sn=%d\n",s);
return 0;
}
5.求1!+2!+3!+···+n!
int main()
{
int i;
double s=0,a=1;
for(i=1; i<=20; i++)
{
a=a*i;
s=s+a;
//为什么a=a*(a+1)就错了
}
printf("%22.15e",s); //注意输出的范围,否则越界输出的是错误的值。
return 0;
}
6.求k(1~100)的和+k^2(1~50)的和+1/k(1~10)的和。
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=%15.6f",s1+s2+s3);
return 0;
}
7.输出所有的水仙花数。153=1^3+5^3+3^3.
int main()
{
int i,j,k,n;
for(n=100;n<1000;n++)
{
i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf("%d\n",n);
}
return 0;
}