#include <stdio.h>
int main() {
float change = 0.0;
printf("O hai! ");
while (change <= 0) {
printf("How much change is owed?\n");
scanf("%f\n", &change);
}
return 0;
}
如果输入为负数则结果是无穷无尽的&#34;欠了多少变化?&#34;
答案 0 :(得分:1)
当你要求计算机丢弃空格时,它是如何知道它做了什么的?答:只要它读取的内容不是空格。
你要求它在阅读一个数字后丢弃空格。因此,在读取数字然后读取一些非空格之前,它才会完成。
这真的没有任何意义,因为输入数字后没有人会输入非空格。
这里有一个提示虽然可以为你节省未来的痛苦:如果你真正想做的是读取输入的行然后解析它,使用一个读取一行的函数然后一些用于解析该输入的代码。
答案 1 :(得分:1)
scanf
,但由于格式字符串\n
中的"%f\n"
,在输入数字后,scanf
等待下一个非空格字符到返回。请注意,格式说明符中的空格允许scanf
消耗任何空格字符的序列,而不仅仅是一个,因此只要只提供空白字符,它就会“挂起”流。
将scanf("%f\n",&change)
更改为scanf("%f",&change)
。