基于C语言实现点餐操作
#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;
}