这道题的意思是给出两个大于0的正整数,做加法或乘法运算。
若第一个数字超过int范围则输出first number too big;
若第二个数字超过int范围则输出second number too big;
若结果超出int范围则输出result too big;
我在别人的题解上看到有人用atof函数写的,我在写这一题时不知道这个函数的用法,所以用的一般的方法写的。
AC Code
#include<stdio.h>
#include<string.h>
char s1[110],s2[110];
int main(){
long long a,b;
int l1,l2,i,max = ((1<<30)-1)*2 + 1;//这个数max是int范围的最大值
char ch;
while(scanf("%s %c %s",s1,&ch,s2)==3){
l1 = strlen(s1);
l2 = strlen(s2);
printf("%s %c %s\n",s1,ch,s2);
a = b = 0;
for(i=0;i<l1;i++){
a = a*10 + s1[i] - '0';
if(a > max){若第一个数大于int范围最大值
printf("first number too big\n");
break;
}
}
for(i=0;i<l2;i++){
b = b*10 + s2[i] - '0';
if(b > max){//若第二个数大于int最大值
printf("second number too big\n");
break;
}
}
if(ch == '+' && a+b>max)
printf("result too big\n");
else if(ch=='*' && a*b>max)
printf("result too big\n");
}
return 0;
}