c语言请设计程序用于查找菜单中的菜品,当用户从终端输入【菜品名 价格】时,请查找该菜品是否再菜单中。
时间: 2024-09-16 20:01:11 浏览: 48
在C语言中,你可以使用数组或者结构体来存储菜单数据,并通过循环遍历比较用户输入的数据。这里是一个简单的示例程序:
```c
#include <stdio.h>
#include <string.h>
// 定义菜品结构体
typedef struct {
char name[50];
float price;
} Dish;
// 菜单数据
Dish menu[] = {{"宫保鸡丁", 38.0}, {"鱼香肉丝", 28.0}, {"西红柿炒蛋", 20.0}};
#define NUM_DISHES (sizeof(menu) / sizeof(menu[0]))
int main() {
int choice;
char dish_name[50], input_price[10];
float input_float;
printf("欢迎来到餐厅!\n");
printf("请输入菜品名和价格,格式如 '宫保鸡丁 38.0'\n");
// 循环接收用户输入并查找菜品
while (1) {
scanf("%s %s", dish_name, input_price);
sscanf(input_price, "%f", &input_float);
for (choice = 0; choice < NUM_DISHES; choice++) {
if (strcmp(dish_name, menu[choice].name) == 0 && menu[choice].price == input_float) {
printf("找到了! 菜品 '%s' 的价格是 %.2f 元.\n", dish_name, input_float);
break;
}
}
if (choice == NUM_DISHES) {
printf("抱歉,找不到此菜品。\n");
}
// 询问用户是否继续搜索
printf("是否还要查找其他菜品?(y/n): ");
getchar(); // 清除缓冲区的换行符
if (fgets(input_price, sizeof(input_price), stdin)) {
if (strcasecmp(input_price, "n") == 0 || strcasecmp(input_price, "no") == 0)
break;
} else {
break; // 用户未输入,假设他们不想再找
}
}
return 0;
}
```
在这个程序中,我们首先定义了一个菜品结构体`Dish`,然后创建了一个包含几个菜品的数组`menu`。用户可以输入菜品名和价格,程序会逐一检查是否匹配菜单中的某个菜品。如果找到,则显示信息;如果没有找到,则提示不存在。
阅读全文