C语言点菜小程序的问题

这是我们老师留的一道上机题:
1.应用多分支选择结构、循环结构及已学的所有C语言相关知识,编写“点菜器”程序,功能要求如下:
1)在黑屏终端下,输入字母A或a,输出菜名***及单价,并询问点几份,由用户输入份数;
2)程序运行不结束,输入字母B或b,输出另一菜名***及单价,余下功能和1)类似;
3)重复2)的功能,每次菜名及单价都不一样。直至用户在黑屏终端下输入E或e,输出“就这些”并输出总价。

我写了如下代码,写完以后出现以下问题
1.循环是会出现两句 请输入您想点的菜品的序号
2.无法实现输入E或e是输出价格

我希得到出现问题的原因和修改意见或修改后的代码。
谢谢

#include<stdio.h>
int main()
{
    char code;
    int number,price=0;
    int price1=18;//菜品一:醋溜土豆丝
    int price2=30;//菜品二:爆炒羊肉 
    int price3=20; //菜品三:西红柿炒鸡蛋 
do{
    printf("请输入您想点的菜品的序号:");
    scanf("%c",&code); 
    switch(code)
    {
        case 'A':
        case 'a':
            printf("您点的是醋溜土豆丝,单价18元。\n请输入您需要的份数:");
            scanf("%d",&number);
            price+=price1*number;
            break;
        case 'B':
        case 'b':
            printf("您点的是爆炒羊肉,单价30元。\n请输入您需要的份数:");
            scanf("%d",&number);
            price+=price2*number;
            break;
        case 'C':
        case 'c':
            printf("您点的是西红柿炒鸡蛋,单价20元。\n请输入您需要的份数:");
            scanf("%d",&number);
            price+=price3*number;
            break;
    }
    if(code=='E'||code=='e')
    break;

} while (code!='E'||code!='e');

printf("就这些。一共%d元。",price);

return 0;
}

问题解决的话,请点下采纳

#include<stdio.h>
int main()
{
    char code;
    int number,price=0;
    int price1=18;//菜品一:醋溜土豆丝
    int price2=30;//菜品二:爆炒羊肉 
    int price3=20; //菜品三:西红柿炒鸡蛋 
    do{
        printf("请输入您想点的菜品的序号:");
        fflush(stdin);
        scanf("%c",&code); 
        switch(code)
        {
        case 'A':
        case 'a':
            printf("您点的是醋溜土豆丝,单价18元。\n请输入您需要的份数:");
            scanf("%d",&number);
            price+=price1*number;
            break;
        case 'B':
        case 'b':
            printf("您点的是爆炒羊肉,单价30元。\n请输入您需要的份数:");
            scanf("%d",&number);
            price+=price2*number;
            break;
        case 'C':
        case 'c':
            printf("您点的是西红柿炒鸡蛋,单价20元。\n请输入您需要的份数:");
            scanf("%d",&number);
            price+=price3*number;
            break;
        }
        if(code=='E'||code=='e')
            break;

    } while (code!='E'||code!='e');

    printf("就这些。一共%d元。",price);

    return 0;
}

请输入您想点的菜品的序号:a
您点的是醋溜土豆丝,单价18元。
请输入您需要的份数:1
请输入您想点的菜品的序号:B
您点的是爆炒羊肉,单价30元。
请输入您需要的份数:2
请输入您想点的菜品的序号:E
就这些。一共78元。Press any key to continue . . .

#include
int main()
{
char code;
int number,price=0;
int price1=18;//菜品一:醋溜土豆丝
int price2=30;//菜品二:爆炒羊肉
int price3=20; //菜品三:西红柿炒鸡蛋
do{
printf("请输入您想点的菜品的序号:");
fflush(stdin);
scanf("%c",&code);
switch(code)
{
case 'A':
case 'a':
printf("您点的是醋溜土豆丝,单价18元。\n请输入您需要的份数:");
scanf("%d",&number);
price+=price1*number;
break;
case 'B':
case 'b':
printf("您点的是爆炒羊肉,单价30元。\n请输入您需要的份数:");
scanf("%d",&number);
price+=price2*number;
break;
case 'C':
case 'c':
printf("您点的是西红柿炒鸡蛋,单价20元。\n请输入您需要的份数:");
scanf("%d",&number);
price+=price3*number;
break;
}
if(code=='E'||code=='e')
break;

} while (code!='E'||code!='e');

printf("就这些。一共%d元。",price);

return 0;

}
运行结果:
请输入您想点的菜品的序号:A
您点的是醋溜土豆丝,单价18元。
请输入您需要的份数:1
请输入您想点的菜品的序号:b
您点的是爆炒羊肉,单价30元。
请输入您需要的份数:2
请输入您想点的菜品的序号:C
您点的是西红柿炒鸡蛋,单价20元。
请输入您需要的份数:3
请输入您想点的菜品的序号:E
就这些。一共138元。
如帮助到您,请采纳!!!