我们在课堂上有一个问题:我们应该从用户那里得到一个数字(scanf),我们应该检查它是整数还是双数。
如果它是双精度型,我们应该写“Double”,如果它是一个整数,我们应该写“整数”
如何检查它是整数还是双?当然我们可以使用if / else。
答案 0 :(得分:1)
更新
问题确实没有完全确定。也就是说,它没有指定可能允许的整数基数。
答案 1 :(得分:1)
我将如何做,示意性地:
在第5步中首先检查整数然后检查float是很重要的,因为整数输入通常也可以解析为float,所以整数应该优先。
答案 2 :(得分:1)
...如果用户给定的数字是整数还是双数? ......我们应该从用户那里得到一个号码。 (scanf)......
让我们考虑各种意见:
double
。解析为整数的大部分文本也会解析为double
。double
,但它也是整数。 其他考虑因素:
double
。 'x'
。继续这些合理的假设。
一个。输入的字符不是太多。 整数适合long long
B.溢出/下溢/倒圆不是问题
C.如果同时解析,则将其称为整数
D.要求意味着使用scanf()
- yuk - 而非使用fgets()
const char *TestInput(void) {
char buf[100];
if (sscanf(" %99[^\n]", buf) != 1)
return "No interesting input";
char end;
long long ll;
if (sscanf(buf, "%lli %c", &ll, &end) == 1)
return "Integer";
double d;
if (sscanf(buf, "%lf %c", &d, &end) == 1)
return "double";
return "neither";
}