本题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。

输入格式:

输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。

注意:我们把输入中出现的第1个空格认为是A和B的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。

输出格式:

如果输入的确是两个正整数,则按格式“A + B = 和”输出。如果某个输入不合要求,则在相应位置输出“?”,显然此时和也是“?”。

输入样例1:

123 456

输出样例1:

123 + 456 = 579

输入样例2:

22. 18

输出样例2:

? + 18 = ?

输入样例3:

-100 blabla bla...33

输出样例3:

? + ? = ?

记得只有在[1,1000]范围里的数字才有效哦
 1 #include<stdio.h>
 2 #include<iostream>
 3 #include<math.h>
 4 #include<string.h>
 5 #include<limits.h>
 6 #include<algorithm>
 7 #include<queue>
 8 using namespace std;
 9 
10 int main()
11 {
12     char a[1000],b[1000];
13     cin>>a;
14     scanf(" ");
15     gets(b);
16     bool flag1=true,flag2=true;
17     int len1=strlen(a),len2=strlen(b);
18     if(len1<1||len1>4)
19     flag1=false;
20     else
21     {
22         for(int i=0;i<len1;i++)
23         if(a[i]<'0'||a[i]>'9')
24         {
25             flag1=false;
26             break;
27         }
28     }
29     if(len2<1||len2>4)
30     flag2=false;
31     else
32     {
33         for(int i=0;i<len2;i++)
34         if(b[i]<'0'||b[i]>'9')
35         {
36             flag2=false;
37             break;
38         }
39     }
40     int c=0,d=0;
41     if(flag1&&flag2)
42     {
43         for(int i=0;i<len1;i++)
44         {
45             c=c*10+a[i]-'0';
46         }
47         for(int i=0;i<len2;i++)
48         {
49             d=d*10+b[i]-'0';
50         }
51         if(c<1||c>1000)flag1=false;
52         if(d<1||d>1000)flag2=false;
53     }
54     if(flag1)cout<<a;
55     else cout<<"?";
56     cout<<" + ";
57     if(flag2)cout<<b;
58     else cout<<"?";
59     cout<<" = ";
60     if(flag1&&flag2)
61     {
62         cout<<c+d;
63     }
64     else cout<<"?";
65     cout<<endl;
66     return 0;
67 }