您的位置:首页 > 其它

PAT L1-025. 正整数A+B

2018-03-10 21:05 316 查看

PAT L1-025. 正整数A+B

题目链接

/*
(1)B有可能包含空格
(2)A, B可能是超出范围[1, 1000]的数
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

int  // 检查a[]是否全是数字
isInt(char a[1005]) {
int i, len = strlen(a);

for( i = 0; i < len; i++ ) {
if( !(a[i] >= '0' && a[i] <= '9') ) {
return 0;
}
}
return 1;
}

int  // 判断a是否在区间[1, 1000]
f(char a[1005]) {
int i, len = strlen(a), ans = 0;

// 可看成是一个低效的atoi()函数
for( i = len - 1; i >= 0; i-- ) {
ans += (a[i] - '0') * pow(10, len - i - 1);
}
if( !(ans >= 1 && ans <= 1000) ) {
return 0;
}
return 1;
}

int
main() {
char a[1005], b[1005];

scanf("%s", a);
getchar();
gets(b); // b有可能包含空格
if( isInt(a) == 1 && isInt(b) == 1 && f(a) == 1 && f(b) == 1 ) {
printf("%s + %s = %d\n", a, b, atoi(a) + atoi(b));
}
else if( (isInt(a) == 0 || f(a) == 0) && (isInt(b) == 0 || f(b) == 0) ) {
printf("? + ? = ?\n");
}
else if( isInt(a) == 1 && f(a) == 1 ) {
printf("%s + ? = ?\n", a);
}
else if( isInt(b) == 1 && f(b) == 1 ) {
printf("? + %s = ?\n", b);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  语言题 acm入门