L1-025. 正整数A+B

L1-025. 正整数A+B

本题的目标很简单,就是求两个正整数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 #include<stdio.h>
 2 #include<string.h>
 3 int main(){
 4     char A[1005],B[1005];
 5     int tmpA=0,tmpB=0,i,j,k,a=0,b=0,x=1,y=1;
 6     scanf("%s",&A);
 7     getchar();
 8     gets(B);
 9         tmpA=0;tmpB=0;x=1;y=1;
10     for(i=0;i<strlen(A);i++){
11         /*if(A[i]=='0' && x){
12             if(A[i+1]!='0')
13                 x=0;
14         }
15         else{*/
16         if('1'>A[0] || A[0]>'9'){
17             tmpA=1;
18             break;
19         }
20         if('0'>A[i] || A[i]>'9'){
21             tmpA=1;
22             break;
23         }
24         //}
25     }
26     for(i=0;i<strlen(B);i++){
27         /*if(B[i]=='0' && y){
28             if(B[i+1]!='0')
29                 y=0;
30         }
31         else{*/
32         if('1'>B[0] || B[0]>'9'){
33             tmpB=1;
34 
35             break;
36         }
37         if('0'>B[i] || B[i]>'9'){
38             tmpB=1;
39         }
40         //}
41     }
42     a=A[strlen(A)-1]-48;
43         for(i=strlen(A)-2,j=10;i>=0;i--){
44             a+=(A[i]-48)*j;
45             j=j*10;
46         }
47     b=B[strlen(B)-1]-48;
48         for(i=strlen(B)-2,j=10;i>=0;i--){
49             b+=(B[i]-48)*j;
50             j=j*10;
51         }
52         if(a<1 || a>1000){
53             tmpA=1;
54         }
55         if(b<1 || b>1000){
56             tmpB=1;
57         }
58     if(tmpA==0 && tmpB==0){
59         
60         printf("%d + %d = %d",a,b,a+b);
61     }
62     else if(tmpA && tmpB==0){
63         printf("? + %d = ?",b);
64 
65     }
66     else if(tmpB && tmpA==0){
67         printf("%d + ? = ?",a);
68     }
69     else{
70         printf("? + ? = ?");
71     }
72     printf("
");
73     
74     return 0;
75 }
原文地址:https://www.cnblogs.com/yoci/p/6760880.html