噫吁汐 2023-11-16 20:07 采纳率: 95%
浏览 7
已结题

c语言,子序列的和,无输出结果

题目如下

img

代码如下:


#include<stdio.h>
int main(){
    freopen("input.txt","r",stdin);
    int n,m;
    int count=1;
    while(scanf("%d",&n)&&n){
        scanf("%d",&m);
        long double s=0;
        for(int i=n;n<=m;i++){
            
            s+=1.0/i/i;
            
        }
        printf("Case %d : %.5f\n",count++,s);
    }
    
}

程序无法输出案例,貌似是死循环了,但我找不到哪里出的问题,请大家帮我看一下

  • 写回答

2条回答 默认 最新

  • 爱学习的小茗 2023-11-16 21:13
    关注

    呃,应该for循环那里,终止条件不是n小于等于m而是i小于等于m,因为题目输入,除了最后一组必然有n小于m,所以你的代码不会终止哈

    另外这个题有提示说"有陷阱",可能要注意一下。我觉得有一种情况是,假如说输入的n,m有非常多组的话,你这个代码可能会超时哈

    更新1
    还有一点是long double在printf的时候需要用"%.5Lf",所以有两种改法,一种是改成double s其他不用改,还有一种是在printf的时候改成"%.5Lf"哈。
    不过一般来说大部分题目double就足够了,我感觉可以改成double s

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月26日
  • 已采纳回答 11月18日
  • 创建了问题 11月16日