萌新的加减乘除计算器问题
问题描述:我看了小甲鱼用了布尔运算的那个四则运算计算器,他那个我能理解。然后我就想试试自己写一个不用布尔的,我也不知道理论上可不可行,然后还想添加一个输入加减乘除符号以外的运算符会有提示的功能。然后我就按现在的理解写了下面的代码。。。。我输入运算式之后计算结果是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;
}
float 应该用%f 不是 %d 咦,小甲鱼教过布尔?教过四则运算器?我看他说以后教写win那个计算器,结果看完也没有教,还觉得遗憾呢!不说了,暂时没找到问题。楼主说一下,你输入的是什么,计算结果为0? #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;
} jhanker 发表于 2020-7-2 08:36
float 应该用%f 不是 %d
挖草,好憨的错误。我竟然没看出来 Anzaizai 发表于 2020-7-2 08:38
挖草,好憨的错误。我竟然没看出来
你现在顺便可以去找找资料,float,int在内存中是怎么存储的内容了 Anzaizai 发表于 2020-7-2 08:38
挖草,好憨的错误。我竟然没看出来
只能还你5个鱼币了,你去看看今天可以领鱼币了 jhanker 发表于 2020-7-2 08:42
你现在顺便可以去找找资料,float,int在内存中是怎么存储的内容了
加好友了,同意一下呗,我还有一个小问题{:5_100:} Anzaizai 发表于 2020-7-2 08:47
加好友了,同意一下呗,我还有一个小问题
已经加你为好友了 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;
} Anzaizai 发表于 2020-7-2 08:52
这是我改好之后的代码,就是我现在输入加减乘除以外的运算符之后确实会有提示,但是下面还会跟着一条运算 ...
输入格式问题估计 要输入 8 + 9 而不能8+9 9/0,计算后面还有一个结果是 0.00 ,{:5_103:}我也不知道咋去掉。。。 喝水卡牙 发表于 2020-8-17 02:04
9/0,计算后面还有一个结果是 0.00 ,我也不知道咋去掉。。。
把除数不能为0后面的break改为return 0 baige 发表于 2020-8-17 08:08
把除数不能为0后面的break改为return 0
嗯哼,改了,可以,高手,{:5_109:}
页:
[1]