当前位置: 代码迷 >> C语言 >> [求助]输入一个数字或字符,用什么函数可以识别出输入的是字符还是数字?
  详细解决方案

[求助]输入一个数字或字符,用什么函数可以识别出输入的是字符还是数字?

热度:166   发布时间:2007-10-27 14:14:37.0
如果是数字再atoi()变成数字就好了....
----------------解决方案--------------------------------------------------------

还真没有遇到过这样的问题呢?LZ有想发.不错.先顶起来看看.等高人来.


----------------解决方案--------------------------------------------------------
回复:(talentzhu)[求助]输入一个数字或字符,用什么...

#include<iostream>
#include<cstring>
#include<iomanip>
using namespace std;
main()
{
cout<<"insert a string:"<<endl;
char a;
int sum=0;
int sign=1;
cin>>a;
while(a!='#')
{
a-=0x30;
if((0x1<=a)&&(a<=0x9))
{
sum*=10;
sum+=a;
}
else
{
cout<<"the string is a charstring!"<<endl;
sign=0;
break;
}
cin>>a;
}
if(sign)
cout<<"the string is a number= :"<<sum<<endl;
}
不知道你说的是这个意思不?


----------------解决方案--------------------------------------------------------
回楼上:
#include<iostream>
#include<cstring>
#include<iomanip>
using namespace std;
main()
{
cout<<"insert a string:"<<endl;
char a; //首先,我学的是C,我不知道在C++中char的分配空间是多少,在我电脑里用C时是一个字节空间,就算用用整形变量强制输入,他能表示的范围也才-127~127之间,太少了,不合要求。
int sum=0;
int sign=1;
cin>>a;
while(a!='#')
{
a-=0x30;//我不明白这什么意思。
if((0x1<=a)&&(a<=0x9))
{
sum*=10;
sum+=a;
}
else
{
cout<<"the string is a charstring!"<<endl;
sign=0;
break;
}
cin>>a;
}
if(sign)
cout<<"the string is a number= :"<<sum<<endl;
}
不知道你说的是这个意思不?

----------------解决方案--------------------------------------------------------

答楼上问:
(1)我这里的char a;是一个临时变量。用来逐位读入输入的字符串中的字符。在c/c++中它都占用一个字节。
(2)0x30是十六进制的30也就是十进制的48.原因:按字符读0-9的数字时,读入的是它的ASCII码。分别为30H-39H。
建议楼主看下汇编方面的书


----------------解决方案--------------------------------------------------------
再者你运行一下我的程序就能体会到了。
再不行你就单步调试一下
----------------解决方案--------------------------------------------------------

但我想输入超过9的数字,是数字,不是用字符拼凑。


----------------解决方案--------------------------------------------------------

我定义了一个共用体,
#include <stdio.h>
union number
{
double d;
char s[64];
}num;

union number select();

void main()
{
select();
}
union number select()
{
printf("please input any thing !\n");
if(scanf("%lf",&num.d))
printf("this is a number:%lf\n",num.d);
else
{
gets(num.s);
printf("this is a string:%s\n",num.s);
}
return num;
}


----------------解决方案--------------------------------------------------------
用一个判断就可了
ch>='0'&&ch<='9'就是数字
ch>='a'&&ch<='z'||chch>='A'&&ch<='Z'就是字母
具体程序就劳驾楼主了

----------------解决方案--------------------------------------------------------
对不起,发错了,麻烦版主删一下
----------------解决方案--------------------------------------------------------
  相关解决方案