hdu 2008数值问题 20140722

来源:互联网 发布:怎么修改淘宝店铺网址 编辑:程序博客网 时间:2024/05/20 00:16

错误:

#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;
}

0 0
原创粉丝点击