关于C中这个do while循环程序的输出

时间:2017-02-26 07:05:09

标签: c

我在CodeChef.com上使用C编译器。我已经写了以下代码。

#include <stdio.h>

int main()
{
    int scores[] = {23, 24, 25, 26, 27, 28};
    int scoreslength = 0;
    int i = 0;
    do
    {
        printf("%d \n", scores[i]);
        i = i + 1;
    }
    while (i < scoreslength);
    return 0;
}

输出为23。我理解,因为我将scoreslength的值赋予0并且do while循环至少执行一次,因为条件while (i < scoreslength)在结尾处给出环。但是,当我将scoreslength的值设为1时,输出仍为23

我的问题是,当scoreslength的值为1时,输出应为2324,因为首先执行循环在i = 0并且在递增后再次在i = 1执行?

4 个答案:

答案 0 :(得分:1)

当scoreLength为1时,循环执行第一次,i = 0.在循环内,你递增i = i + 1,这使得i = 1.因此在while循环中检查你的条件。它说i < scoreLength评估为假。所以你的循环只执行一次。

答案 1 :(得分:0)

如果scorelength为1,则循环中只有一次传递将存在 如果将scorelength设置为2,则输出将为23和24。

答案 2 :(得分:0)

首先执行do然后检查while下一步 步骤:1

do
    {
        printf("%d \n", scores[i]); // here i = 0, output is 23
        i = i + 1;   // i becomes 1, so i = 1
    }
    while (i < scoreslength); // here 1 < 1 is false so can't execute further
    so the output is only 23

答案 3 :(得分:-2)

查看此代码:

#include <stdio.h>

int main()
{
    int scores[] = {23, 24, 25, 26, 27, 28};
    int scoreslength = 0;
    int i = 0;
    do
    {
        printf("%d \n", scores[i]);
        i = i + 1;
    }
    while (i <= scoreslength);

    return 0;
}