为什么要滤掉前边scanf遗留下的回车或空格?getchar()的作用只是删掉这里的换行符吗?为什么删掉getchar();后输入78就会跳过Y/N直接得78了?

#include<stdio.h>
main(){
char win;
int mark;
printf("输入初始分数:");
scanf("%d",&mark);
getchar();//滤掉前边scanf遗留下的回车或空格
printf("Y/N?\n");
win=getchar();
if((win=='Y')||(win=='y'))
mark=mark+5;
if(mark>100)
mark=100;
printf("最后分数是%d\n",mark);
return 0;
}