一个弱弱的问题`
大家好!我是个新手..这是我做的一个题目..不知道为什么得出的结论都是不愿意投保!,请大侠请教下!#include<stdio.h>
void main()
{
char a,b;
int age;
printf("司机的详细资料\n");
printf("司机是否结婚:(y/n)");
scanf("\n%c",&a);
printf("司机的性别:(n/v)");
scanf("\n%c",&b);
printf("司机的年龄:");
scanf("\n%d,&age");
if((a=='y')&&(b=='n')&&(age>30))
printf("愿意投保!\n");
else if((a=='y')&&(b=='v')&&(age>25))
printf("愿意投保!\n");
else
printf("不愿意投保!\n");
}
----------------解决方案--------------------------------------------------------
#include<stdio.h>
void main()
{
char a,b;
int age;
printf("司机的详细资料\n");
printf("司机是否结婚:(y/n)");
scanf("%c",&a);
printf("司机的性别:(n/v)");
fflush(stdin); //清除缓存
scanf("%c",&b);
printf("司机的年龄:");
fflush(stdin);
scanf("%d",&age);
if((a=='y')&&(b=='n')&&(age>30))
printf("愿意投保!\n");
else if((a=='y')&&(b=='v')&&(age>25))
printf("愿意投保!\n");
else
printf("不愿意投保!\n");
}
----------------解决方案--------------------------------------------------------
#include<stdio.h>
void main()
{
char a,b;
int age;
printf("司机的详细资料\n");
printf("司机是否结婚:(y/n)");
scanf("\n%c",&a);
printf("司机的性别:(n/v)");
scanf("\n%c",&b);
printf("司机的年龄:");
scanf("\n%d,&age" ); ---->scanf("%d",&age);
if(a=='y')&&(b=='n')&&(age>30))
printf("愿意投保!\n");
else if((a=='y')&&(b=='v')&&(age>25))
printf("愿意投保!\n");
else
printf("不愿意投保!\n");
}
----------------解决方案--------------------------------------------------------
因为回车在%c的情况下是不被scanf忽略的,如果第一次输入y后按回车,则第二个scanf会将回车键赋给变量b的,
所以在每一个scanf后面加一个getchar()来吃掉回车
----------------解决方案--------------------------------------------------------
不是那个地方的问题,scanf("\n%c",&b);这个地方的'\n'已经吃了回车
主要是他一个"打错地方了
----------------解决方案--------------------------------------------------------
谢谢大家...我是借别人北大青鸟的书来看的...
fflush(stdin); //清除缓存
在书里都没有详细说明.但在书里程序就有出现.
能不能解释在什么地方要用fflush(stdin);
----------------解决方案--------------------------------------------------------