C Primer Plus 8.8练习题 编写一个菜单,提供加减乘除的选项进行计算

编写一个程序,显示提供加法、减法、乘法的菜单,该程序只接受菜单提供的选项,程序提示用户输入两个数字。要求是输入q退出,输入数字时有误要求重新输入,除数为零的时候报错并要求重新输入。
我的程序在正常运算时没问题,输入q退出和除数为0时程序有问题。可能是那个循环和if有问题但是不知道具体问题在哪里。
我只是个自学一个月小白求大佬带带我!!!
#include
int main()
{
float x,y,z;
char ch;
while(ch!='q')
{
printf("输入你的选项\n");
printf("a.加 b.减\nc.乘 d.除\nq.退出\n");
scanf(" %c",&ch);
if(ch!='a'&&ch!='b'&&ch!='c'&&ch!='d'&&ch!='q')
{
printf("输入选项无效重新输入\n");
continue;
}
printf("输入第一个数:");
while((scanf(" %f",&x))==0)
{
printf("这个不是数,重新输入\n");
}
printf("输入第二个数:");
while ((scanf(" %f",&y))==0)
{
printf("这个不是数,重新输入\n");
if(ch=='d'&&y==0)
{
printf("0不能作为除数请重新输入");
continue;
}
}
switch(ch)
{
case 'a':
z=x+y;
break;
case 'b':
z=x-y;
break;
case 'c':
z=x*y;
break;
case 'd':
z=x/y;
break;
case 'q':
break;
}
printf("\n结果是%.2f\n",z);
if(ch=='q')
break;
}
return 0;
}

1个回答

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

#include <stdio.h>

int main()
{
    float x,y,z;
    char ch;
    while(1)
    {
        printf("输入你的选项\n");
        printf("a.加 b.减\nc.乘 d.除\nq.退出\n");
        scanf(" %c",&ch);
        if(ch!='a'&&ch!='b'&&ch!='c'&&ch!='d'&&ch!='q')
        {
            printf("输入选项无效重新输入\n");
            continue;
        }
        if (ch == 'q') break;
        printf("输入第一个数:");
        while((scanf("%f",&x))==0)
        {
            printf("这个不是数,重新输入\n");
        } 
        printf("输入第二个数:");
        while (1)
        {
            if (scanf("%f",&y)==0)
                printf("这个不是数,重新输入\n");
            else if(y==0)
            {
                printf("0不能作为除数请重新输入");
            }
            else
                break;
        }
        switch(ch)
        {
        case 'a':
            z=x+y;
            break;
        case 'b':
            z=x-y;
            break;
        case 'c':
            z=x*y;
            break;
        case 'd':
            z=x/y;
            break;
        }
        printf("\n结果是%.2f\n",z);
    }
    return 0;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问