求各位大佬帮帮刚起步的人看看,我是想写四则运算的
求各位大佬帮忙看看,我是想写四则运算的,但是加和乘都是无效{:5_104:}#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=true)
{
printf("该公式无效!\n");
}
else
{
printf("结果为:%d\n",result);
}
return 0;
}
本帖最后由 ExiaGN001 于 2023-1-31 21:21 编辑
你再试试.
解释一下:=和==在Cpp/C中是两个运算符,
[左值=同型常量/变量]是将右值赋给左值,
[左表达式==右表达式]是判断两者是否相等,是1否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==true) //有改
{
printf("该公式无效!\n");
invalid=false;// 建议加上,为了不影响下次判断
}
else
{
printf("结果为:%d\n",result);
}
return 0;
}
lz好像不看,自up一下。 本帖最后由 铭凡 于 2023-1-19 10:39 编辑
if(invalid=true)
这一行出现错误!
两个等于号“==”才是等于,单独一个是赋值符号
所以不管你输入什么,都会提示该公式无效,而不单单是加法和除法,不信看下图
误把等于号写成赋值号这件事新手比较容易犯,除了小心一点之外,小甲鱼老师还提供了一个更好的方法
比如你要写:if(invalid=true)
你就把常数写前面
写成:if(true=invalid)
这样就算你写错了,编译器也会报错:无法对常数赋值,然后你就不得不乖乖地回去找这一行代码,就会发现原来等于号打错了
当然,如果类似“if(i == j)”就没办法啦,所以还是要小心一点的
希望对你有帮助,祝你学好编程!
我又发现了一个错误,你前边“result”是浮点型,然后输出的时候确是整型,我还是拿1 + 1(- * /)做的试验,发现结果都是0
你输出的时候要改成printf("%f", result);
改完了之后你再试试吧,应该就可以了
不行,还得多说一句,要一起学习吗,C语言看了一遍,还在跟着做题,想交个同好一起进步
页:
[1]