C语言 如果控制使输入的数必需在 1~15的范围!

C语言 如果控制使输入的数必需在 1~15的范围!

很简单的问题!如果不在这个范围,要求重新输入。

scanf("%d",&x);
while(x<1||x>15)
{
printf("ERROR!! input num between 01 to 15\n");
scanf("%d",&x);
}

但如果是这样的话,当输入是‘字符’等,就会出现死循环!(因为x的结构被破坏了!)

还有请大家考虑这个情况,也就是当输入‘01’ ‘02’ ‘03’……这样也是允许的!!

但如果是‘012’ 、‘120’、‘1a’、‘a1’这些情况都不行!

谢谢!
题目写错了 是‘如何’不是‘如果’!!

1楼的对!结构不会被破坏了!就是当输入字符时还是不行!

    需要控制输入的数的范围的话,可以使用一个判断语句或者调用一个函数

    依照你的要求,这里最佳的选择是调用一个函数来控制输入数的范围,调用函数不仅方便,而且通用性强

    关于函数的设计问题,这里的函数可以设计为:当输入的数在1-15之间时,切换回主函数继续执行程序,若输入的数不在范围内,那么就返回一个表征错误的量,并配上相应的语句让输入者重新输入正确的值

温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-03-05
看分给你解决第一个问题
改成用
if语句
伪代码如下
如果数字大于等于1小于等于15
则正确
否则错误
第2个回答  2007-03-05
狂汗了,有很多地方没有说清楚

#include <stdio.h>
#include <string.h>

int getnum()
{
static char str[256];
static int i = 0;
static char c = 0;
static int rt= 0;
static int length = 0;
static int errorflag = 0;

for (i = 0, rt = 0, errorflag = 0;;i = 0, rt = 0, errorflag = 0)
{
scanf("%s", str);/*从输入流读入字符串*/
fflush(stdin);

if ( (length = strlen(str)) ==0 || length > 2)
{/*输入长度判断*/
printf("error!\n");
continue;
}

while ( errorflag == 0 && i < length)
{/*读入数据,如果存在非数字则报错*/
c = str[i];
if (c < '0' || c >'9')
errorflag = 1;
rt = rt * 10 + c - '0';
i++;
}

if (errorflag == 0 && rt>=1 && rt <=15)
break;

printf("error!\n");

}

return rt;
}

void main()
{
int k;
while(1)

{
k = getnum();/*死循环,自己测试所有的可能性,点右上角的叉叉关闭*/
printf("result:%d\n", k);
}
}

to haode_1 : 别发广告,我就让封过号的...本回答被提问者采纳

相关了解……

你可能感兴趣的内容

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