回 帖 发 新 帖 刷新版面

主题:纠结了几天的C语言问题,望大家指点!

#include<stdio.h>
int main(void)
{
    int num,ling=0,zheng=0,fu=0;
    printf("请输入数字:");
    while(num!=999)
    {    
        scanf("%d",&num);
        if(num > 0 && num!=999 )
        {
            zheng++;
        }
         if(num<0)
         {
            fu++;
         }
        
         if(num==0)
         {
            ling++;
         }    
    }
    printf("正数有%d个,负数有%d个,零有%d个\n",zheng,fu,ling);
return 0;
}

回复列表 (共5个回复)

沙发


补充: 
        为何程序遇到字母就会停止,怎样不管输入什么字母或其它字母,
  程序会继续统计正数,负数,和零的个数.大家指点指点我,谢!谢!

板凳


[code=c]
#include <stdio.h>

int GetNumber()
{
    int num;
    for( ; 1!=scanf("%d",&num); )
        getchar();
    return num;
}

int main()
{
    printf( "%s", "请输入数字:" );

    unsigned zero=0, pos=0, neg=0;
    for( int num; (num=GetNumber())!=999; )
    {
        if( num > 0 )
            ++pos;
        else if( num < 0 )
            ++neg;
        else
            ++zero;
    }

    printf("正数有%u个,负数有%u个,零有%u个\n", pos, neg, zero );

    return 0;
}
[/code]

3 楼

谢谢你.....看得懂.有点不明白程序怎么操作,能不能分步解释,谢谢你

4 楼


请问:
     1.  for( ; 1!=scanf("%d",&num); )  如何运行的?
                   getchar();

     2. unsigned zero=0, pos=0, neg=0;
        for( int num; (num=f())!=999; )   nusigned 是什么?for又是怎么运行的

5 楼

scanf  用此函数代替
long int num_input(void)
{
    
   long int i=1,j,k;
   do{
         k=0;
      
         i=scanf("%ld",&j);
            
         while((getchar())!='\n')k++;      

         if(!i||k>=1 ||j < 0)
               printf("\nInput a number error!\n"
                      "Repeat input a number!");
      


   }while(!i||k>=1 || j < 0);    
   
    return j;
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册