0

这是问题

为什么下面的程序在提示了第一个答案后没有提示其他答案?

以下是一些额外的细节

(c) 保险公司按照以下规则计算保费。(1) 如果一个人的健康状况很好,年龄在 25 至 35 岁之间,居住在城市并且是男性,那么保费为卢比。千分之四,他的保单金额不能超过卢比。20万。(2) 如果一个人满足上述所有条件,但性别为女性,则保费为卢比。千分之三,她的保单金额不能超过卢比。10万。(3) 如果一个人的健康状况不佳,并且该人的年龄在 25 至 35 岁之间,并且居住在村庄并且是男性,那么保费为卢比。千分之六,他的保单不能超过卢比。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 的地方时的问题,当我按 Enter 键时,它会显示第二个问题,即人的健康,并立即询问第三个问题,即人的性别。

它没有给我输入第二个问题的值的地方或选项:(

我想知道为什么会这样……请帮助我,谢谢并问候 Saksham

4

1 回答 1

5

当您按下回车键时,您还添加了一个\n字符,您scanf()很乐意接受它作为下一个输入。在您的情况下,最简单的解决方案是告诉scanf()读取下一个非空白字符。这可以像这样完成:

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

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

于 2012-07-06T15:44:58.660 回答