基于菜单的程序,带有while和switch语句?
我是一个初学者,我正在努力自学。我自己写了一个基于菜单的switch case语句。所有程序都正常,但当菜单重新出现时,菜单显示不正确 代码是基于菜单的程序,带有while和switch语句?,c,switch-statement,C,Switch Statement,我是一个初学者,我正在努力自学。我自己写了一个基于菜单的switch case语句。所有程序都正常,但当菜单重新出现时,菜单显示不正确 代码是 int main() { char menu int i,num,fact=1,d; while(1) { printf("enter 'a' to find out factorial of a number\n"); printf("enter 'b' to find out that
int main()
{
char menu
int i,num,fact=1,d;
while(1)
{
printf("enter 'a' to find out factorial of a number\n");
printf("enter 'b' to find out that number is prime or not\n");
printf("enter 'c' to find out that number is odd or even\n");
printf("enter 'd' to exit");
scanf("%c",&menu);
switch(menu)
{
case 'a':
printf("please enter the number ");
scanf("%d",&num);
for(i=1; i<=num; i++)
fact=fact*i;
printf("factorial is %d\n",fact);
break;
case'b':
printf("enter the number");
scanf("%d",&num);
for(i=2; i<=num-1; i++)
{
if(num%i==0)
{
printf("not a prime number\n");
break;
}
}
if(i==num)
{
printf("prime number\n");
break;
}
break;
case'c':
printf("enter the number\n");
scanf("%d",&num);
d=num%2;
if(d=0)
printf("its a even number\n");
else
printf("its a odd one\n");
break;
case'd':
exit(0);
}
}
}
intmain()
{
字符菜单
int i,num,fact=1,d;
而(1)
{
printf(“输入'a'查找数字的阶乘\n”);
printf(“输入'b'以确定该数字是否为素数\n”);
printf(“输入'c'以找出该数字为奇数或偶数\n”);
printf(“输入“d”以退出”);
scanf(“%c”,菜单(&M);
开关(菜单)
{
案例“a”:
printf(“请输入号码”);
scanf(“%d”和&num);
对于(i=1;i试试这个:
int ok=1;
while(1)
{
if(ok==1)
{
printf("enter 'a' to find out factorial of a number\n");
printf("enter 'b' to find out that number is prime or not\n");
printf("enter 'c' to find out that number is odd or even\n");
printf("enter 'd' to exit\n");
scanf("%c",&menu);
fflush(stdin);
}
ok=1;
switch(menu)
{
case 'a':
printf("please enter the number ");
scanf("%d",&num);
for(i=1; i<=num; i++)
fact=fact*i;
printf("factorial is %d\n",fact);
break;
......
......
default: ok=0;break;
}
}
intok=1;
而(1)
{
如果(ok==1)
{
printf(“输入'a'查找数字的阶乘\n”);
printf(“输入'b'以确定该数字是否为素数\n”);
printf(“输入'c'以找出该数字为奇数或偶数\n”);
printf(“输入“d”退出\n”);
scanf(“%c”,菜单(&M);
fflush(stdin);
}
ok=1;
开关(菜单)
{
案例“a”:
printf(“请输入号码”);
scanf(“%d”和&num);
对于(i=1;我请学习缩进您的代码,这是一个很好的做法,而且对代码的可重用性和可维护性确实更好。您需要在偶数部分将代码if(d=0)
改进为if(d==0)
,否则将永远正确!更改scanf(%c),&menu);
为scanf(%c),&menu)
用于保留换行符。为什么菜单没有正确显示,您面临什么样的特殊情况?您应该在交换机中考虑一个“default”语句,以捕获所有其他输入,并说一些类似“KeyError”等的话。始终捕获交换机的所有情况是一个很好的用法。默认值:printf(“KeyError:'%c',menu)