这是函数代码:
void statistics(int arr[], int n, int *positive, int *even, int *doubledigit)
{
int i = 0, countP = 0, countE = 0, countD = 0;
for(i = 0; i < n; i++)
{
if(arr[i] > 0)
countP++;
if((arr[i] % 2) == 0)
countE++;
if(abs(arr[i]) >= 10 && abs(arr[i]) < 100)
countD++;
}
*positive = countP;
*even = countE;
*doubledigit = countD;
}
void main()
{
// double mat[size][size];
int *positive = NULL, *even = NULL, *DoubleDigit = NULL;
int arr4[] = {1, 3, 5, -45, 8, 8, 60, 800};
int soa = sizeof(arr4);
statistics(arr4, soa, &positive, &even, &DoubleDigit);
}
问题是偶数的结果是28:
为什么是28??它应该计算偶数... http://i.stack.imgur.com/dS2us.png
最佳答案
首先main()
的返回类型应该是int
。
其次,出于某种原因,您将 int
指针(初始化为 NULL)的地址传递给您的函数。只需将 int*
参数传递给您的函数即可。
第三,sizeof
返回数组的大小(以字节为单位)。您想要遍历数组中元素的数量,而不是字节数。因此,您需要将字节数除以每个元素中的字节数 (sizeof(int)
)。
试试这个
int main()
{
int positive =0, even = 0, DoubleDigit = 0;
int arr4[] = { 1, 3, 5, -45, 8, 8, 60, 800 };
int soa = sizeof(arr4)/sizeof(int);
statistics(arr4, soa, &positive, &even, &DoubleDigit);
}
关于计算 c 中的问题(visual studio),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30004096/