LTsurvive @ 2025-01-11 10:45:02
写了两个,第一个提交是RE,第二个是WA,并且测试点变一个了
#include <bits/stdc++.h>
using namespace std;
int main(){
int one,two;
char f;
cin>>one>>two>>f;
if(two==0&&f=='/'){
cout<<"Divided by zero!"<<endl;
}
if(f=='+'){
cout<<one+two<<endl;
}else if(f=='-'){
cout<<one-two<<endl;
}else if(f=='*'){
cout<<one*two<<endl;
}else if(f=='/'){
cout<<one/two<<endl;
}else{
cout<<"Invalid operator!"<<endl;
}
}
#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b,y;
char c;
cin>>a>>b>>c;
bool x;
switch (c) {
case '+':
y=a+b;
break;
case '-':
y=a-b;
break;
case '*':
y=a*b;
break;
case '/':
if(b==0){
x=true;
}else{
y=a/b;
}
break;
default:
cout<<"Invalid operator!"<<endl;
exit(0);
}
if(x){
cout<<"Divided by zero!"<<endl;
}else{
cout<<y<<endl;
}
}
by nnh915 @ 2025-01-11 10:52:57
第一个程序的问题在于逻辑上。判断完除0的可能性后,不应再执行后面的部分。在这个程序中,有两个分支,应合并成一个。把判断除0后面的 if 改为 else if 。
by nnh915 @ 2025-01-11 10:56:30
第二个程序的问题可能在于 变量x 没有初始化。局部变量没有初始化时,其值为随机数。比如当 x 随机到1时,就失去了判断的效果,会误判正确的算式。
by LTsurvive @ 2025-01-11 11:47:47
@nnh915感谢感谢终于AC了/(ㄒoㄒ)/~~