c语言题目

题目如下:#include"stdio.h"unsignedlongfun(unsignedlongn){unsignedlongx=0,s,i;intt;s=n;i=1... 题目如下:

#include "stdio.h"
unsigned long fun(unsigned long n)
{
unsigned long x=0,s,i;int t;
s=n;
i=1;
while(s>0)
{
t=s%10;
if(t%2==0)
{
x=x+t*i;i=i*10;
}
s=s/10;
}
return x;
}

void main()
{
unsigned long n=-1;
while(n>99999||n<0)
{
printf("Please input(0<n<100000):");
scanf("%ld",&n);
}
printf("\n The result is:%ld\n",fun(n));
}

while循环中的条件判定问题。
如果要输入x为1~99999之间的数
习题上的写法为:
while(x>99999||x<0)

加入输入的数:77
77>99999为假,
77<0也为假
那么(x>99999||x<0)则为假
退出循环.

语句符合条件
不就执行不了了么?

为什么不是:
while(x<99999||x>0)
呢?
展开
 我来答
岔路程序缘

推荐于2016-02-23 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3395万
展开全部
这个地方循环的作用是对输入的数字进行预先判断(0-99999),如果输入的数字不在这个范围之内时,循环的条件(x<0||x>99999)会成立!也就会一直让你重复输入下去。直到你输入的数字介于(0-99999)之间后,如你说的77,已经不符合循环的条件,这才退出循环,进入后面的环节。

这是预防程序出错的一段常用程序。

最后说一下你写的:while(x<99999||x>0)是完全错误的,因为任何数字都能符合这个条件,如:-100,1234567890,0等等。
另外一种判断数字是否在预定的范围之内的方法是:while(x<99999&&x>0),只要符合这个条件也就执行循环体了,如果不符合条件的数字就会退出循环。我们暂叫他方法B吧。

方法A(前一种方法)与方法B的重大区别是:
A:程序永远停留在这个地方,等待输入一个合法的数字(只需要一个),输入不合法的数字时,程序不往下运行。
B:程序对合法或不合法的数字都会运行:(1)如果输入的是合法的数字,执行一定的功能后,会再你输入另一个数字,如此反复;(2)如果输入的是不合法的数字,则终止循环,跳出这段程序。
二者适用的场合也不同:
A:适合在一处需要输入的地方,严格限制输入的合法性。
B:适合对很多个数字重复处理时使用。
追问
根据判断的条件我的理解如下:
如果输入的数:77

77>99999为假,
7799999||x<0)的值为假
循环不就退出了么?
追答
你的理解是对的。
正因为如此,才能使程序正常进行呀?
程序的过程是这样的:

┌-(数字不正确)---┐
↓   |
┌————————————┐   | _________
|输入一个0-100000的数字|------(正确)----->|继续执行|
└————————————┘ └————┘
新人旧酒o
2015-01-12 · TA获得超过290个赞
知道小有建树答主
回答量:203
采纳率:0%
帮助的人:163万
展开全部
本来就是当在100000以内的时候直接运行下去 而输入不合法里 不断的提示你并重输呀
追问
根据判断的条件我的理解如下:
如果输入的数:77

77>99999为假,
7799999||x99999||x<0)这句应该怎样理解呢?
追答
是呀 退出 才能到后面的输出 呀
不退出 会一直提示输入错误 然后要你重输呀
只有 输入对了才不会进循环 才能正常输出呀

千万不要以为不入循环就是错了 实际上 进循环才是错的 你看进循环后他输出啥
Please input(0<n<100000):

一直输入就会是
Please input(0<n<100000):X

Please input(0<n<100000):X

Please input(0<n<100000):

其中X为你输的不在0到100000之间的数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式