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

来源:百度知道 编辑:UC知道 时间:2024/05/09 16:20:08
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. 需要控制输入的数的范围的话,可以使用一个判断语句或者调用一个函数

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

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

看分给你解决第一个问题
改成用
if语句
伪代码如下
如果数字大于等于1小于等于15
则正确
否则错误

狂汗了,有很多地方没有说清楚

#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)
{/*读入数据,如果存在非数字则报错*/