显然,我正在运行一个程序,它应该创建一个餐厅,包括菜单、顾客、报告等。
所以我首先执行客户功能,然后循环执行(客户 1、客户2、客户3),但在完成客户 1(计算 cus1 的总数)后,我继续循环并继续执行客户2.但是这个问题出现了,我的客户2的总数与客户1的总数混淆了(为了更好地澄清,客户2的总数是cus1+cus2,但我只想要客户2的)
如果有人知道,请给我指导,将不胜感激,谢谢!
#include<stdio.h>
#include<stdlib.h>
#pragma warning(disable:4996)
#define COMBOA 8.50
#define COMBOB 10.50
#define COMBOC 18.00
#define COMBOD 32.50
void main()
{
void logo();
void menu();
char cus();
logo();
menu();
cus();
system("pause");
}
void logo() //Restaurant's logo
void menu() //Restaurant's menu
char cus()
{
char combo;
double total, combo1, total2 = 0;
int quan, cus = 1;
do
{
printf("Customer No: %d\n\n", cus);
++cus;
do {
printf("Please select Combo A/B/C/D (Enter 'X' to exit) : ");
scanf(" %c", &combo);
fflush(stdin);
if (combo == 'X' || combo == 'x')
break;
printf("Quantity : ");
scanf(" %d", &quan);
switch (combo) //about the combo prices
total = (double)quan * combo1;
total2 += total;
if (combo != 'A' && combo != 'a' && combo != 'B' && combo != 'b' && combo != 'C' && combo != 'c' && combo != 'D' && combo != 'd')
total2 == total;
printf("\t\tCOMBO %c : %d @ RM%.2f = RM %.2f\n", combo, quan, combo1, total);
} while (combo != 'X' || combo != 'x');
printf("\t\tTOTAL AMOUNT PURCHASED = RM %.2f\n", total2);
return 0;
}
最佳答案
您的变量将在循环的每次迭代中重置,然后仅在同一迭代中使用,然后再次重置。在循环内声明它们,或者更好的是在使用它们的 block 内声明它们。
在本例中,这将是包含设置它们的 scanf()
语句的 block 。
(顺便说一句,处理美元和美分的代码始终使用定点而不是 32 位浮点,以避免舍入错误。)
关于c - 如何清除循环中的第一个输入以正确计算第二个输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51443790/