我正在尝试创建一个为用户提供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]);
}
}
答案 0 :(得分:0)
代码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;
}