【发布时间】:2011-05-03 14:22:57
【问题描述】:
问题是我不能使用 atoi 或任何其他类似的函数(我很确定我们应该依赖数学运算)。
int num;
scanf("%d",&num);
if(/* num is not integer */) {
printf("enter integer");
return;
}
我试过了:
(num*2)/2 == num
num%1==0
if(scanf("%d",&num)!=1)
但这些都不起作用。
有什么想法吗?
【问题讨论】:
-
“这些都不起作用”是什么意思?最后一个是怎么试的?
-
@David 我把它们放在 if 语句中,有什么令人困惑的地方?
-
“整数类型”是什么样的输入?一个只由数字组成的?前面可以加减号吗?
-
您列出了两个条件和一个 if 语句。我假设您没有在 if 语句中包含 if 语句,所以我不知道您在那里做了什么。 (您只是替换了 if 语句,还是比这更重要?)除了“这些都不起作用”之外,您也没有提供任何故障模式的线索。没有编译?运行时错误?没有按您预期的方式工作(如果是,您的预期是什么?)?
-
我知道我迟到了,但我想你“不能”(意思是:不允许)使用
atoi(),因为这个想法是你通过步行“手动”进行检查通过字符并检查它们是否在 0-9 范围内。因此很可能scanf()也不应该被使用。