c语言题目

题目如下:

#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)
呢?

这个地方循环的作用是对输入的数字进行预先判断(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的数字|------(正确)----->|继续执行|
└————————————┘ └————┘

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-12
本来就是当在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之间的数

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网