Ответ всегда ноль - PullRequest
       5

Ответ всегда ноль

0 голосов
/ 12 апреля 2019

В моем коде ответ для итога = 0 всегда.Я не знаю, в чем проблема в моем коде.Может кто-нибудь помочь мне, пожалуйста, чтобы решить эту проблему.

Я попытался использовать условие «если еще» вместо «переключатель».Однако проблема не решается.

Я думаю, что значение 'pkg' не присваивается переменной.Но в чем причина этого.Насколько я знаю, я правильно использовал функцию «scanf».

#include<stdio.h>

int main(void)
{
    int i = 1;
    float km, amount, total = 0;
    char next, loyal, pkg;

    printf("Enter Loyalty (Y / N) ?");
    scanf("%*c%c", &loyal);

    do{
        printf("Package No : ");
        scanf("%c*c", &pkg);

        printf("Total Distance : ");
        scanf("%f", &km);

        if(km <= 80) {
            switch (pkg){
                case 'A':
                    amount = 1500;
                    break;
                case 'B':
                    amount = 10000;
                    break;
                case 'C':
                    amount = 13000;
                    break;
                case 'D':
                    amount = 12000;
                    break;
            }
        }
        else {
            switch (pkg) {
                case 'A':
                    amount = 1500 + 150 * (km - 80);
                    break;
                case 'B':
                    amount = 10000 + 150 * (km - 80);
                    break;
                case 'C':
                    amount = 13000 + 150 * (km - 80);
                    break;
                case 'D':
                    amount = 12000 + 150 * (km - 80);
                    break;
            }
        }

        total = total + amount;
        i++;

        printf("\nDo you have more customers (Y / N): ");
        scanf("%*c%c", &next);

        printf("----------------------------------------------\n");

    } while (next == 'Y' && i <= 3);

    printf("\n\nPrice = %.2f", total);

    return 0;
}

Ответы [ 3 ]

0 голосов
/ 12 апреля 2019

Ответы довольно просты:

измените это: scanf("%c*c", &pkg); на это: scanf("%c%*c", &pkg);

Вы пропустили%, что означало дополнительное '\n'.

0 голосов
/ 19 апреля 2019

Код следует изменить следующим образом: scanf ("% c% * c", & loyal);

Ошибка была в функции 'scanf'.

0 голосов
/ 12 апреля 2019

Я попробовал ваш код, и проблема здесь в том, что я думаю, что вы используете строчные вводы, поэтому вы получаете неправильный вывод, используйте прописную функцию на входах или вводите заглавные, чтобы избежать неправильного результата.

Вот вывод с вводом в верхнем регистре: enter image description here

Вы всегда должны использовать default в switch, чтобы избежать дополнительных проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...