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)
呢? 展开
#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)
呢? 展开
2个回答
展开全部
这个地方循环的作用是对输入的数字进行预先判断(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:适合对很多个数字重复处理时使用。
这是预防程序出错的一段常用程序。
最后说一下你写的: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的数字|------(正确)----->|继续执行|
└————————————┘ └————┘
展开全部
本来就是当在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之间的数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询