我正在尝试创建一个程序,该程序需要一个用户的ISBN号。 ISBN的变量是一个数组,如果使用ISBN输入0,则程序应结束。但是,即使我为ISBN号输入0,该程序仍会继续运行:

#include <stdio.h>
int main(void) {
int isbnNumber[100];
int i = 1;

printf("ISBN number: ");
scanf("%d", &isbnNumber[0]);

while (isbnNumber[100] != 0) {

    printf("ISBN number: ");
    i++;
    scanf("%d", &isbnNumber[i]);


 }
}

最佳答案

代码isbnNumber[100]检查数组的第101个元素。仅当在第100次迭代中输入0时,循环才会退出。

另外,应注意,isbnNumber[100]不是isbnNumber数组的元素。数组索引从零开始,因此isbnNumber中的最后一个元素是isbnNumber[99]。访问数组末尾的元素是未定义的行为。如果在第100次迭代中输入0,这就是循环没有退出的原因。

此外,您确实应该有一些防止循环运行超出数组末尾的方法。这是循环运行直到输入0或到达数组末尾的方式。

for (int i = 0; i < 99; i++) {
    printf("ISBN number: ");
    scanf("%d", &isbnNumber[i]);
    if (isbnNumber[i] == 0)
        break;
}

关于c - 如何将while循环与C中的数组一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33600400/

10-13 08:11