【发布时间】:2023-04-03 06:05:03
【问题描述】:
我正在尝试用 C 编写一个程序来计算数组中正数和负数的数量以及零的数量。
我写了以下代码:
int A[15], pos, neg, nul, i;
[...]
pos = 0;
neg = 0;
nul = 0;
for (i = 0; i <= 15; i++) {
if (A[i] > 0) {
pos++;
}
if (A[i] < 0) {
neg++;
}
if (A[i] == 0) {
nul++;
}
}
但是,计数总是错误的。具体来说,pos 和nul 的计数总是被1 关闭。包含 15 个正数和 1 个零的数组给出 pos = 16 和 neg = 0,而包含 15 个零和 1 个正数的数组给出 pos = 0 和 nul = 16。
这里发生了什么以及如何处理它?
【问题讨论】:
-
您是如何将 16 个项目放入 15 个数组中的? ("15 个正数和 1 的数组")
-
您正在阅读缓冲区。您只有 15 个元素的空间,但您正在继续第 16 个元素
-
标准的
for循环用于n大小的数组是for (i=0; i<n; i++)。在您的代码中,n是 15,所以循环条件应该是i<15