AnZero @ 2021-08-25 16:29:35
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long a,b,c;
cin>>a>>b>>c;
if(c=='+')
cout<<a+b;
else
if(c=='-')
cout<<a-b;
else
if(c=='*')
cout<<a*b;
else
if(c=='/')
cout<<a/b;
if(b==0&&c=='/')
{
cout<<"Divided by zero!";
return 0;
}
if(c!='+'&&c!='/'&&c!='*'&&c!='-')
{
cout<<"Invalid operator";
return 0;
}
return 0;
}
by _lfxxx_ @ 2021-08-25 16:34:31
c
定义成 long long
了。
by 蛋蛋工作室 @ 2021-08-25 16:34:33
@AnZero c要用char类型
by AnZero @ 2021-08-25 16:39:01
@蛋蛋工作室 c为什么要用char???
by AnZero @ 2021-08-25 16:41:05
@蛋蛋工作室 我的第三个测试点是RE,为什么呀??
by 蛋蛋工作室 @ 2021-08-25 19:46:40
@AnZero
1.long long 是整型,不支持字符,所以要用char字符类型。
2.你的这段代码
if(c=='/')
cout<<a/b;
if(b==0&&c=='/')
{
cout<<"Divided by zero!";
return 0;
}
先除再判断的话,如果b=0时就会RE。
可以在除之前先判断,也可以先判断是否为除再判断是否为0。
方法一:
if(b==0&&c=='/')
{
cout<<"Divided by zero!";
return 0;
}
if(c=='/')
{
cout<<a/b;
}
方法二:(if嵌套)
if(c=='/')
{
if (b==0)
{
cout<<"Divided by zero!";
}
else
{
cout<<a/b;
}
最后还可以优化一下代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long a,b;
char c;
cin>>a>>b>>c;
if(c=='+')
cout<<a+b;
else if(c=='-')
cout<<a-b;
else if(c=='*')
cout<<a*b;
else if(c=='/')
if(b==0)
cout<<"Divided by zero!";//这里用了方法二,并且return 0可以不要
else
cout<<"Invalid operator";//这里的return 0也可以不要
return 0;
}
by 蛋蛋工作室 @ 2021-08-25 20:11:39
@AnZero
等等,我的这段代码有问题(为什么不按原来的改呢,还是太懒了)
else if(c=='/')
if(b==0)
cout<<"Divided by zero!";//这里用了方法二,并且return 0可以不要
else
cout<<"Invalid operator";//这里的return 0也可以不要
这里有歧义,聪慧的C++会认为后面的else接的是上面的if,所以要加一个大括号。还有方法二我照抄都少抄了。
纠正如下:
else if(c=='/')
{
if(b==0)
cout<<"Divided by zero!";//这里用了方法二,并且return 0可以不要
else
cout<<a/b;//这里我竟然忘加了
}
else
cout<<"Invalid operator";//这里的return 0也可以不要
by AnZero @ 2021-08-26 14:57:02
@蛋蛋工作室 好的,谢谢
by 蛋蛋工作室 @ 2021-08-26 15:51:30
@AnZero 不用谢
by yuyue_JOY @ 2021-08-27 21:36:25
用switch更方便
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int a,b,x;
char c;
cin>>a>>b>>c;
switch(c)
{
case '+':cout<<a+b;break;
case '-':cout<<a-b;break;
case '*':cout<<a*b;break;
case '/':
if(b==0)
{
cout<<"Divided by zero!";break;
}
else
{
cout<<a/b;break;
}
default:cout<<"Invalid operator!";break;
}
return 0;
}