数组&循环,Sentinel将无法工作(C Prog)

时间:2018-04-09 19:20:34

标签: c arrays constants defined

我无法在此代码中使用(-999)。我把它作为if / break语句以及while语句,但它似乎没有注册它。求救!

编写一个简单的程序(演示使用数组),要求用户输入数字和 继续输入数字,直到有两件事发生:

用户输入-999

输入的总数达到5

您的程序将停止根据上述任一条件请求新输入。一旦满足上述条件之一,程序将输出所有输入的数字。

见下面的代码:

#include <stdio.h>
#include <stdlib.h>

int main()
#define QUANT 5
{
int number [QUANT], i = 0;

while (i < QUANT) {
    for (i = 0; i < QUANT; i++)
        scanf("%i", &number[i]);
    if (number[i] == -999) {
        break;
    }
}
for (i = 0; i < QUANT; i++)
printf("Element %i: %i \n", i, number[i]);

}

1 个答案:

答案 0 :(得分:2)

您需要删除while循环,并将break语句放在for循环中。

#define QUANT 5
int main()
{
    int number [QUANT], i = 0, j = 0;

    for (i = 0; i < QUANT; i++) {
        scanf("%i", &number[i]);
        if (number[i] == -999)
            break;
    }

    for (j = 0; j < i; j++)
        printf("Element %i: %i \n", j, number[j]);

    return 0;
}

您可能已经注意到,即使您编写的程序中包含两个比较i < QUANT,这有点奇怪。在任何情况下,break语句只有在while循环完成循环后才会突破for循环。

我还更改了最后一个循环,以使用与上一循环中设置的j进行比较的另一个变量i。如果用户输入-999,这会导致程序不输出未初始化的值。