我使用if条件编写了各种程序,并且它们似乎只在我使用整数或浮点常量时才起作用。每当我使用char常量时,if条件完全忽略它。这是一个例子:
#include <stdio.h>
int main(void)
{
int age;
char status,gender;
printf("Enter age, marital status and gender");
scanf("%d%c%c",&age,&status,&gender);
if((status=='m')||
(status=='u' && gender=='m' && age>35) ||
(status=='u' && gender=='f' && age>25))
printf("Driver is insured" );
else
printf("Driver is not insured");
}
例如,如果我输入状态为u
,性别为m
且年龄为38
,则表示该驱动程序未投保。这是一个成绩单:
Enter age, marital status and gender
39 u m
Driver is not insured
Press any key to continue . . .
答案 0 :(得分:1)
在检查if
条件之前,请确保是否通过打印所有input
变量正确扫描所有输入。
其缓冲问题(stdin
未在第一次输入(int)
后清除,第二次输入为char
,然后您点击ENTER/White space
,这也是有效字符强>)
scanf("%d%c%c",&age,&status,&gender);
替换为
scanf("%d %c %c",&age,&status,&gender); /** space after %c will consume whitespace or ENTER */
答案 1 :(得分:1)
这是由于您正在使用的格式说明符。
%c
scanf
格式说明符使用任何单个字符,包括空格字符。因此,如果您的输入为39 u m
,则status
中会存储一个空格,而u
中会存储gender
。
您需要在每个%c
之前添加一个空格来使用空格:
scanf("%d %c %c",&age,&status,&gender);