1

我希望您能帮助我理解为什么当我输入除 1 以外的任何数字时此功能不会停止。

int main(void) {

double sum,v;

while (scanf("%lf",&v)==1) {
    printf("\t%.2f\n", sum += v);

}

看起来它应该在输入与 1 不同时停止。我相信它与条件有关,也许它会在我认为它之前检查一些东西。

4

2 回答 2

4

该函数scanf返回匹配和填充的项目数,而不是它读取的实际值。

成功完成后,这些函数将返回成功匹配和分配的输入项的数量;如果发生早期匹配失败,此数字可以为零。如果输入在第一次匹配失败或转换之前结束,则返回 EOF。

因此,在您的代码scanf中将始终返回1成功读取。您应该v改为测试(但不使用==)。

于 2012-05-13T20:43:01.307 回答
0

scanf 成功返回成功读取的项目数。因此,您需要另外检查 if v == 1

于 2012-05-13T20:45:37.900 回答