答案永远是零

时间:2019-04-12 04:21:29

标签: c

在我的代码中,total始终为0的答案。我不知道我的代码有什么问题。谁能帮我解决这个问题。

我尝试使用“ if else”条件代替“ switch”。但是问题没有解决。

我认为'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 :(得分:0)

我尝试了您的代码,这里的问题是我认为您使用的是小写输入,这就是为什么输出错误的原因是在输入上使用大写功能或使用大写输入以避免错误的结果。

此处输出为大写输入: enter image description here

您应该始终在交换机中使用default,以避免出现更多问题。

答案 1 :(得分:0)

答案很简单:

将此:scanf("%c*c", &pkg);更改为:scanf("%c%*c", &pkg);

您错过了%,这意味着要多'\n'

答案 2 :(得分:-1)

代码应更改如下, scanf(“%c%* c”,&loyal);

错误在于'scanf'函数。