关于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"); }