嵌套开关盒中的盒不会运行

问题描述 投票:0回答:3

这个程序是计算菜品价格的。用户需要输入项目编号,它会根据他们选择的大小计算菜肴的总价。但是,第二个开关盒(开关内的那个(item_number))没有按预期工作。它只适用于情况1,其他情况2-4 不工作,因此程序无法显示准确的价格。我绝对不能使用 if...else 来完成这项任务,它必须与 switch case 一起使用。

#include <stdio.h>
int main()
{
    int item_number, dish_quantity;
    char dish_size;
    float price, total;

    //Display the menu

    printf("\t\t\t\tMenu\t\t\t\t\n");
            printf("--------------------------------------------------------------------\n");
            printf("Item Number   Dish\t\t\t Dish Size              \n");
            printf("\t\t\t\tSmall(RM)   Medium(RM)   Large(RM)\n");
            printf("--------------------------------------------------------------------\n");
            printf("     1        Ikan Tenggiri       10.00      20.00        30.00\n");
            printf("     2        Ikan Pari            8.00      15.00        25.00\n");
            printf("     3        Ikan Jenahak         9.00      17.00        28.00\n");
            printf("     4        Daging              10.00      20.00        30.00\n");
            printf("--------------------------------------------------------------------\n\n");

    // Input from user

    printf("Enter item number        : ");
    scanf("%d", &item_number);
    printf("Enter dish size (S/M/L)  : ");
    scanf("%s", &dish_size);
    printf("Enter dish quantity      : ");
    scanf("%d", &dish_quantity);

    switch (item_number){
    case 1: switch (dish_size){
                case 's': case 'S': price = 10.00; break;
                case 'm': case 'M': price = 20.00; break;
                case 'l': case 'L': price = 30.00; break;}

        case 2: switch (dish_size){
                case 's': case 'S': price = 8.00; break;
                case 'm': case 'M': price = 15.00; break;
                case 'l': case 'L': price = 25.00; break;}

        case 3: switch (dish_size){
                case 's': case 'S': price = 9.00; break;
                case 'm': case 'M': price = 17.00; break;
                case 'l': case 'L': price = 28.00; break;}

        case 4: switch (dish_size){
                case 's': case 'S': price = 10.00; break;
                case 'm': case 'M': price = 20.00; break;
                case 'l': case 'L': price = 30.00; break;}

        }

    printf("Price per dish size      : RM %.2f\n", price);

    total = dish_quantity * price;

    printf("Total charge             : RM %.2f", total);

    return 0;



}
c switch-statement
3个回答
0
投票

你错过了休息时间;外部案例块中的语句。

switch (item_number){
    case 1: switch (dish_size){
                case 's': case 'S': price = 10.00; break;
                case 'm': case 'M': price = 20.00; break;
                case 'l': case 'L': price = 30.00; break;}
            break; // add this at the end of each case.

0
投票

break
语句只会跳出最里面的
switch
,不会跳出外面的
switch
。因此,您还需要
break
语句用于外部
switch
语句:

switch (item_number)
{
    case 1:
        switch (dish_size)
        {
            case 's': case 'S': price = 10.00; break;
            case 'm': case 'M': price = 20.00; break;
            case 'l': case 'L': price = 30.00; break;
        }
        break;

    case 2:
        switch (dish_size)
        {
            case 's': case 'S': price = 8.00; break;
            case 'm': case 'M': price = 15.00; break;
            case 'l': case 'L': price = 25.00; break;
        }
        break;

    case 3:
        switch (dish_size)
        {
            case 's': case 'S': price = 9.00; break;
            case 'm': case 'M': price = 17.00; break;
            case 'l': case 'L': price = 28.00; break;
        }
        break;

    case 4:
        switch (dish_size)
        {
            case 's': case 'S': price = 10.00; break;
            case 'm': case 'M': price = 20.00; break;
            case 'l': case 'L': price = 30.00; break;
        }
        break;
}

0
投票

你需要一个 break 语句:

case 1: switch (dish_size){
                case 's': case 'S': price = 10.00; break;
                case 'm': case 'M': price = 20.00; break;
                case 'l': case 'L': price = 30.00; break;
        } break;                                      //here for every case

并且为每个

default
包含一个
switch
案例总是好的。

© www.soinside.com 2019 - 2024. All rights reserved.