7-57 正整数A+B (15分)

7-57 正整数A+B (15分)
 

题的目标很简单,就是求两个正整数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:

? + ? = ?



#include<stdio.h>
#include<string.h>

int main()   
{
 int i;
 int x=0;
 int y=0;
 int flag_x=1;
 int flag_y=1;
 char c;
 while((c=getchar())!=' ')
 {
 
  if(c>='0'&&c<='9')
  x=x*10+c-'0';
  else
  {
   flag_x=0;
   break;
  }
 }
  if(flag_x==0)
   while((c=getchar())!=' ');
    while((c=getchar())!='\n')
 {
    
  if(c>='0'&&c<='9')
  {
  
  y=y*10+c-'0';
     }
  else
  {
  
   flag_y=0;
   break;
  }
 }  
 if(flag_x==0||x<1||x>1000)
 {
 printf("? + ");
 flag_x=0;
}
 else
 printf("%d + ",x);
 if(flag_y==0||y<1||y>1000)
 {
 printf("? = ");
 flag_y=0;
    }
 else
 printf("%d = ",y);
 if((flag_x&&flag_y)==0)
 {
  printf("?\n");
 }
 else
 printf("%d",x+y);
 
 
 return 0;
}
 
posted @ 2020-10-21 16:29  罪梦者  阅读(810)  评论(0)    收藏  举报