鱼C论坛

 找回密码
 立即注册
查看: 1434|回复: 6

[已解决]这段代码为什么会出现错误的结果?

[复制链接]
发表于 2021-6-26 11:07:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         int i=1, sum=0;

  5.         do
  6.         {
  7.                 i = i + 1;
  8.                 sum = sum + i;
  9.                
  10.         } while (i <= 100); // 娉ㄦ剰锛岃繖閲屾湁鍒嗗彿锛?锛?

  11.         printf("%d\n", sum);
  12.         printf("%d\n", i);
  13.         return 0;
  14. }
复制代码

上面这段代码,我认为他的值应该是5151,为什么会是5150?
最佳答案
2021-6-26 12:00:21
yuzhitai 发表于 2021-6-26 11:56
这段代码结果sum = 5150,而i = 101.那么这个代码最终的数值我觉得应该是5151




这不理解吗? 第一次开始循环时,你 i 初始值是 1 ,而你循环体中

  1. i = i + 1;
  2. sum = sum + i;
复制代码


是先执行 i = i + 1 ,那么此时 i 不是等于 2 了吗?,而 2~100 的和为 5049 最后一次循环 101 加上不就为 5150 了吗?

5049+ 101 是等于 5151 吗?

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-6-26 11:28:35 | 显示全部楼层

开始循环时 i = 1 时没有加到 sum 中,而是先将 i + 1 了,也就是从 2 开始加

而最后循环 101 时 正好 sum 等于 5049 了,所以结果为 5150

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-26 11:52:19 | 显示全部楼层
有没有更好的解释?

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-26 11:56:33 | 显示全部楼层
这段代码结果sum = 5150,而i = 101.那么这个代码最终的数值我觉得应该是5151
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-26 12:00:21 | 显示全部楼层    本楼为最佳答案   
yuzhitai 发表于 2021-6-26 11:56
这段代码结果sum = 5150,而i = 101.那么这个代码最终的数值我觉得应该是5151




这不理解吗? 第一次开始循环时,你 i 初始值是 1 ,而你循环体中

  1. i = i + 1;
  2. sum = sum + i;
复制代码


是先执行 i = i + 1 ,那么此时 i 不是等于 2 了吗?,而 2~100 的和为 5049 最后一次循环 101 加上不就为 5150 了吗?

5049+ 101 是等于 5151 吗?

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-26 12:04:37 | 显示全部楼层
懂了,谢谢。i的作用就相当于初始值和累加值。sum在i的基础上进行累加。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-26 12:07:31 | 显示全部楼层
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         int i=0, sum=0;

  5.         do
  6.         {
  7.                 ++i;//相当于初始值。
  8.                 sum = sum + i;
  9.                
  10.         } while (i <= 99); // 娉ㄦ剰锛岃繖閲屾湁鍒嗗彿锛?锛?

  11.         printf("%d\n", sum);
  12.         printf("%d\n", i);
  13.         return 0;
  14. }
复制代码

这是我认为比较合适的方法。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-27 16:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表