错误:
#include<stdio.h>
int main()
{
int n,i,a,b,c;
float m;
while(scanf("%d",&n)!=EOF&&n!=0)
{
a=0;
b=0;
c=0;
while(i<=n)
{
scanf("%d",&m);
while(m<0)
a=a+1;
while(m=0)
b=b+1;
while(m>0)
c=c+1;
i++;
}
printf("%d %d %d\n",a,b,c);
}
while(1);
return 0;
}
需注意:1.第六行“!=EOF”尽量别写,加不加都可以,只是去掉更简洁 2.十五行可改为a++,更简洁,下面同理。
有四处错误:
1.i没有定义。
2.第十三行%d 错误,之前定义的m是float型,应改成%f,或者把m定义成double型,这样更简洁。
3.第十四行while改成if,while是实现循环控制,if才是实现选择控制的,下面的同样要改。
4.第十六行括号里m=0改为m==0,前者是赋值语句,后者才是判断语句。
正确:
#include<stdio.h>
int main()
{
int n,i,a,b,c;
float m;
while(scanf("%d",&n)!=EOF&&n!=0)
{
a=0;
b=0;
c=0;
i=1;
while(i<=n)
{
scanf("%f",&m);
if(m<0)
a++;
if(m==0)
b++;
if(m>0)
c++;
i++;
}
printf("%d %d %d\n",a,b,c);
}
return 0;
}
加注释:
#include<stdio.h>
int main()
{
int n,i,a,b,c;
float m;
//while(scanf("%d",&n)!=EOF&&n!=0)
while(scanf("%d",&n)&&n!=0)
{
a=0;
b=0;
c=0;
i=0;
//while(i<=n)//i没赋初值
while(i<n)
{
//scanf("%d",&m);
scanf("%f",&m);// m定义为浮点型 的
// while(m<0)
if(m<0)
a=a+1;
//while(m=0)
// while(m==0)//今天下午刚讲的
if(m==0)
b=b+1;
//while(m>0)
if(m>0)
c=c+1;
i++;
}
printf("%d %d %d\n",a,b,c);
}
//while(1);
return 0;
}
另一种解法:
#include<stdio.h>
int main()
{
int n;
while(scanf("%d",&n),n)
{
int i,j,a=0,b=0,c=0;
double s;
for(i=0;i<n;i++)
{
scanf("%lf",&s);
{
if(s<0) a++;
else if(s==0) b++;
else if(s>0) c++;
}
}
printf("%d %d %d",a,b,c);
printf("\n");
}
return 0;
}