C语言:判断一个数是否能同时被3和5整除

这个题目其实很简单,我昨天在同学那里看到这个程序是这样写的,我有点看不懂:程序的内容如下:#include<stdio.h>voidmain(){intn;while((... 这个题目其实很简单,我昨天在同学那里看到这个程序是这样写的,我有点看不懂:程序的内容如下:
#include<stdio.h>
void main()
{
int n;
while((scanf("%d",&n)==1)
{
if(n%3==0&&n%5==0)
printf("Yes:%d\n",n);
else
printf("NO:%d\n",n);
return 0;
}
}
我想问的是:
按照常规的理解,while()括号里的scanf("%d",&a)==1;的意思是:当输入的数恰好为1的时候则执行下面的语句,例如,当输入的数是15时,15此时不恰好等于1,整个表达式的值为假,难道不是应该退出循环吗?可是为什么运行的时候能够通过,
还有最后那个return 0;是什么意思;请大虾指教,在下感激不尽;
展开
 我来答
无中生有何时明
推荐于2016-10-28 · TA获得超过510个赞
知道小有建树答主
回答量:145
采纳率:100%
帮助的人:85.6万
展开全部
先说scanf(),这是一个库函数,它有它的返回值,祥情参阅http://baike.baidu.com/view/1390039.htm?fr=ala0_1_1
所以,你的scanf("%d", &a)它返回了int类型的1,说明成功读入了一个数。如果你读如了两个数,如scanf("%d%d", &a, &b),那么它返回的将是int类型的2。。。
所以while()表达式的真假为真。

对于return 0;也没有哪本书上有过对它的描述给我留下了深刻的记忆,只记得有说它是返回给操作系统,表示程序的正常结束。如果你再baidu一下的话,你会发现一些,如:
这是一个好的习惯;
要不要无所谓;
对于有的编译器是必须的;
等。。。
所以建议还是留着它吧,当然,对于main()的返回也要作相应的修改:int main(){...}
黄邦勇帅哥哥
2010-03-15 · TA获得超过3987个赞
知道大有可为答主
回答量:1199
采纳率:100%
帮助的人:469万
展开全部
不是你那样理解的,scanf("%d",&a)这里是调用的scanf函数,这个你要看scanf的反回值是多少,在C中定义的scanf反回的值是1,而不是在使用变量a的值去与1进行比较,因此不管你是怎样调用scanf,只要scanf执行成功都会反回1,这就是为什么你的scanf("%d",&a)==1;总为真的原因.

return 语句一般是用在函数中的,主要是用于反回一个值,而return就表过这个函数反回值为0,而你这个程序中只有一个反回类型为void(表示没有反回值)的main函数,因此在这里使用return 0;反回一个整数值0,是错误的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cnopqopq
2010-03-15 · TA获得超过3363个赞
知道小有建树答主
回答量:783
采纳率:0%
帮助的人:592万
展开全部
scanf("%d",&a)==1;
的意思是 只要不是0就可以 0以外都是真
void main()其实这个是一个没有返回值的函数
return 0 可有可无。
return 常用于子函数当中 用来得到子函数的运算结果如 int loop()表示返回值为整数
b=loop()
loop
{
int a
a++
return a
}
b就等于loop的返回值a 具体格式对不对我不保证哈,我好久没用了,但肯定是这个意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
熊猫_老师
2010-03-15
知道答主
回答量:15
采纳率:0%
帮助的人:14.5万
展开全部
unix/linux中,约定俗成一个程序返回0代表成功,-1代表失败。
主要用于script中作判断。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式