C语言的简单问题求解,谢谢了

ACM上一道简单的题
Description
计算:t=1-1/(2*2)-1/(3*3)-...-1/(m*m)

Input
整型变量m

Output
t(保留六位小数)

Sample Input
10
Sample Output
0.450232

我的代码
#include
#include

int main()
{
int m,n;
float t=1;
do{
scanf("%d",&m);
}while(m<1);
for(n=2;n<=m;n++)
{
t=t-1.0/(n*n);
}
printf("%.6f",t);
return 0;
}
感觉怎么都没有错啊

你输入数据的方式可能有问题 。
如果只有一组输入,那直接用scanf("%d", &m);
如果有多组输入,并且以特定输入(比如m等于0)结尾,那么程序应该写成
while (scanf("%d", &m) && m != 0)
{
// 主要程序
}
而如果只告诉有多组输入,而没有告知特定条件,那么通常是用
while (scanf("%d", &m) != EOF)
{
// 主要程序
}
这里的EOF是end of file的意思,因为ACM判题的方式将输入和输出分别放在文件中,然后读取输入文件中的数据,再将你程序的输出与输出文件中的结果进行比对。所以只有将所有输入全部读完,结果都正确并且时间、空间都满足条件的情况下才能通过题目。

另外这种计算小数的题目你需要注意题目中有没有对四舍五入有特殊要求,这也可能是WA的一种可能

换成double试试