打印Hello World仅3次不是5次

时间:2017-03-12 00:54:27

标签: c

我正在尝试使用新功能打印hello world 5次名为 hello_world 。我在 hello_world 函数中使用for循环。这是我得到的结果:

C:\Users\darce\Desktop\c\functions\cmake-build-debug\functions.exe
Hello, World!
Hello, World!
Hello, World!

Process finished with exit code 0

这是我的代码:

#include <stdio.h>

void hello_world(int n) {
    for (int i = 0; i < n; i++)
    {
        puts("Hello, World!");
        i++;
    }
}

int main ()
{
    hello_world(5);
    return 0;
}

我的问题是为什么它只打印3次而不是5次?对于参数 int n ,我确定在运行它之前是5。

3 个答案:

答案 0 :(得分:1)

因为你在循环中增加了两次。 删除最后一个i ++,它工作正常。

答案 1 :(得分:1)

您的问题是您增加i两次。因此,它将是0,然后是2,然后是4,然后是6,大于5。 要解决此问题,只需删除i++;之后的puts("Hello, World!");行,或将for循环转换为while循环。

解决方案1 ​​

#include <stdio.h>

void hello_world(int n) {
    for (int i = 0; i < n; i++)
    {
        puts("Hello, World!");
    }
    /* CAN BE SIMPLIFIED BY REMOVING THE BRACES */

}

int main ()
{
    hello_world(5);
    return 0;
}

解决方案2

#include <stdio.h>

void hello_world(int n) {
    int i = 0;
    while (i < n)
    {
        puts("Hello, World!");
        i++;
    }
}

int main ()
{
    hello_world(5);
    return 0;
}

答案 2 :(得分:0)

此for循环的形式是在最终语句或函数分别执行或返回后始终递增计数器变量。所以,任何增加的“我”都会增加。在循环体中,在这种情况下,将为for循环计数器的值加1,从而破坏计数。