关于while()的EOF的用法上;

#include<stdio.h>    //错误代码,能运行,不能起作用,不能输出;
#include<stdlib.h>
main()
{
    int a;
    double p1,p2;
    int z=0,f=0,sum1=0,sum2=0;
    while(scanf("%d",&a)!=EOF)
    {
        if(a==0) exit(0);
        else
        {
            if(a>0)
            {
                 z++;
                sum1=sum1+a;
            }
            else if(a<0)
            {
                f++;
                sum2=sum2+a;
            }
            p1=(double)sum1/(double)z;
            p2=(double)sum2/(double)f;
        }

    }
    if(sum1!=0)
        printf("%d %.2lf\n",z,p1);
    else
        printf("0\n");
    if(sum2!=0)
        printf("%d %.2lf",f,p2);
    else
        printf("0");
}
#include<stdio.h>     //正确代码;
main() { int a; double p1,p2; int z=0,f=0,sum1=0,sum2=0; //最容易忘记初始化变量; while(scanf("%d",&a)&&a!=0) //此处不能用EOF { if(a>0) { z++; sum1=sum1+a; } else if(a<0) { f++; sum2=sum2+a; } p1=(double)sum1/(double)z; p2=(double)sum2/(double)f; } if(sum1!=0) printf("%d %.2lf\n",f,p2); else printf("0\n"); if(sum2!=0) printf("%d %.2lf",z,p1); else printf("0"); }