c语言入门:编程练习|这个循环为什么最后输出把0算进奇数了

#include <stdio.h>
int main(void)           
{
    long int a;
    long int o,j;
    double oo,jj;
    oo=jj=0;
    while(1==scanf("%d",&a)&&a!=0)
    {
        if(a%2==0)
        {
        o++;
        oo+=a;
        }
        else
        {
        j++;
        jj+=a;
        }
    }
    printf("%ld %.2lf\n%ld %.2lf",o,oo/o,j,jj/j);
    return 0;
}

这个循环为什么最后输出把0算进奇数里面了啊?

如果输入的全是奇数或全是偶数,求平均数那里不就分母为0了吗?

O 和 J用来计数的你不给初值
在一个 你这个输出语句 如果偶数或奇数个数为零也会有问题,做个判断o 或者 j为0输出语句变一下

#include <stdio.h>
int main(void)           
{
    long int a=1;
    long int o=0,j=0;
    double oo,jj;
    oo=jj=0;
    while(1==scanf("%d",&a)&&a!=0)
    {
        if(a%2==0)
        {
            o++;
            oo+=a;
        }
        else
        {
            j++;
            jj+=a;
        }
    }
    if(o==0)
        printf("偶数为0个\n%ld %.2lf",o,oo/o,j,jj/j);
    else if(j==0)
        printf("%ld %.2lf\n奇数为0个",o,oo/o,j,jj/j);
    else if(o==0&&j==0)
        printf("奇数偶数都为0");
    else 
        printf("%ld %.2lf\n%ld %.2lf",o,oo/o,j,jj/j);
    return 0;
}