题目大意:输入两个整数进行加法或乘法,判断这两个整数以及运算结果是否会大于 int 型的范围。
解题思路:输入的整数可能会很大所以用字符串读入,atof 转为浮点型后判断是否大于 int 型能表示的最大值。
虽然 double 也不一定能准确表示输入的数,但比起 int 已经足够。
#include<iostream>
#include<cstdio>
#include<string.h>
#include<stdlib.h>
using namespace std;
#define INTMAX 2147483647
char a[1000], b[1000];
char c;
int main() {
while(scanf("%s %c %s", a, &c, b ) != EOF) {
printf("%s %c %s\n", a, c, b);
if(atof(a) > INTMAX) printf("first number too big\n");
if(atof(b) > INTMAX) printf("second number too big\n");
if(c == '+' && atof(a) + atof(b) > INTMAX) printf("result too big\n");
if(c == '*' && atof(a) * atof(b) > INTMAX) printf("result too big\n");
}
return 0;
}