与C语言 2023-01-06 16:28 采纳率: 81.3%
浏览 59
已结题

C语言,范围内37倍数的和

题目:输入一个整数n,输出小于n并且能被37整除的所有自然数之和。没有则输出0。
例如:输入 75
输出 111
输入较小的数字时是正确的,而输入999则出现实际与预期输出不符,这是为什么,请各路人士帮忙看看。

img

img

  • 写回答

5条回答 默认 最新

  • ksgpjhqf 2023-01-06 16:46
    关注

    注意观察:999是37的倍数(999=27*37),实际输出刚好比预计输出多999。
    错误在于,要求的是“小于n”,而你的循环遍历是0到n+1,于是,如果n或n+1是37的倍数,此代码的输出结果就会比预计输出多n或n+1。
    只需要把循环条件改成i<n-1即可:

    #include<stdio.h>
    int main()
    {
        int n,sum=0,i=0;
        scanf("%d",&n);
        if(n>=37)
        {
            while(i<n-1)
            {
                i++;
                if(i%37==0)
                sum+=i;
            }
            printf("%d",sum);
        }
        else printf("0");
        return 0;
    }
    
    

    执行结果

    img

    另外,这个循环遍历用for循环比较好,而且不必每次加1,可以每次加37。我把我写的贴上:

    #include<stdio.h>
    int main()
    {
        int n,sum=0,i;
        scanf("%d",&n);
        for(i=0;i<n;i+=37){
            sum+=i;
        }
        printf("%d",sum);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 1月17日
  • 已采纳回答 1月9日
  • 创建了问题 1月6日

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大