C语言 关于当输入0时结束程序的问题

本人是初学者,大致的代码是这样的
#include<stdio.h>
int main()
{
int a, .......;
while(scanf("%d",&a)!=0){

..................;(中间就不写了 不是关键)
}
return 0;
}
关键在于while语句 当我输入0 的时候 整个程序并没有结束 而是停下来了 为什么???

(scanf("%d",&a)!=0)
的意思是:scanf("%d",&a)这个操作没有不成功,成功录入则为1,失败则为0;
与输入是否为0是不同概念,请注意区分~

建议您改为:
{
int a, .......;
scanf("%d",&a);
while(a!=0){

.................
scanf("%d",&a).;
}

不懂请追问,希望我的回答帮得到您,来自【百度懂你】团队,满意请采纳噢~O(∩_∩)O~
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-27
1、(scanf("%d",&a)!=0)
的意思是:scanf("%d",&a)这个操作没有不成功,成功录入则为1,失败则为0;与输入是否为0是不同概念,请注意区分。

2、如果要输入为0结束可改为:
int a, .......;
scanf("%d",&a);
while(a!=0){
.................
scanf("%d",&a).;
}
第2个回答  2013-08-02
你好,你这个while判断的条件是scanf()函数的返回值不等于0的时候,执行循环
scanf()函数的返回值返回成功接收的变量值的个数
而你本意应该是a的值等于0时,即输入0时,退出循环
可以改成这样
int a =1;
while(a != 0)
{
scanf("%d",&a);
}
第3个回答  2013-08-02
scanf的返回值是其成功读取值的变量的个数。
比如你的这个scanf("%d", &a)成功的话返回值应该为1,所以不等于0,所以就继续循环了。
第4个回答  2013-08-02
scanf()函数返回成功赋值的数据项数,出错时则返回EOF。建议楼主看一下scanf()的用法。http://www.oschina.net/question/234345_43611
相似回答