目录
题目一 子序列的和
结束标记:输入两个0,程序直接结束。 应该也可以用do while。
#include <stdio.h>
#include <math.h>
int main()
{
long long n=0,m=0,i=0;
double sum=0;
scanf ("%d %d",&n,&m);
if((n!=0)||(m!=0))
{
for(i=n;i<=m;i++)
{
sum+=1.0/pow(i,2);
}
printf("%.5lf\n",sum);
}
return 0;
}
题目二 分数化小数
输入 n 保留 n 位小数:直接 scanf ("%d",&n); 然后printf ("%.nf",m); 的话有问题。要scanf("%d",&n); printf("%.*f",n,123.666666);
#include <stdio.h>
int main()
{
int a=0,b=0,c=0;
double m;
scanf("%d %d %d",&a,&b,&c);
if((a!=0)&&(b!=0)&&(c!=0))
{
m=(a*1.0)/b;
printf("%.*lf",c,m);
}
return 0;
}
题目三 排列
我写的:(bug: 没有能使九个数互不相等。。不能写9!个if 条件吧)
#include <stdio.h>
int main()
{
// int arr[9]={1,2,3,4,5,6,7,8,9};
int s1=0,s2=0,s3=0;
int a=0,b=0,c=0;
int d=0,e=0,f=0;
int g=0,h=0,i=0;
for(a=0;a<9;a++)
{
for(b=0;b<9;b++)
{
for(c=0;c<9;c++)
{
for(d=0;d<9;d++)
{
for(e=0;e<9;e++)
{
for(f=0;f<9;f++)
{
for(g=0;g<9;g++)
{
for(h=0;h<9;h++)
{
for(i=0;i<9;i++)
{
s1=a*100+b*10+c;
s2=d*100+e*10+f;
s3=g*100+h*10+i;
if(((s1*6)==(s2*3))&&((s2*3)==(s3*2)))
{
printf("%d %d %d\n",s1,s2,s3);
}
}
}
}
}
}
}
}
}
}
return 0;
}
思考一:
1.改第七行,不改第六行:printf("%d\n",2*i);
2.改第六行,不改第七行: for(i=2;i<=n;i=i+2)
思考二: