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

C语言如果控制使输入的数必需在1~15的范围!很简单的问题!如果不在这个范围,要求重新输入。scanf("%d",&x);while(x<1||x>15){printf(... 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楼的对!结构不会被破坏了!就是当输入字符时还是不行!
展开
 我来答
mlper_
2015-09-09 · TA获得超过8017个赞
知道大有可为答主
回答量:4863
采纳率:78%
帮助的人:1250万
展开全部
  1. 需要控制输入的数的范围的话,可以使用一个判断语句或者调用一个函数

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

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

xxl_cc
2007-03-05 · TA获得超过203个赞
知道小有建树答主
回答量:431
采纳率:0%
帮助的人:141万
展开全部
看分给你解决第一个问题
改成用
if语句
伪代码如下
如果数字大于等于1小于等于15
则正确
否则错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
baihacker
2007-03-05 · TA获得超过1454个赞
知道小有建树答主
回答量:773
采纳率:100%
帮助的人:1224万
展开全部
狂汗了,有很多地方没有说清楚

#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 : 别发广告,我就让封过号的...
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式