我无法理解为什么这正是我想要的。我在循环中使用两个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;
}
答案 0 :(得分:2)
FWIW,您的代码会调用undefined behavior。在部分
char c;
while(c!='n')
c
是一个未初始化的本地变量,具有自动存储功能,您尝试使用c
的值,但它是不确定的。
也就是说,首先scanf("%c", &c);
用于吃掉输入缓冲区中存在的换行符,因为在上次输入后按下了回车键。 You can read about it in details in another post