如何解决尝试在循环语句内的开关中获取多个输入时出错
所以我正在制作一个基本的酒店/餐厅计费系统,我正在打印一个菜单,然后在使用 switch 语句时将输入作为选择,问题是我能够添加一道菜并选择多少数量您想要的菜肴并加税并计算总账单,但我无法获得多个数量的多个菜肴的总账单。但我能够得到价格相同但数量不同的多道菜的总账单。
#include<stdio.h>
void main()
{
float food=0; // Total Food bill
float p; // Quantity of food
int ch; // Choice
float vat,gst; // TAX
float total; // Total bill
int w; // Loop variable
printf("\n ***Menu***\n Please choose items which you want to order from the list given below \n ---Tiffins--- \n 1. Plain Dosa = 50/- \n 2. Masala Dosa = 70/- \n 3. Onion Dosa = 80/- \n 4. Idli = 50/- \n 5. Uttapam = 90/- \n 6. Vada = 60/- \n 7. Upma = 65 /- \n 8. Pongal = 70/- \n 9. Puri = 70/- \n ");
// Main Menu
printf("\n Please enter your order: \n");
scanf("%d",&ch); // Choice input
do{ // Loop
switch(ch)
{
case 1:
printf("\n How many plates do you want to order: \n");
scanf("%f",&p);
food = food+50*p;
printf("\nYour total as of right now: %.2f\n",food);
break;
case 2:
printf("\n How many plates do you want to order: \n");
scanf("%f",&p);
food = food+70*p;
printf("\nYour total as of right now: %.2f\n",food);
break;
case 3:
printf("\n How many plates do you want to order: \n");
scanf("%f",&p);
food = food+80*p;
printf("\nYour total as of right now: %.2f\n",food);
break;
case 4:
printf("\n How many plates do you want to order: \n");
scanf("%f",food);
break;
case 5:
printf("\n How many plates do you want to order: \n");
scanf("%f",&p);
food = food+90*p;
printf("\nYour total as of right now: %.2f\n",food);
break;
case 6:
printf("\n How many plates do you want to order: \n");
scanf("%f",&p);
food = food+60*p;
printf("\nYour total as of right now: %.2f\n",food);
break;
case 7:
printf("\n How many plates do you want to order: \n");
scanf("%f",&p);
food = food+65*p;
printf("\nYour total as of right now: %.2f\n",food);
break;
case 8:
printf("\n How many plates do you want to order: \n");
scanf("%f",food);
break;
case 9:
printf("\n How many plates do you want to order: \n");
scanf("%f",food);
break;
default:
printf("\nInvalid choice\n");
}
printf("\nPress 0 to go to billing\n");
scanf("%d",&w);
} while(w>0);
vat = (7*food)/100;
gst = (5*food)/100;
total = food+vat+gst;
printf("\n ---TOTAL BILL--- \n Food Total = %.2f \n Vat(7%%) = %.2f \n GST(5%%) = %.2f \n Total amount = %.2f \n",food,vat,gst,total);
getch();
}
所以是的,这是一个愚蠢的基本初学者问题,但任何帮助将不胜感激。是的,我是印度人,是的,这些是印度菜。
谢谢!
编辑:好的,谢谢你,现在我所要做的就是将我的选择输入移动到循环内。谢谢大家的帮助!
解决方法
您是在循环之外选择菜品,因此您只需要一次。将执行此操作的代码移至顶部的循环内。这样它每次都会询问。
do{ // Loop
printf("\n ***Menu***\n Please choose items which you want to order from the list given below \n ---Tiffins--- \n 1. Plain Dosa = 50/- \n 2. Masala Dosa = 70/- \n 3. Onion Dosa = 80/- \n 4. Idli = 50/- \n 5. Uttapam = 90/- \n 6. Vada = 60/- \n 7. Upma = 65 /- \n 8. Pongal = 70/- \n 9. Puri = 70/- \n "); // Main Menu
printf("\n Please enter your order: \n");
scanf("%d",&ch); // Choice input
...
,
问题是你在循环外读取了输入的菜,这意味着在你选择了第一道菜后,你将无法再选择另一道菜:
printf("\n Please enter your order: \n");
scanf("%d",&ch); // Choice input
do{ // Loop
switch(ch)
如果你改为这样:
do{ // Loop
printf("\n Please enter your order: \n");
scanf("%d",&ch); // Choice input
switch(ch)
用户将能够选择不同的菜肴。
,在你的代码中,你写
printf("\nPress 0 to go to billing\n");
scanf("%d",&w);
}while(w>0);
但是,在检查中您要检查的值是否大于 0。您应该将其更改为
}while (w ==0);
也就是说,如果您真的想要重复菜单,您需要在 do...while
循环内移动菜单的打印和用户输入。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。