【问题标题】:C language for loop iterationC语言循环迭代
【发布时间】:2018-06-14 16:25:13
【问题描述】:

我已经开始学习 C 语言,我正在尝试各种代码并进行实验。我写了下面的代码,预计输出为 6,但输出为 13。有人可以解释一下这背后的逻辑吗?谢谢

#include <stdio.h>

void main() {
    int i;

    for (i = 0; i <= 3; i++) {
        i = i + 1;
        printf("%d", i);
    }
}

【问题讨论】:

  • 将 printf 行更改为 printf("%d\n",i); 以使输出更清晰。我不知道你为什么期待 6。
  • OT:请学习使用调试器,非常有帮助。

标签: c loops for-loop iteration


【解决方案1】:

根本不是'13',是'1''3'

#include <stdio.h>

int main(int argc, char *argv[])
{
    int i;

    for (i = 0; i <= 3; i++)
    {
        i = i + 1;
        //printf("%d", i);
        printf("i = %d\n", i);
    }

    return 0;
}

代码的输出是:

i = 1
i = 3

如果去掉"i = ",合并两行,就是一个字符'1''3'

请详细阅读代码。如果您仍然感到困惑,也许没有人可以帮助您。

【讨论】:

    【解决方案2】:

    它正在打印一个 1,然后是一个 3。

    第一次循环 i 被设置为 0。然后你添加一个并打印出来。

    然后循环将 i 递增到 2 (i++)。然后你添加一个 (i = 3) 并打印出来。

    然后循环将 i 增加到 4 并测试 i

    【讨论】:

    • 感谢您的详尽回答。请检查我在此线程中发布的答案
    【解决方案3】:

    我认为您正在尝试对 1,2,3 求和。您的问题是您同时使用 i 作为循环索引和总数。你也加了1,不知道为什么

    你需要

    #include <stdio.h>
    void main()
    {
      int sum = 0;
      for(i=0;i<=3;i++)
      {
        sum = sum +i;
      }
      printf("%d\n",sum);
    }
    

    【讨论】:

    • 好吧,现在说得通了。请检查我发布的答案。输出是 13,我不知道它是如何 13
    【解决方案4】:

    答案永远不会是 6。

    如果你想得到答案 6,printf 应该在循环之外。

    循环将是

    for(i=0;i<=3;i++)
    {
      a=a+i;
    }
    

    你必须打印一个答案。

    您的程序说明

    首先打印 1,因为 i=0,然后 i 的值增加 1 两次(1. 在循环条件中。2. 在循环语句中),因此 i 将是 2。所以下一个输出是3,然后再次将 i 增加 1 两次,然后 i=4,循环将停止。

    所以这个程序的输出是13。

    【讨论】:

    • 这是有道理的。请检查我发布的答案。输出是 13,我不知道如何
    猜你喜欢
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多