这个程序是计算菜品价格的。用户需要输入项目编号,它会根据他们选择的大小计算菜肴的总价。但是,第二个开关盒(开关内的那个(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;
}
你错过了休息时间;外部案例块中的语句。
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.
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;
}
你需要一个 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
案例总是好的。