编写一个程序,输入两个正整数,求它们的和,差,积,商,余数。
int main()
{
int m,n;
scanf("%d%d",&m,&n);
printf("m+n=%d\n",m+n);
printf("m-n=%d\n",m-n);
printf("m*n=%d\n",m*n);
if(n!=0)
{
printf("m/n=%d\n",m/n);
printf("m%%n=%d\n",m%n);
}
else
printf("无效n,不能进行除法和求余计算\n");
return 0;
}
int Add(int a, int b)
{
if (a <= 0 && b <= 0 && abs(a) - 1 <= INT_MAX - abs(b))
{
return a + b;
}
else if ((a< 0 && b > 0) || (b < 0 && a>0))
{
return a + b;
}
else if (a >= 0 && b >= 0 && a <= INT_MAX - b)
{
return a + b;
}
else
{
printf("over range/n");
return false;
}
}
int Div(int a, int b)
{
if (0 == b)
{
printf("over range/n");
return false;
}
else if ((a >= 0 && b > 0) || (a >= 0 && b < 0) || (a <= 0 && b > 0))
{
return a / b;
}
else if (a <= 0 && b < 0 && a - 1 / b != INT_MAX / b)
{
return a / b;
}
else
{
printf("over range/n");
return false;
}
}
int Mul(int a, int b)
{
if (0 == a || 0 == b)
{
return 0;
}
else if (a > 0 && b > 0 && a <= INT_MAX / b)
{
return a * b;
}
else if (a < 0 && b < 0 && a >= INT_MAX / b)
{
return a * b;
}
else if (a > 0 && b < 0 && b >= INT_MIN / a && b <= INT_MAX /a)
{
return a * b;
}
else if (a < 0 && b > 0 && a >= INT_MIN / b)
{
return a * b;
}
else
{
printf("over range/n");
return false;
}
}
int Sub(int a, int b)
{
if (a >= 0 && b >= 0)
{
return a - b;
}
else if (a<0 && b<0)
{
return a - b;
}
else if (a >= 0 && b <= 0 && a <= INT_MAX + b)
{
return a - b;
}
else if (a <= 0 && b >= 0 && a + INT_MAX >= b - 1)
{
return a - b;
}
else
{
printf("over range/n");
return false;
}
}
int main
{
int m,n;
scanf("%d%d",&m,&n);
printf("m+n=%d\n",Add(m,n));
printf("m-n=%d\n",Sub(m,n));
printf("m*n=%d\n",Mul(m,n));
if(0 != n)
{
printf("m/n=%d\n",Div(m,n));
printf("m%%n=%d\n",m%n);
}
else
{
printf("over range/n");
}
return 0;
}