C 为什么';t程序提示其他答案

C 为什么';t程序提示其他答案,c,C,问题来了 为什么下列程序在提示输入第一个答案后不提示输入其他答案 以下是一些其他详细信息 (c) 保险公司遵循以下规则计算保费。 (1) 如果一个人的健康状况良好,年龄在25至35岁之间,居住在城市且为男性,则保险费为千分之四卢比,其保单金额不得超过20万卢比。 (2) 如果一个人除性别为女性外满足上述所有条件,则保费为千分之三卢比,其保单金额不得超过10万卢比。 (3) 如果一个人的健康状况不佳,年龄在25至35岁之间,居住在村庄,是男性,则保费为千分之六,其保单金额不得超过10000卢比。

问题来了

为什么下列程序在提示输入第一个答案后不提示输入其他答案

以下是一些其他详细信息

(c) 保险公司遵循以下规则计算保费。 (1) 如果一个人的健康状况良好,年龄在25至35岁之间,居住在城市且为男性,则保险费为千分之四卢比,其保单金额不得超过20万卢比。 (2) 如果一个人除性别为女性外满足上述所有条件,则保费为千分之三卢比,其保单金额不得超过10万卢比。 (3) 如果一个人的健康状况不佳,年龄在25至35岁之间,居住在村庄,是男性,则保费为千分之六,其保单金额不得超过10000卢比。 (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");
}
/*第88页G-c
2012年7月6日下午6:14*/
#包括
#包括
void main(){
健康、生活、性;
保险金额,投保金额=0,保单金额=0,保险费;
printf(“居住在哪里的人?C或C代表城市,V或V代表村庄”);
scanf(“%c”和“实时”);
printf(“输入此人的健康状况:E或E表示优秀,P或P表示差”);
scanf(“%c”和“运行状况”);
printf(“人的性别是什么?男性是M或M,女性是F或F”);
scanf(“%c”、&sex);
printf(“输入此人的年龄”);
scanf(“%d”和年龄);

如果按enter键时((health=='E'| health='E')&&&&(age>=25&&age=25&&age=25&&age&&age),您还可以添加一个
\n
字符,您的
scanf()
很乐意接受该字符作为下一个输入。对于您来说,最简单的解决方案是告诉
scanf()
读取下一个非空白字符。可以这样做:

scanf(" %c",&health); /* note the added space before %c! */

格式中的此空格将使
scanf()
吃掉它找到的任何前导空格字符。

按enter键时,还将添加一个
\n
字符,您的
scanf()
很乐意接受该字符作为下一个输入。在您的情况下,最简单的解决方法是告诉
scanf()
读取下一个非空白字符。可按如下方式执行:

scanf(" %c",&health); /* note the added space before %c! */

此格式的空格将使
scanf()
吃掉它找到的任何前导空格字符。

哇,太棒了,它像一个符咒一样工作:)非常感谢。你能给我推荐一些书,可以帮助我克服这些基本问题吗?
scanf()
是一个非常复杂的函数,老实说,我更喜欢一般情况下避免使用它。就书籍而言,我建议使用规范的K&R2:。这是任何严肃的C程序员的“必备品”。我发现我更喜欢
scanf(“%C\n”,&health);
在视觉识别方面。谢谢FatalError,我尝试了更多的方法,这样你给出的答案如果我们不遵循,那么scanf会自动存储\n第二个答案,对吗?JAB,谢谢你提供了另一种解决问题的方法:)你们也可以做类似于
scanf(%c*%c),&health)的事情;
*
使其放弃下一步指定的内容。如果我做错了,请有人纠正我。哇,太棒了,它像一个符咒一样工作:)非常感谢。你能给我推荐一些书,可以帮我克服这些基本问题吗?
scanf()
是一个非常复杂的函数,老实说,我更喜欢一般情况下避免使用它。就书籍而言,我建议使用规范的K&R2:。这是任何严肃的C程序员的“必备品”。我发现我更喜欢
scanf(“%C\n”,&health);
在视觉识别方面。谢谢FatalError,我尝试了更多的方法,这样你给出的答案如果我们不遵循,那么scanf会自动存储\n第二个答案,对吗?JAB,谢谢你提供了另一种解决问题的方法:)你们也可以做类似于
scanf(%c*%c),&health)的事情;
*
使其放弃接下来指定的内容。如果我做错了,请有人纠正我。