我写了一个题,但答案不对,求助各位热心大神,谢谢

图片说明

以下是我写的,但是不对
#include
#include
int main(){
double sum=0;
int m,n,i,count=0;
scanf("%d%d",&n,&m);
while(scanf("%d%d",&n,&m)==2&&n!=m)
{

for(i=n;i<=m;i++){
sum+=1.0/pow(i,2);

}
printf("case %d: %.5f",++count,sum);
scanf("%d%d",&n,&m);

}

}

兄弟,你这个有问题啊代码!
第一个,依照题目来说,可以连续输入多组数据,然后在输入0 0的时候结束输入
然后一口气输出所有答案,这么看来必然会有数组的存在
先多次输入数据,每次输入数据的时候都会有一次计算,计算结果存入数组,最后一口气输出,在你的i^2的时候会造成溢出,超出int的最大可以容纳的数值,所以用/i/i

#include<stdio.h>
int main(){
    double data[10];
    double sum=0;
    int m,n,count=0,i,j;
    printf("请输入m,n的数值:\n");
    scanf("%d%d",&n,&m);
    while(n != 0 && m != 0 ){

        for(i=n;i<=m;i++){
            sum+=1.0/i/i;
        }

        data[count]=sum;
        printf("请输入m,n的数值:\n");
        scanf("%d%d",&n,&m);
        count++;
    }

    for(j=0;j<count;j++){
        printf("case %d: %.5f\n",(j+1),data[j]);
    }

}

pow(i,2),i较大时候,会不会溢出?改成这样pow((1/i),2)可不可以, 另外1/i 保留6位小数以后 再 pow

这样写

#include<math.h>
#include<stdio.h>
int main(){
    double sum=0;
    int m,n,i,count=0;
    while(scanf("%d%d",&n,&m)==2&&n!=m)
    {
        sum = 0; //每次计算,sum都要初始化一下
        for(i=n;i<=m;i++){
            sum+=1.0/pow((double)i,(double)2.0);
        }
        printf("case %d: %.5f",++count,sum);
    }
}

问题解决的话,请点下采纳