PTA 正整数A+B

时间:2021-04-03 13:04:18   收藏:0   阅读:21

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

输入格式:

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

注意:我们把输入中出现的第1个空格认为是AB的分隔。题目保证至少存在一个空格,并且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<stdlib.h>
 3 #include<string.h>
 4 int main(){
 5     char a[1001],b[1001];
 6     int f1,f2,i;
 7     scanf("%s",a);
 8     getchar();
 9     gets(b);
10     if(!atoi(a)){
11         f1=1;
12     }else{
13     for(i=0;i<strlen(a);i++){
14         if(a[i]>=48&&a[i]<=57){
15             f1=1;
16         }else{
17             f1=0;
18             break;
19         }
20     }
21     } 
22     for(i=0;i<strlen(b);i++){
23         if(b[i]>=48&&b[i]<=57){
24             f2=1;
25         }else{
26             f2=0;
27             break;
28         }
29     }
30     if(f1!=0||f2!=0){
31     if(atoi(a)>1000||atoi(a)<=0){
32         f1=0;
33     }else if(atoi(b)>1000||atoi(b)<=0){
34         f2=0;
35     }
36     }
37     if(f1!=0&&f2!=0){
38         printf("%d + %d = %d",atoi(a),atoi(b),atoi(a)+atoi(b));
39     }else if(f1==0&&f2!=0){
40         printf("? + %d = ?",atoi(b));
41     }else if(f1!=0&&f2==0){
42         printf("%d + ? = ?",atoi(a));
43     }else if(f1==0&&f2==0){
44         printf("? + ? = ?");
45     }
46     return 0;
47 }

 

 

原文:https://www.cnblogs.com/8023yyl/p/14613147.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!