刚学c语言,求解,这个计算器为什么没有办法算出结果呀

问题遇到的现象和发生背景

img

问题相关代码,请勿粘贴截图

#include<stdio.h>
int main()
{
double a=0, b=0;
int c;
char i;
printf("Input expression:");
scanf("%lf%c%lf",&a,&i,&b);
switch (i)
{
case '+':c=a+b; printf("%lf+%lf=%lf",a,b,c); break;
case '-':c=a-b; printf("%lf-%lf=%lf",a,b,c); break;
case '':c+ab; printf("%lf*%lf=%lf",a,b,c); break;
case '/':if (b==0)
{printf("Can not divid 0!\nExpression error!");
}
else c=a/b; printf("%lf/%lf=%lf",a,b,c); break;
default:printf("Expression error!"); break;
}
return 0;
}

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

int c;改成double c;
case '':c+ab; printf("%lf*%lf=%lf",a,b,c); break;
这句也不对,改成这样:
case '*':c = a * b; printf("%lf*%lf=%lf", a, b, c); break;
完整代码:

#include<stdio.h>
int main()
{
    double a = 0, b = 0;
    double c;
    char i;
    printf("Input expression:");
    scanf("%lf%c%lf", &a, &i, &b);
    switch (i)
    {
    case '+':c = a + b; printf("%lf+%lf=%lf", a, b, c); break;
    case '-':c = a - b; printf("%lf-%lf=%lf", a, b, c); break;
    case '*':c = a * b; printf("%lf*%lf=%lf", a, b, c); break;
    case '/':if (b == 0)
    {
        printf("Can not divid 0!\nExpression error!");
    }
             else c = a / b; printf("%lf/%lf=%lf", a, b, c); break;
    default:printf("Expression error!"); break;
    }
    return 0;
}

因为你的结果c写成int类型了;

#include<stdio.h>
int main()
{
double a=0, b=0;
double c;
char i;
printf("Input expression:");
scanf("%lf%c%lf",&a,&i,&b);
switch (i)
{
case '+':c=a+b; printf("%lf+%lf=%lf",a,b,c); break;
case '-':c=a-b; printf("%lf-%lf=%lf",a,b,c); break;
case '*':c=a*b; printf("%lf*%lf=%lf",a,b,c); break;
case '/':if (b==0)
{printf("Can not divid 0!\nExpression error!");
}
else c=a/b; printf("%lf/%lf=%lf",a,b,c); break;
default:printf("Expression error!"); break;
}
return 0;
}

你应该把C也设置为double 而不是int


#include<stdio.h>
int main()
{
    double a=0, b=0;
    double c;
    char i;
    printf("Input expression:");
    scanf("%lf%c%lf",&a,&i,&b);
    switch (i)
    {
        case '+':c=a+b; printf("%lf+%lf=%lf",a,b,c); break;
        case '-':c=a-b; printf("%lf-%lf=%lf",a,b,c); break;
        case '*':c=a*b; printf("%lf*%lf=%lf",a,b,c); break;
        case '/':if (b==0)
            {printf("Can not divid 0!\nExpression error!");
            }
            else c=a/b; printf("%lf/%lf=%lf",a,b,c); break;
        default:printf("Expression error!"); break;
    }
    return 0;
}
case '':c+ab; printf("%lf*%lf=%lf",a,b,c); break;

题主你这里的语句写得有问题,你注意看一下,应该是:

case '*':c + a * b; printf("%lf*%lf=%lf", a, b, c); break;

还有就是你定义的变量c是int类型,你实际计算的是double类型,加法肯定是得不到数据的,你把c的类型改成double类型试试看。

double c ;

如果有用的话,望采纳,谢谢哦!Switch-case语句本身没太大问题,注意细节就好了,加油

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632