题目:输入一个整数n,输出小于n并且能被37整除的所有自然数之和。没有则输出0。
例如:输入 75
输出 111
输入较小的数字时是正确的,而输入999则出现实际与预期输出不符,这是为什么,请各路人士帮忙看看。
C语言,范围内37倍数的和
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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; }
执行结果
另外,这个循环遍历用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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 Vue3 大型图片数据拖动排序
- ¥15 划分vlan后不通了
- ¥15 GDI处理通道视频时总是带有白色锯齿
- ¥20 用雷电模拟器安装百达屋apk一直闪退
- ¥15 算能科技20240506咨询(拒绝大模型回答)
- ¥15 自适应 AR 模型 参数估计Matlab程序
- ¥100 角动量包络面如何用MATLAB绘制
- ¥15 merge函数占用内存过大
- ¥15 使用EMD去噪处理RML2016数据集时候的原理
- ¥15 神经网络预测均方误差很小 但是图像上看着差别太大