【发布时间】:2016-10-21 15:31:28
【问题描述】:
我不明白为什么这正是我想要的。我在循环中使用两个 scanf 的部分让我感到困惑。我使用 devcpp 编译它。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int dend, dsor, q, r;
char c;
while(c!='n')
{
printf("enter dividend: ");
scanf("%d", &dend);
printf("enter divisor: ");
scanf("%d", &dsor);
q=dend/dsor;
r=dend%dsor;
printf("quotient is %d\n", q);
printf("remainder is %d\n", r);
scanf("%c", &c);
printf("continue? (y/n)\n");
scanf("%c", &c);
}
system("PAUSE");
return 0;
}
【问题讨论】:
-
do...while在哪里? -
这不是“解释我的代码”网站。你有什么问题?您是否阅读了函数的手册页?
-
考虑在您完成提取 second 数字后,输入流中保留的尾随换行符发生了什么。一个调试器和一些单步操作可能会在这里起到很大的帮助。
-
相关:to this question(和 数百 喜欢它)解决方案之所以有效,是为了避免您在此处使用的其他脆弱解决方案。例如,在输入第二个数字时,添加一个空格,然后按键盘上的 Enter 键,看看会发生什么。
-
您可以并且可能应该在“继续”提示之后使用单个
scanf(" %c", &c);调用。前导空格读取换行符和前导空格等。您应该检查每个scanf(),以确保成功转换正确数量的值(if (scanf(…) == 1)在每种情况下在此代码中恰好是正确的,但您应该检查预期值的数量)。
标签: c while-loop scanf