0

これが質問です

次のプログラムが最初の回答を求めた後、追加の回答を求めないのはなぜですか?

ここにいくつかの追加の詳細があります

(c) 保険会社は、以下のルールに従って保険料を計算します。(1) 健康状態が良好で、年齢が 25 歳から 35 歳で、都市に住んでいて男性である場合、保険料は Rs です。1,000 あたり 4 であり、彼の保険金額は Rs を超えることはできません。2万ルピー。(2) 性別が女性であることを除いて、上記のすべての条件を満たしている場合、保険料は Rs です。1,000 あたり 3 ドルであり、彼女の保険金額は Rs を超えることはできません。1万ルピー。(3) 健康状態が悪く、25 歳から 35 歳までの村に住む男性の場合、保険料は Rs です。1000 分の 6 であり、彼のポリシーは Rs を超えることはできません。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キーを押すと、2番目の質問、つまり人の健康状態が表示され、すぐに3番目の質問、つまり人の性別が尋ねられます。

2番目の質問の値を入力する場所やオプションはありません:(

なぜこれが起こっているのか知りたい...私を助けてください 感謝と敬意 サクシャム

4

1 に答える 1

5

Enter キーを押すと、次の入力として受け入れられる\n文字も追加されます。scanf()あなたの場合の最も簡単な解決策は、次の非空白scanf()文字を読み取るように指示することです。これは次のように行うことができます:

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

フォーマット内のこのスペースは、検出されscanf()た先頭の空白文字を食べさせます。

于 2012-07-06T15:44:58.660 に答える