问题原型
代码如下:
#include<cstdio>
int main()
{
int a, b, choice;
char ch, op, get;
scanf("%dx%c%d=0", &a, &ch, &b);
getchar();
while (choice != (ch == '+' ? (-1) * b / a : b / a))
{
scanf("%c.%d", &op, &choice);//scanf会把输入区的回车(\r\n)吃掉?
getchar();
}
printf("%c", op);
return 0;
}
问题描述:
特定情况无法输出特定范围内结果(猜测是结果随机输出了,但并非运行错误之类)
代码测试示例有:
(1)1x+1=0(\r\n)
A.-1(\r\n)
B.0(\r\n)
C.1(\r\n)
D.2(\r\n)
(2) 9x-18=0(\r\n)
A.-1(\r\n)
B.0(\r\n)
C.1(\r\n)
D.2(\r\n)
(3) 2x-1=0(\r\n)
A.-1(r\\n)
B.0(\r\n)
C.1(\r\n)
D.2(\r\n)
目前无论是我的校赛网站还是codeblock或者vscode都无法成功运行,只有Clion可以(不得不说Clion真的强大)
之前也问过其他学长,他们认为是scanf会自动把输入一行的末尾的回车符取走,然而我按照他们的说法将getchar()注释掉vscode仍然无法运行成功,上网查也是说scanf在%c格式符下不会自动忽略\r\n。
也有学长说getchar与scanf竞争ABCD四个选项字母,然而此处我想不懂,scanf不会取走\r\n,而将他们留在输入流中,那么为什么会出现竞争?
(鞠躬)请教大家,希望不吝赐教。