【发布时间】:2016-03-29 10:35:51
【问题描述】:
我的问题是字符的 scanf 被跳过并且它不检查扫描字符以查看我是否想再次重复该程序,为什么会发生这种情况?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int number,check;
char rep;
printf("Program to check if number is even or odd");
while( (rep!='N') || (rep!='n') )
{
printf("\n\nPlease enter the number: ");
scanf("%d",&number);
check = number%2;
if(check != 0)
printf("\nNumber is odd.");
else
printf("\nNumber is even.");
printf("\n");
printf("Do you want to enter number again?\nY=yes\tN=no\n");
scanf("%c", &rep);
}
return 0;
}
【问题讨论】:
-
这里有数百个(甚至可能是数千个)重复项,但问题的要点是,在您读取数字后,换行符仍在输入缓冲区中。猜猜下一个
scanf电话会读到什么...... -
和
char rep=0;...while(rep!='N' && rep!='n'){