C++输入数字和字符的问题

有一个 输入1-5的数来选择的菜单,我想制作一个 判定用户是输入的数字还是其他字符的函数,要是其他字符的话就提示错误并重新输入,应该怎么做呢?

具体代码就不写了,C语言有几个库函数可以解决你的问题:
isdigit(int ch) 判断 ch 是不是数字
isspace(int ch) 判断 ch 是不是空格,回车,制表符等空白
iscntrl(int ch) 判断 ch 是不是控制符
isalpha(int ch) 判断 ch 是不是字母
islower(int ch) 判断 ch 是不是小写字母
isupper(int ch) 判断 ch 是不是大写字母

使用这些函数应该能够解决你的问题

参考资料:http://baike.baidu.com/view/1426333.htm

温馨提示:内容为网友见解,仅供参考
第1个回答  2009-08-29
楼上的程序无法判断用户是否输入的是字母还是数字。
建议用getchar函数
第2个回答  2009-08-29
public bool IsNumbers(string s)
{
try
{
double d = Convert.ToDouble(s);
}
catch
{
Messagebox.show("输入有错误");
return false;
}
return true;
}
第3个回答  2009-08-29
把数字也当做字符来看待..

判断的时候
switch(input){
case '1' :printf("判断是否为1 当做字符来判。");break;
case '5' :printf("5");break;
default :printf("error");
}

c++编程,怎么让玩家输入数字又可以字母,又可以输入字符串
方法:先将输入的数据保存到字符串中,如果输入的是数字,可以通过atoi()函数转换成数字。扩展:atoi( ) 函数会扫描参数 nptr字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过isspace( )函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\\0')才结束转换,...

C++ for loop 输入字符串及数字的问题
很早以前遇到过这个问题,貌似是因为STDIO或者C++的流库,的标准输入都是用的一个静态的缓冲区的原因,具体原因找流库的源码来看看应该就知道了。解决办法倒是好办,在输入循环完成的时候刷新下缓冲区就好了。STDIO的是flushall,流库的忘了,定位到iostream然偶搜索flush找找,很容易找到这个函数。

c++ 如何处理输入同时有字母和数字的情况?
cout << "请输入字符串:" << endl;cin >> a;n=strlen(a);\/\/计算a的长度 cout<<"输入字符总数为:"<<n<<endl;do{ s = check(a,n);} while(n-=s);\/\/当统计字符的总数等于输入字符长度时结束 return 0;} 加了一个判读语句已可以实现数字在最后出现的情况 ...

...分别统计其中的英文大写字母,小写字母,数字字符和其他字符...
求字符串的长度(字符总数):sizeof(ch),求出字符串占有几个字节,因为一个字符占一个字节,所以字节数=字符数。创建一个数组来存放每个字符对应的ASCII码,然后根据ASCII码来判断是什么字符。大写英文字符从65-90,小写英文字符从97-122,数字字符为48-57,剩下的自然是其他字符了。设置一个循环判断...

C++如何判断输入的数字还是字母
例如:\/\/参考代码如下:#include "iostream"#include "stdio.h" #include <string.h>using namespace std; int main(){char ch;cin>>ch;if(ch>='0'&&ch<='9') cout<<"该字符为数字"<<endl;else if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) \/\/字符区分大小写 cout<<"...

用C++程序编写:判断一个输入的字符是字母.数字.还是其他符号
cout << "你输入的是小写英文字母!" << endl ;} else if(a > 47 && a <= 57){ cout << "你输入的是数字!" << endl ;}else { cout << "你输入的是其他符号!" << endl ;} printf("Hello World!\\n");return 0;} 哥们给点分啊,这玩意使用于输入一个字符判断,是不是你...

C++编程问题:为什么以下代码运行后输入数字循环正常,但输入字母就会陷入...
cin函数会直接取得这些残留数据而不会请求键盘输入.intenter=0;\/\/enter为整形数据在你输入字母按回车时时,cin会认为enter没有输入(非法输入),不会读取缓冲器的字母;等下次再读时,发现缓冲区有数据进行读取,因为仍是字符型数据,便还是认为enter没有输入,不会读取缓冲器的字母;因此无限循环 ...

c++从键盘上输入一串字符,统计其中字母字符,数字字符,其他
在C++编程中,使用istream类的get()成员函数从键盘输入一串字符时,可以对输入数据进行分类统计。首先,了解get()函数的基本用法,其原型为int get();此函数从输入流读入一个字符,返回值为字符的ASCII码。当读取到输入流结束时,返回值为EOF,即End of File的缩写,其值为-1。在实际应用中,get()...

C++中4种方式把字符串和数字连接起来
在C++中,将字符串与数字连接起来,主要存在四种方式,而每种方式在具体应用中,都需要考虑到内存管理和效率问题。首先,使用`stringstream`进行字符串与数字的连接。但需注意,`stringstream`在构造时会消耗大量内存,且内存回收机制并不主动,这可能导致在程序中反复读写大量数据时,内存消耗急剧上升。此时...

c++ 输入字符串以及输出 的相关问题
第一个问题:“a[0]和zimu++写成两行就可以正确运行,直接写a[0]=zimu++就比正确答案少1”a[0]和zimu++写成两行的情况下:\/\/如果此时zimu = 0zimu++\/\/执行完此句,zimu = 1a[0]=zimu\/\/那么,a[0] = 1写a[0]=zimu++的情况下:\/\/如果此时zimu = 0a[0] = zimu++\/\/那么,a[0]...

相似回答