wang815309286 发表于 2016-8-14 10:01:40

求教关于while (scanf("%d",&a)!=0) 为什么输入0不能退出

#include<stdio.h>
int main(void)
{
        int num,o,j,sum_o,sum_j;//定义一个输入的数num,偶数o,奇数j,所有偶数之和sum_o,所有奇数之和sum_j
        sum_o=sum_j=0;               
        printf("输入一串数字:\n");
        o=j=0;
        while((scanf("%d",&num)!=0))    // 输入一个数,当输入数字为0时终止
        {
                if(num%2==0)
                {
                        o++;               //计算偶数个数,计算所有偶数之和
                        sum_o+=num;                       
                }
                else
                {
                        j++;            //计算数个数,偶数之和
                        sum_j+=num;
                }
        }
        printf("偶数个数为%d个,偶数平均数为%d;奇数个数为%d个,奇数平均数为%d",o,sum_o/o,j,sum_j/j);
}

wang815309286 发表于 2016-8-14 10:03:54

但是对于字符来说 while(scanf("%c",&ch))!=#当我输入#字符时可以退出循环,这是为啥列?

雲裏霧裏 发表于 2016-8-14 10:56:40

wang815309286 发表于 2016-8-14 10:03
但是对于字符来说 while(scanf("%c",&ch))!=#当我输入#字符时可以退出循环,这是为啥列?

兄弟,好象0是偶数吧,呵呵,那样就退不出来了

Krant5 发表于 2016-8-14 11:08:45

很显然你不知道scanf的返回值是什么。那么我告诉你好了原型“int __cdecl scanf(const char * __restrict__ _Format,...)”,它返回值的含义是成功输入的参数个数,既然你每次都scanf("%d",&num)他成功的时候必然返回1.

wang815309286 发表于 2016-8-14 11:22:39

Krant5 发表于 2016-8-14 11:08
很显然你不知道scanf的返回值是什么。那么我告诉你好了原型“int __cdecl scanf(const char * __restrict__ ...

哦哦~懂了懂了~感谢~
页: [1]
查看完整版本: 求教关于while (scanf("%d",&a)!=0) 为什么输入0不能退出