怎样判断输入的是否是int型的整数?

Chrisluto 2009-03-26 04:11:35
我在编译一个程序,要求能判断输入是否是int型的,而不是char型或是float型,如果不是就返回错误,怎样实现呢?高手帮帮忙吧!
...全文
2226 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
shijiashabi 2012-08-11
  • 打赏
  • 举报
回复
int i;
cin>>i;
if (!cin)
cout<<"输入错误.."<<endl;
jackyjkchen 2012-07-28
  • 打赏
  • 举报
回复
数字和字母好判断,一个数字是int还是cahr还是float就不好说了……

这时候最省事的办法是用iostream,保证类型安全,iostream少数几个胜过C语言IO的地方
pathuang68 2012-07-28
  • 打赏
  • 举报
回复
楼主的问题本身就有问题,比如我输入一个1,你说它是char还是short还是int呢?

应该说一切由接收输入的那个变量来决定的。
A2415526569 2012-07-28
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

C/C++ code
#include <stdio.h>
#include <string.h>
char s[80];
int i;
char c;
int main() {
while (1) {
printf("Input a integer:");fflush(stdout);
rewind(stdin);
fgets(s,80……
[/Quote]
12楼的专家可以把其中的几个if语句的含义解释一下吗?本人初学,有很多不懂的地方,谢谢啦!
A2415526569 2012-07-28
  • 打赏
  • 举报
回复 1
[Quote=引用 2 楼 的回复:]

输入的时候 char in;
cin>>in;

根据每个字符的ASCII来判断 .

in>='0'&&in<='9'.这样排除了 字幕和小数点
[/Quote]
二楼的这个好像不行吧,如果输入的是大于9的整数,它的ASCLL就不在‘0’到‘9’之间,可它的的确确是整数呀!
赵4老师 2012-07-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
C/C++ code
#include <stdio.h>
#include <string.h>
char s[80];
int i;
char c;
int main() {
while (1) {
printf("Input a integer:");fflush(stdout);
rewind(stdin);
fg……
[/Quote]
正解!(^_^)
wizard_tiger 2012-07-25
  • 打赏
  • 举报
回复
定义一个char型用ASCII码判断应该可以
至于1 == scanf("%d",&a);
scanf函数是返回正确输入的个数,如果输入字符应该也会返回正确吧!
因为scanf接收的是这个字符的ASCII码或是字符串的首地址。(个人是这么认为的)
赵4老师 2012-07-24
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
char s[80];
int i;
char c;
int main() {
while (1) {
printf("Input a integer:");fflush(stdout);
rewind(stdin);
fgets(s,80,stdin);
if (strlen(s)>10) {
printf("Input too long(>9)!\n");
continue;
}
if (2==sscanf(s,"%d%c",&i,&c)) {
if ('\n'==c) {
printf("%d is a integer.\n",i);
break;
}
}
if ('\n'==s[strlen(s)-1]) s[strlen(s)-1]=0;
printf("\"%s\" is NOT a integer!\n",s);
}
return 0;
}
CrazyAsk 2012-07-23
  • 打赏
  • 举报
回复
wait
c_fresher 2009-04-03
  • 打赏
  • 举报
回复
直接想到的只能以char接受进来判断了
int用ascii判断
float判断有没有小数点咯
Chrisluto 2009-04-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 actionecho 的回复:]
你测试了吗?你是怎么测试的,竟然成功了。厉害!!!
[/Quote]
用VS建立一个控制台的项目:

actionecho 2009-03-28
  • 打赏
  • 举报
回复
你测试了吗?你是怎么测试的,竟然成功了。厉害!!!
Chrisluto 2009-03-28
  • 打赏
  • 举报
回复
虽然说2楼是正解,但是我说的是用C语言,更关键的是我定义的是int型.
我也是个菜鸟,4楼的代码貌似正确(我没有试过)。
根据三楼的我测试了一下,测试成功,大家在帮忙看看有什么不妥:
#include <stdio.h>
#include <conio.h>

int main()
{
int a;
printf("Pls enter an integer number:");
if(1 == scanf("%d",&a))
{printf("right"); getch();}//正确输入整型
else
{printf("wrong"); getch();}//输入错误
}
  • 打赏
  • 举报
回复
int a;
while(cin>>a)
如果接受的不是数字,会退出while的.
na2650945 2009-03-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 downmooner 的回复:]
输入的时候 char in;
cin>>in;

根据每个字符的ASCII来判断 .

in>='0'&&in <='9'.这样排除了 字幕和小数点
[/Quote]
正解。
branmiding 2009-03-26
  • 打赏
  • 举报
回复
俺是菜鸟,根据楼上启发编的C,不知道对不?
C:
#include"stdio.h"/*包含头文件*/
main() /*主函数*/
{
int a,b; /*定义两个变量,a接受输入字符,b用作判断*/
printf("a="); /*请求输入给a*/
b=scanf("%d",&a);/*a获得输入字符,b得到scanf函数的值*/
printf("b=%d\n",b);/*输出b的值*/
} /*结束*/
然后看b的值,1:a得到的是个int型数据 0:a得到的是非int型数据
我只用int和char两种数据类型判断过,不知道float的好使不
traceless 2009-03-26
  • 打赏
  • 举报
回复
int foo()
{
int a;
if(1 == scanf("%d",&a))
return 1; //正确输入整型
else
return 0; //输入错误
}


因为scanf()函数返回的值为:1、正确按指定格式输入变量的个数;2、能正确接收到值的变量个数。

downmooner 2009-03-26
  • 打赏
  • 举报
回复
输入的时候 char in;
cin>>in;

根据每个字符的ASCII来判断 .

in>='0'&&in<='9'.这样排除了 字幕和小数点
Chrisluto 2009-03-26
  • 打赏
  • 举报
回复
C语言的,在具体点说就是我原来定义了一个int型的,但是要求输入的时候也必须是int型的,如果不是就返回错误。

33,319

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧