Anzaizai 发表于 2020-7-2 06:44:06

萌新的加减乘除计算器问题

问题描述:我看了小甲鱼用了布尔运算的那个四则运算计算器,他那个我能理解。然后我就想试试自己写一个不用布尔的,我也不知道理论上可不可行,然后还想添加一个输入加减乘除符号以外的运算符会有提示的功能。
然后我就按现在的理解写了下面的代码。。。。我输入运算式之后计算结果是0。求大神指点一下错误在哪,最好把运行原理也说一下{:5_92:} {:5_100:} {:5_100:} {:5_100:} 小甲鱼和我写的代码,我都会贴在下面。



这个是小甲鱼的
#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;
}

jhanker 发表于 2020-7-2 06:44:07

float 应该用%f 不是 %d

405794672 发表于 2020-7-2 08:19:13

咦,小甲鱼教过布尔?教过四则运算器?我看他说以后教写win那个计算器,结果看完也没有教,还觉得遗憾呢!不说了,暂时没找到问题。楼主说一下,你输入的是什么,计算结果为0?

jhanker 发表于 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;
}

Anzaizai 发表于 2020-7-2 08:38:01

jhanker 发表于 2020-7-2 08:36
float 应该用%f 不是 %d

挖草,好憨的错误。我竟然没看出来

jhanker 发表于 2020-7-2 08:42:30

Anzaizai 发表于 2020-7-2 08:38
挖草,好憨的错误。我竟然没看出来

你现在顺便可以去找找资料,float,int在内存中是怎么存储的内容了

jhanker 发表于 2020-7-2 08:45:05

Anzaizai 发表于 2020-7-2 08:38
挖草,好憨的错误。我竟然没看出来

只能还你5个鱼币了,你去看看今天可以领鱼币了

Anzaizai 发表于 2020-7-2 08:47:16

jhanker 发表于 2020-7-2 08:42
你现在顺便可以去找找资料,float,int在内存中是怎么存储的内容了

加好友了,同意一下呗,我还有一个小问题{:5_100:}

jhanker 发表于 2020-7-2 08:48:13

Anzaizai 发表于 2020-7-2 08:47
加好友了,同意一下呗,我还有一个小问题

已经加你为好友了

Anzaizai 发表于 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;
}

jhanker 发表于 2020-7-2 09:10:31

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

输入格式问题估计 要输入 8 + 9 而不能8+9

喝水卡牙 发表于 2020-8-17 02:04:51

9/0,计算后面还有一个结果是 0.00 ,{:5_103:}我也不知道咋去掉。。。

baige 发表于 2020-8-17 08:08:29

喝水卡牙 发表于 2020-8-17 02:04
9/0,计算后面还有一个结果是 0.00 ,我也不知道咋去掉。。。

把除数不能为0后面的break改为return 0

喝水卡牙 发表于 2020-8-17 09:42:09

baige 发表于 2020-8-17 08:08
把除数不能为0后面的break改为return 0

嗯哼,改了,可以,高手,{:5_109:}
页: [1]
查看完整版本: 萌新的加减乘除计算器问题