为某酒店编写一个点菜程序:首先给出要求客人输入餐桌号的提示信息 客人键入餐桌号后,给出包含:菜名、菜编号以及价格的菜单提示信息客人键入对应菜的编号后,给出点菜汇总信息。要求1菜名 菜编号、价格用结构体存放。
时间: 2024-02-03 08:12:56 浏览: 20
好的,下面是一份简单的代码示例:
```c
#include <stdio.h>
#define MAX_MENU_ITEMS 10
struct MenuItem {
char name[50];
int id;
double price;
};
int main() {
// 菜单项数组
struct MenuItem menu[MAX_MENU_ITEMS] = {
{"宫保鸡丁", 1, 28.0},
{"麻婆豆腐", 2, 18.0},
{"烤鱼", 3, 68.0},
{"酸辣汤", 4, 12.0},
{"小炒肉", 5, 32.0},
{"青椒肉丝", 6, 22.0},
{"炒饭", 7, 10.0},
{"炒面", 8, 12.0},
{"麻辣香锅", 9, 58.0},
{"火锅", 10, 88.0}
};
// 输入餐桌号
int tableNo;
printf("请输入餐桌号:");
scanf("%d", &tableNo);
// 输出菜单
printf("菜单:\n");
printf("编号\t菜名\t\t价格\n");
for (int i = 0; i < MAX_MENU_ITEMS; i++) {
printf("%d\t%s\t%.1f元\n", menu[i].id, menu[i].name, menu[i].price);
}
// 输入点菜编号
printf("请点菜(输入编号,以0结束):\n");
int order[MAX_MENU_ITEMS] = {0}; // 用于存储点菜编号的数组
int count = 0; // 点菜数量
while (1) {
int id;
scanf("%d", &id);
if (id == 0) {
break;
}
if (id < 1 || id > MAX_MENU_ITEMS) {
printf("无效的菜品编号!\n");
continue;
}
order[count++] = id;
}
// 输出点菜汇总信息
printf("您点了以下菜品:\n");
double total = 0.0; // 总金额
for (int i = 0; i < count; i++) {
struct MenuItem item = menu[order[i] - 1];
printf("%d\t%s\t%.1f元\n", item.id, item.name, item.price);
total += item.price;
}
printf("总金额:%.1f元\n", total);
return 0;
}
```
运行结果:
```
请输入餐桌号:1
菜单:
编号 菜名 价格
1 宫保鸡丁 28.0元
2 麻婆豆腐 18.0元
3 烤鱼 68.0元
4 酸辣汤 12.0元
5 小炒肉 32.0元
6 青椒肉丝 22.0元
7 炒饭 10.0元
8 炒面 12.0元
9 麻辣香锅 58.0元
10 火锅 88.0元
请点菜(输入编号,以0结束):
1
3
5
0
您点了以下菜品:
1 宫保鸡丁 28.0元
3 烤鱼 68.0元
5 小炒肉 32.0元
总金额:128.0元
```