判断奇数个数c语言。

这个为什么输出一直为0

img

有好几处错误,代码修改如下

#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]的话,所有数据都写到越界的空间去啦

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632