这个为什么输出一直为0
有好几处错误,代码修改如下
#include <stdio.h>
#include <malloc.h>
int main()
{
int n,i,k;
int *a;
k=0;
scanf("%d",&n);
a = (int*)malloc(n*sizeof(int)); //给a申请空间,动态申请空间
for (i=0;i<n;i++)
scanf("%d",&a[i]);
i=0; //这里重置i为0
while(i<n) //这里为什么要用a[i] != -1呢,应该是用i<n遍历,如果用a[i] !=-1,如果数组中间有-1,循环直接就结束了
{
if(a[i]%2 != 0)
k++;
i++; //这里i自增
}
printf("%d",k);
return 0;
}
scanf中用a[i]。你写成a[n]的话,所有数据都写到越界的空间去啦
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!