鱼C论坛

 找回密码
 立即注册
查看: 971|回复: 13

[已解决]萌新的加减乘除计算器问题

[复制链接]
发表于 2020-7-2 06:44:06 | 显示全部楼层 |阅读模式
8鱼币
问题描述:我看了小甲鱼用了布尔运算的那个四则运算计算器,他那个我能理解。然后我就想试试自己写一个不用布尔的,我也不知道理论上可不可行,然后还想添加一个输入加减乘除符号以外的运算符会有提示的功能。
然后我就按现在的理解写了下面的代码。。。。我输入运算式之后计算结果是0。求大神指点一下错误在哪,最好把运行原理也说一下 小甲鱼和我写的代码,我都会贴在下面。



这个是小甲鱼的
#include <stdio.h>
#include <stdbool.h>

int main()
{
        float op1, op2;
        char ch;
        float result;
        bool invalid = false;

        printf("请输入式子:");
        scanf("%f %c %f", &op1, &ch, &op2);

        switch (ch)
        {
                case '-': op2 = -op2; // no break
                case '+': result = op1 + op2; break;
                case '*': result = op1 * op2; break;
                case '/':
                        if (op2 != 0)
                        {
                                result = op1 / op2;
                                break;
                        }
                        else
                        {
                                invalid = true;
                                break;
                        }
        }

        if (invalid)
        {
                printf("除数不能为零!\n");
        }
        else
        {
                printf("结果是:%.2f\n", result);
        }

        return 0;
}





这个是我的
#include<stdio.h>
int main()
{
        float a,b,result;
        char ch;
        printf("请输入运算式:");
        scanf("%d %c %d",&a,&ch,&b);
        
        switch(ch)
        {
        case ('-'):b=-b;          //no break
        case ('+'):result=a+b;break;
        case ('*'):result=a*b;break;
        case ('/'):
                if(b !=0)
                {
                        result=a/b;break;
                }
                else
                {
                        printf("除数不能为0");break;
                }
        default: printf("请输入有效的运算式"); break;
        }
        printf("结果为%f\n",result);
                
        return 0;
} 
最佳答案
2020-7-2 06:44:07
float 应该用%f 不是 %d

最佳答案

查看完整内容

float 应该用%f 不是 %d

评分

参与人数 1鱼币 +5 收起 理由
jhanker + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-2 06:44:07 | 显示全部楼层    本楼为最佳答案   
float 应该用%f 不是 %d
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-2 08:19:13 | 显示全部楼层
咦,小甲鱼教过布尔?教过四则运算器?我看他说以后教写win那个计算器,结果看完也没有教,还觉得遗憾呢!不说了,暂时没找到问题。楼主说一下,你输入的是什么,计算结果为0?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-2 08:31:29 | 显示全部楼层
#include<stdio.h>
int main()
{
        float a,b,result;
        char ch;
        printf("请输入运算式:");
        scanf("%f %c %f",&a,&ch,&b);//这一句看看区别
        
        switch(ch)
        {
        case ('-'):b=-b;          //no break
        case ('+'):result=a+b;break;
        case ('*'):result=a*b;break;
        case ('/'):
                if(b !=0)
                {
                        result=a/b;break;
                }
                else
                {
                        printf("除数不能为0");break;
                }
        default: printf("请输入有效的运算式"); break;
        }
        printf("结果为%f\n",result);
                
        return 0;
} 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-2 08:38:01 | 显示全部楼层
jhanker 发表于 2020-7-2 08:36
float 应该用%f 不是 %d

挖草,好憨的错误。我竟然没看出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-2 08:42:30 | 显示全部楼层
Anzaizai 发表于 2020-7-2 08:38
挖草,好憨的错误。我竟然没看出来

你现在顺便可以去找找资料,float,int在内存中是怎么存储的内容了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-2 08:45:05 | 显示全部楼层
Anzaizai 发表于 2020-7-2 08:38
挖草,好憨的错误。我竟然没看出来

只能还你5个鱼币了,你去看看今天可以领鱼币了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-2 08:47:16 | 显示全部楼层
jhanker 发表于 2020-7-2 08:42
你现在顺便可以去找找资料,float,int在内存中是怎么存储的内容了

加好友了,同意一下呗,我还有一个小问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-2 08:48:13 | 显示全部楼层
Anzaizai 发表于 2020-7-2 08:47
加好友了,同意一下呗,我还有一个小问题

已经加你为好友了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-2 08:52:19 | 显示全部楼层
jhanker 发表于 2020-7-2 08:48
已经加你为好友了

这是我改好之后的代码,就是我现在输入加减乘除以外的运算符之后确实会有提示,但是下面还会跟着一条运算结果。怎么把那个运算结果不显示啊

#include<stdio.h>
int main()
{
        float a,b,result;
        char ch;
        
        printf("请输入运算式:");
        scanf("%f %c %f",&a,&ch,&b);

        switch(ch)
        {
        case '-':b=-b;          //no break
        case '+':result=a+b;break;
        case '*':result=a*b;break;
        case '/':
                                if(b !=0)
                                {
                                result=a/b;break;
                                }
                                else
                                {
                                printf("除数不能为0\n");
                                break;
                                }
                                default: printf("请输入有效的运算式\n");
                                break;
        }
        printf("结果是%.2f\n",result);
        return 0;
} 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-2 09:10:31 | 显示全部楼层
Anzaizai 发表于 2020-7-2 08:52
这是我改好之后的代码,就是我现在输入加减乘除以外的运算符之后确实会有提示,但是下面还会跟着一条运算 ...

输入格式问题估计 要输入 8 + 9 而不能8+9
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-17 02:04:51 | 显示全部楼层
9/0,计算后面还有一个结果是 0.00 ,我也不知道咋去掉。。。
QQ图片20200817020322.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-17 08:08:29 From FishC Mobile | 显示全部楼层
喝水卡牙 发表于 2020-8-17 02:04
9/0,计算后面还有一个结果是 0.00 ,我也不知道咋去掉。。。

把除数不能为0后面的break改为return 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-17 09:42:09 | 显示全部楼层
baige 发表于 2020-8-17 08:08
把除数不能为0后面的break改为return 0

嗯哼,改了,可以,高手,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 07:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表