[求助]关于输入判断的问题
如何判断输入的数据是字符还是数字?
如在循环中
int x;
do
{
scanf("%d",&x);
printf("%d",x)
}
while();/*要求在这里判断:如果是非数字就重新输入,该如何写?*/
。。后续语句。。
谢谢
再次谢谢帮解决问题的朋友,问题的结果我贴到这里:
#define LEN 20
#include"stdio.h"
#include <stdlib.h>
main()
{
char x[LEN];
int i,sign,answer;
do
{
i=0,sign=1;
printf("Input:");
scanf("%s",&x);
while(x[i]){if(x[i]<48||x[i]>57) {sign=0;break;}i++;}
if(sign==1) {break; printf("%s\n",x); }
}
while(1);
answer=atoi(x); /*将字符串转换为整型*/
printf("%d",answer);
}
[此贴子已经被作者于2007-3-13 19:00:46编辑过]
----------------解决方案--------------------------------------------------------
数字不是有对应的ASCLL码吗?
----------------解决方案--------------------------------------------------------
以下是引用PcrazyC在2007-3-12 15:48:37的发言:
数字不是有对应的ASCLL码吗?
只有0-9的啊
0-9
48-57
那输入大于一位的如何区分?
----------------解决方案--------------------------------------------------------
我没有想到直接判断的办法但是我想到了其他方法
char a[100];
int b;
while(1)
{
gets(a);//干脆把数字也当作字符
for(i=0;a[i]!='\0',i++)
{
if(('a'<=a[i]&&a[i]<='z')||('A'<=a[i]&&'Z'>=a[i]))//是字母就跳出来
breeak;
}
if(a[i-1]=='\0')//a[i-1]=='\0'说明字符串中没有字母可以跳出
break;
else//否则继续
comtinue;
}
b=atoi(a);在转换成数字
我只是写了思路,上面的程序并不完整,没有经过调试,可能有语法或者逻辑错误
----------------解决方案--------------------------------------------------------
指出一个错误,上面那句
if(a[i-1]=='\0')//a[i-1]=='\0'说明字符串中没有字母可以跳出
应该是:
if(a[i]=='\0')//a[i]=='\0'说明字符串中没有字母可以跳出
还有错误你自己改吧,我上课去也
----------------解决方案--------------------------------------------------------
do
{
scanf("%d",&x);
printf("%d",x)
}while(!(x>='0' && x<='9'))
----------------解决方案--------------------------------------------------------
应该有解决的办法,今天想不出来不吃饭
----------------解决方案--------------------------------------------------------
6楼的好象有点不大对,
----------------解决方案--------------------------------------------------------
唉,难道我连这饭都无福消受,当先输入数字再输入其它的时候,返回的时候他会将前面的数字返回,这种情况好像没法解决,楼主,看样子,你又害我了.
----------------解决方案--------------------------------------------------------
怎么样才能得到输入屏幕上的字符串,有谁知道吗?救命啊
[此贴子已经被作者于2007-3-12 17:49:56编辑过]
----------------解决方案--------------------------------------------------------