c语言如何判断从键盘输入的是符号还是数字呢?
c语言如何判断从键盘输入的是符号还是数字呢?救命啊!悬赏分:0-离问题结束还有14天22小时c语言编程的时候,想弄这样一个程序。如果从键盘输入的是数字,包括正数与负数的时...
c语言如何判断从键盘输入的是符号还是数字呢?救命啊!
悬赏分:0 - 离问题结束还有 14 天 22 小时
c语言编程的时候,想弄这样一个程序。如果从键盘输入的是数字,包括正数与负数的时候,继续执行后面的计算程序;如果从键盘输入的是数字以外的符号,比如26个英语字母或者问号?等等的符号的时候,要求重新输入。怎么编写这个判断语句?
问题补充:main()
{
float x, y;
reinput: printf("Please input x\n");
scanf("%f", &x);
(在此处插入判断x是不是数字的语句,如果不是数字goto: reinput;)
y = x;
printf("%f\n", y);
}
qian mian de 回答太简略了。我干脆又写了一个程序,希望高人能教我,如何补充上面这个程序(括号内)。请高人不吝赐教。 展开
悬赏分:0 - 离问题结束还有 14 天 22 小时
c语言编程的时候,想弄这样一个程序。如果从键盘输入的是数字,包括正数与负数的时候,继续执行后面的计算程序;如果从键盘输入的是数字以外的符号,比如26个英语字母或者问号?等等的符号的时候,要求重新输入。怎么编写这个判断语句?
问题补充:main()
{
float x, y;
reinput: printf("Please input x\n");
scanf("%f", &x);
(在此处插入判断x是不是数字的语句,如果不是数字goto: reinput;)
y = x;
printf("%f\n", y);
}
qian mian de 回答太简略了。我干脆又写了一个程序,希望高人能教我,如何补充上面这个程序(括号内)。请高人不吝赐教。 展开
6个回答
展开全部
C语言中,可以根据scanf()函数的返回值,判断输入的数据是否符合程序要求,该函数说明如下:
int scanf(const char *format, ...);
this functions return the number of input items successfully matched and assigned, which can be fewer than provided for, or even zero in the event of an early matching failure. 该函数返回成功匹配并赋值给变量的个数,有可能少于想读的数据个数,甚至有可能是0(如果第一个格式串就匹配失败的情况下)。
如果格式串是%d,则,当用户输入一个非数字字符时,scnaf()就会匹配失败,返回0
利用这个特点,可以在程序中进行输入数据的有效判断。因为系统不会自动清理缓存中的数据,所以,在读入错误数据时,要及时清理缓存,以免造成死循环。如:
void main()
{
int n;
while( scanf("%d%*c", &n)!= 1 ) //用%*c来清除回车确认符和不合适的字符
{
printf("input error,please re-in:");
fflush(stdin); //清除缓存,但此命令在linux下不起作用。windows可用。前面的%*c可以控制不会死循环。
}
printf("ur input is :%d\n", n );
}
展开全部
#include <stdio.h>
void main()
{
float x,y;
while(! scanf("%f",&x)) //如果没有正确读入
{
fflush(stdin); //清除输入流的错误信息
printf("Please input a float number:\n");
}
printf("%f\n",x);
}
给你简单的写了一下,从scanf返回值来判断是否成功读入数据,如果没有,就重新输入。
用了while循环,建议你不要用goto语句,goto语句是一个不好的习惯。
void main()
{
float x,y;
while(! scanf("%f",&x)) //如果没有正确读入
{
fflush(stdin); //清除输入流的错误信息
printf("Please input a float number:\n");
}
printf("%f\n",x);
}
给你简单的写了一下,从scanf返回值来判断是否成功读入数据,如果没有,就重新输入。
用了while循环,建议你不要用goto语句,goto语句是一个不好的习惯。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输入的东西要存在变量里,而变量的类型是决定了,是什么,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
static int EnsureInt()
{
char a[100] = {0};
int i = 0,j = 1;
printf("Please input you want to set-num : \n");
scanf("%s", a);
printf("before while\n");
while(i < strlen(a))
{
if(a[0] != 45)
{
if((a[i] >= 48) && (a[i] <= 57))
{
i++;
}
else
{
break;
}
}
else if(a[0] == 45)
{
if((a[j] >= 48) && (a[j] <= 57))
{
j++;
i = j;
}
else
{
break;
}
}
}
printf("after while\n");
if(i < strlen(a))
{
printf("Input number invalid!\n");
return EnsureInt();
}
return atoi(a);
}
int main()
{
int x;
x=EnsureInt();
printf("x=%d\n", x);
return 0;
}
这段程序是保证输出为整数的,你参考一下吧
#include <stdlib.h>
#include <string.h>
#include <math.h>
static int EnsureInt()
{
char a[100] = {0};
int i = 0,j = 1;
printf("Please input you want to set-num : \n");
scanf("%s", a);
printf("before while\n");
while(i < strlen(a))
{
if(a[0] != 45)
{
if((a[i] >= 48) && (a[i] <= 57))
{
i++;
}
else
{
break;
}
}
else if(a[0] == 45)
{
if((a[j] >= 48) && (a[j] <= 57))
{
j++;
i = j;
}
else
{
break;
}
}
}
printf("after while\n");
if(i < strlen(a))
{
printf("Input number invalid!\n");
return EnsureInt();
}
return atoi(a);
}
int main()
{
int x;
x=EnsureInt();
printf("x=%d\n", x);
return 0;
}
这段程序是保证输出为整数的,你参考一下吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
判断ASCII值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询