分支程序设计(成绩加上获奖信息)

首先输入成绩,如果在大赛中获奖,则加5分,成绩不能超过100分,下面这个代码有点小问题
#include<stdio.h>
int main(void)
{
int a;
char win;
printf("Please input your mark:\n");
scanf("%d",&a);
printf("Did you win a prize in the competition(Y/N)?\n");
scanf("%c",&win);
if(win=='Y')
a=a+5;
if(a>100)
a=100;
printf("Your final mark is:%d\n",a);
return 0;
}
这个代码运行的话要一起输入成绩和Y/N,而不是一个一个的输入
正确的代码是下面这个
#include<stdio.h>
int main(void)
{
int a;
char win;
printf("Please input your mark:\n");
scanf("%d",&a);
getchar();
printf("Did you win a prize in the competition(Y/N)?\n");
scanf("%c",&win);
if(win=='Y')
a=a+5;
if(a>100)
a=100;
printf("Your final mark is:%d\n",a);
return 0;
}
我不明白为什么要加一个getchar()呢?
请求大佬支援,非常感谢

scanf("%d",&a);这里输入整数后你敲击了回车键,就会额外输入一个回车符,所以需要用getchar()来接收这个回车符,否则,在
scanf("%c",&win);这一句的时候, win变量读取的就是这个回车符了。

scanf("%c",&win);会接收任何字符。前面scanf("%d",&a);后你除了输入一个整数外,还输入了回车键,这样%c格式接收的话,会自动接收换行符的。用getchar()可以接收到换行符,这样scanf("%c",&win);就可以正确接收到新的一行你输入的字符了