freemandj
2020-02-09 20:01
采纳率: 63.2%
浏览 308

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

图片说明

以下是我写的,但是不对
#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);

}

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • GJ_HQQ 2020-02-09 22:22
    已采纳

    兄弟,你这个有问题啊代码!
    第一个,依照题目来说,可以连续输入多组数据,然后在输入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]);
        }
    
    }
    
    点赞 评论
  • 玩转生活 2020-02-09 23:39

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

    点赞 评论
  • blownewbee 2020-02-10 00:16

    这样写

    #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);
        }
    }
    

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

    点赞 评论

相关推荐 更多相似问题