以下是问题
为什么以下程序在提示第一个答案后没有提示其他答案?
以下是其他一些细节
(c)保险公司遵循以下规则来计算保费。 (1)如果一个人的健康状况良好且该人年龄在25至35岁之间并且居住在一个城市并且是男性,那么保险费是卢比。 4‰,他的政策金额不能超过卢比。 2万卢比。 (2)如果一个人满足所有上述条件,除了性别是女性,那么保险费是卢比。 3‰,她的政策金额不能超过卢比。 1万卢比。 (3)如果一个人的健康状况不佳且该人年龄在25至35岁之间并且住在一个村庄并且是男性,那么保险费是卢比。 6‰和他的政策不能超过卢比。 10,000。 (4)在所有其他情况下,该人没有投保。 编写一个程序来输出该人是否应该投保,他/她的保险费率和他/她可以投保的最高金额。
这是我的代码
/* pg 88 G-c
06/07/2012 6:14pm */
#include<stdio.h>
#include<conio.h>
void main() {
char health,live,sex;
int age,insured=0,policy=0,premium;
printf("where is the person living? C or c for city OR V or v for village");
scanf("%c",&live);
printf("enter the health of the person: E or e for excellent OR P or p for poor");
scanf("%c",&health);
printf("what's the Sex of the person? M or m for Male OR F or f for Female");
scanf("%c",&sex);
printf("enter the age of the person");
scanf("%d",&age);
if((health=='E'||health=='e')&&(age>=25&&age<=35)&&(live=='C'||live=='c')&&(sex=='M'||sex=='m')) {
insured=1;
premium=4;
policy=200000;
}
else if((health=='E'||health=='e')&&(age>=25&&age<=35)&&(live=='C'||live=='c')&&(sex=='F'||sex=='f')) {
insured=1;
premium=3;
policy=100000;
}
else if((health=='P'||health=='p')&&(age>=25&&age<=35)&&(live=='V'||live=='v')&&(sex=='M'||sex=='m')) {
insured=1;
premium=6;
policy=10000;
}
if(insured==1) {
printf("the person is insured");
printf("the premium of the person is %d Rs. per thousand",premium);
printf("the policy cannot exceed Rs. %d", policy);
}
else
printf("the person is not insured");
}
这是问题 当屏幕要求人居住的地方时,我输入C,c或V,v,当我按下输入时,它显示第二个问题,即人的健康状况,并立即询问第三个问题,即人的性别。
它没有给我输入第二个问题的值的地方或选项:(
我想知道为什么会这样......请帮助我 感谢致敬 Saksham
答案 0 :(得分:5)
当您按Enter键时,您还会添加\n
字符,scanf()
很乐意接受该字符作为下一个输入。在您的情况下,最简单的解决方案是告诉scanf()
读取下一个非空白字符。这可以这样做:
scanf(" %c",&health); /* note the added space before %c! */
格式中的这个空格会使scanf()
吃掉它找到的任何前导空白字符。