C:计算正数/负数和0';列阵

C:计算正数/负数和0';列阵,c,count,nul,C,Count,Nul,我正试图用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) {

我正试图用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++;
    }
}
inta[15],pos,neg,nul,i;
[...]
pos=0;
负=0;
nul=0;
对于(i=0;i=0){
pos++;
}
if(A[i]<0){
neg++;
}
如果(A[i]==0){
nul++;
}
}
然而,计数总是错误的。具体地说,
pos
nul
的计数总是以
1
关闭。由15个正数和1个零组成的数组给出
pos=16
neg=0
,而由15个零和1个正数组成的数组给出
pos=0
nul=16


这里发生了什么事?怎么办?

问题:

您的数组大小为15,但由于以下原因,您需要遍历16次:


for(i=0;i这里的问题是
for(i=0;i)(i=0;i您是如何将16项放入一个15的数组中的?(“一个15个正数加1的数组”)您读取的内容超过了缓冲区。您只有15个元素的空间,但您将继续读取第16个元素与大小为
n
的数组一起使用的标准
for
循环是
for(i=0;i
for (i = 0; i < n; ++i)
{
    // process a[i] here
}
(i=0; i<15; i++)