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楼的对!结构不会被破坏了!就是当输入字符时还是不行! 展开
很简单的问题!如果不在这个范围,要求重新输入。
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楼的对!结构不会被破坏了!就是当输入字符时还是不行! 展开
3个回答
展开全部
看分给你解决第一个问题
改成用
if语句
伪代码如下
如果数字大于等于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)
{/*读入数据,如果存在非数字则报错*/
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 : 别发广告,我就让封过号的...
#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 : 别发广告,我就让封过号的...
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询