c - 数组和循环,Sentinel 不起作用(C 程序)

标签 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]);

}

最佳答案

您需要删除 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语句只跳出 whilefor 之后循环loop 已经完成循环。

我还更改了最终循环以使用另一个变量 j它与 i 相比在上一个循环中设置。这会导致程序不输出未初始化的值,以防用户输入 -999。 .

关于c - 数组和循环,Sentinel 不起作用(C 程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49740176/

相关文章:

excel - 在运行时使用文字调用常量

c - 缓冲区溢出漏洞 : Why does "jmp esp" need to be located in a DLL?

c - 尝试理解 fork 以及父进程和子进程之间的关系

PHP使用通配符搜索数组?

ios - segue后更新类属性中的数组

javascript - 覆盖 React 中的常量文件值

c - 我应该更喜欢常量而不是定义吗?

c - Libcurl 如何不显示所有这些信息

c - 大型数组的频繁随机访问

javascript - 如何创建一个以变量为名称的对象?