我在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
时,输出应为23
和24
,因为首先执行循环在i = 0
并且在递增后再次在i = 1
执行?
答案 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;
}