#include "stdafx.h"
#include<iostream>
using namespace std;
#include<iomanip>
int main()
{
int n,num,i;
long int sum;
double sum2;
char C;
int A,B;
cin >> n;
if(n<0 || n>1000)
return 1;
for(i=0;i<n;i++)
{
cin>>C>>A>>B;
if(A<0 || A>10000||B<0 || B>10000)return 1;
if(C=='+'){
sum=A+B;cout<<sum<<endl;}
else if (C=='-'){
sum=A-B;cout<<sum<<endl;}
else if (C=='*'){
sum=A*B;cout<<sum<<endl;}
else if (C=='/'){
if(A%B)
{
sum2=(double)A/B;cout<<setiosflags(ios::fixed)<<setprecision(2)<<sum2<<endl;
}
else
{
sum=A/B;cout<<sum<<endl;
}
}
else
return 1;
}
system("Pause");
return 0;
}
这道题一看也觉得非常简单一下子就写出来了,可是提交发现结果错了,让我很惊讶不知道哪里出问题了。自己就是注意了除以时小数点后两位的问题。查阅他人答案才知道除以时整除就不用写小数点,所以少了一个A%B的判断,其次就是乘法时可能越界,所以sum需要使用long int型,才提交成功。
#include<iostream>
using namespace std;
#include<iomanip>
int main()
{
int n,num,i;
long int sum;
double sum2;
char C;
int A,B;
cin >> n;
if(n<0 || n>1000)
return 1;
for(i=0;i<n;i++)
{
cin>>C>>A>>B;
if(A<0 || A>10000||B<0 || B>10000)return 1;
if(C=='+'){
sum=A+B;cout<<sum<<endl;}
else if (C=='-'){
sum=A-B;cout<<sum<<endl;}
else if (C=='*'){
sum=A*B;cout<<sum<<endl;}
else if (C=='/'){
if(A%B)
{
sum2=(double)A/B;cout<<setiosflags(ios::fixed)<<setprecision(2)<<sum2<<endl;
}
else
{
sum=A/B;cout<<sum<<endl;
}
}
else
return 1;
}
system("Pause");
return 0;
}
这道题一看也觉得非常简单一下子就写出来了,可是提交发现结果错了,让我很惊讶不知道哪里出问题了。自己就是注意了除以时小数点后两位的问题。查阅他人答案才知道除以时整除就不用写小数点,所以少了一个A%B的判断,其次就是乘法时可能越界,所以sum需要使用long int型,才提交成功。