#include<stdio.h>
#include<string.h>
#include<math.h>
int main() {
char a[1020] = "\n";
char b[1020] = "\n";
char c[2020];
int m, n, k = 0, z = 0,v=0;
int i, counta = 0, countb = 0;
gets(c);
for (i = 0; i < strlen(c); i++) {
if (c[i] != ' ') {
a[v] = c[i];
v++;
}
else break;
}
for (i = 0; i < strlen(c) - v + 1; i++) {
b[i] = c[v + 1];
v++;
}
for (i = 0; i < strlen(a); i++) {
if (a[i] - '0' <= 9 && a[i] - '0' >= 0) {
k += (a[i] - '0') * (pow(10, strlen(a) - 1 - i));
counta++;
}
}
if (counta == strlen(a))
m = 1;
else
m = 0;
for (i = 0; i < strlen(b); i++) {
if (b[i] - '0' <= 9 && b[i] - '0' >= 0) {
countb++;
z += (b[i] - '0') * (pow(10, strlen(b) - 1 - i));
}
}
if (countb == strlen(b))
n = 1;
else
n = 0;
if (m == 1 && n == 1) {
printf("%s + %s = %d", a, b, k + z);
}
if (m == 1 && n == 0) printf("%s + ? = ?", a);
if (m == 0 && n == 1) printf("? + %s = ?", b);
if (m == 0 && n == 0) printf("? + ? = ?");
return 0;
}
这题比较坑,测试点5、6限制A、B的范围在[1,1000],
测试点4 B可能含有空格。
#include<stdio.h>
#include<string.h>
#include<math.h>
int main() {
char a[1020] = "\n";
char b[1020] = "\n";
char c[2020];
int m, n, k = 0, z = 0, v = 0;
int i, counta = 0, countb = 0;
gets(c);
for (i = 0; i < strlen(c); i++) {
if (c[i] != ' ') {
a[v] = c[i];
v++;
} else break;
}
int lenb = 0;
for (i = v+1; i < strlen(c); i++) {
b[lenb++] = c[i];
}
for (i = 0; i < strlen(a); i++) {
if (a[i] - '0' <= 9 && a[i] - '0' >= 0) {
k += (a[i] - '0') * (pow(10, strlen(a) - 1 - i));
counta++;
}
}
if (counta == strlen(a))
m = 1;
else
m = 0;
if(k > 1000 || k < 1) {
m = 0;
}
int empty = 0;
for (i = 0; i < strlen(b); i++) {
if (b[i] >= '0' && b[i] <='9') {
countb++;
z =z*10+ (b[i] - '0');
}else if(b[i]==' '){
empty++;
}
}
if (countb+empty == strlen(b))
n = 1;
else
n = 0;
if(z > 1000 || z < 1) {
n = 0;
}
if (m == 1 && n == 1) {
printf("%d + %d = %d", k, z, k + z);
}
if (m == 1 && n == 0) printf("%s + ? = ?", a);
if (m == 0 && n == 1) printf("? + %s = ?", b);
if (m == 0 && n == 0) printf("? + ? = ?");
return 0;
}