C:计算正数/负数和0';列阵
我正试图用C语言编写一个程序来计算数组中正数和负数的个数以及零的个数 我编写了以下代码: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) {
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++)