基于C语言实现点餐操作

时间:2025-04-02 07:31:05
#include <bits/stdc++.h> using namespace std; int main() { //定义菜单 char *cai[12] = {"0","1.芥兰炒牛肉","2.黄瓜炒肉","3.苦瓜煎蛋","4.川味回锅肉","5.卤味拼盘","6.蒜蓉时蔬","7.玉米排骨汤","8.炸酱面","9.米饭","10.可乐"}; //定义价格 float p[12] = {0,28.88,16.88,16.88,30.88,30.88,12.88,18.88,10.88,2.88,3}; //定义一个数组用于存放已点的菜 char *s[30]; int i = 1; //定义一个数组用于存放已点的菜的价格 float p1[30]; //结算价格 float num = 0; printf("***************欢迎光临小甘饭馆******************\n"); printf(" ——请点菜—— \n"); for(int i=1; i<=10; i++) { printf("%s %.2f\n",cai[i],p[i]); } printf("\n"); printf("输入序号即可选择菜品!\n(22)取消菜品\n(88)确定点菜\n"); while(1) { int n = 0; scanf("%d",&n); if(n == 88) break; if(n == 22) { printf("——请输入需要取消菜品序号—— "); int m[30]; char c; int h1 =0; for(int h=1; h<=30 && c != '\n'; h++) { scanf("%d",&m[h]); h1 = h; c = getchar(); } //二重循环 //外循环:用于遍历需取消菜品 //内循环:用于遍历已点菜品 //使用strcmp函数进行字符串对比,相等返回0,不相等返回其他值 for(int j=1; j <= h1; j++) { for(int k=1; k <= i-1; k++) { //需注意的是!在进行字符串对比前,需为对比字符串添加条件判断,字符串为空不能进行strcmp操作 if(s[k] != NULL && cai[m[j]] != NULL) { if(strcmp(s[k],cai[m[j]]) == 0) { s[k]=NULL; num = num - p1[k]; p1[k]=NULL; } } } } printf("\n"); printf("****取消成功!请继续点菜****\n"); } s[i] = cai[n]; p1[i] = p[n]; num = num + p[n]; i++; } printf("-------------------------------------------------\n"); printf("您的菜单如下\n"); for(int j= 1; j<i; j++) { if(s[j] != NULL && p1[j] != NULL) { printf("%s %.2f¥\n",s[j],p1[j]); } } printf("共计:%.0f元\n谢谢!",num); return 0; }