L1-25 正整数A+B

样例3:123 123 kjaksdj  第一个空格以后的都是B

注意:我们把输入中出现的第1个空格认为是AB的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。
意思中隐含:A可以是空字符串 所以要先读取整行字符 之后根据空格的出现位置进行分割 substr

左闭右开

#include <iostream>
#include <cmath>
#include <cstring> //substr() 截取字符串 
using namespace std;

string a,b,c;
int res;
int m,n;
int main(){
   getline(cin,c);
   for(int i=0;i<c.size();i++){
   	if(c[i]==' '){
   		a=c.substr(0,i);
   		b=c.substr(i+1,c.size());
   		break;//找到后就立马退出 
	   }
   }
   int af=0,bf=0;//判断是否有非数字项 有负号 也不可。 
   for(int i=0;i<a.size();i++){
   	  if((a[i]-'0')>=0&&(a[i]-'0')<=9) m+=pow(10,a.size()-i-1)*(a[i]-'0');
   	  else af=1;//非法
   }
   if(m==0||m>1000) af=1;//是否越界 
 
   for(int i=0;i<b.size();i++){
   	  if((b[i]-'0')>=0&&(b[i]-'0')<=9) n+=pow(10,b.size()-i-1)*(b[i]-'0');
   	  else bf=1;//非法
   }
   if(n==0||n>1000) bf=1;
   
   if(af){
   	  if(bf) cout<<"? + ? = ?";
   	  else cout<<"? + "<<n<<" = ?";
   }
   else{
   	  if(bf) cout<<m<<" + "<<"? = "<<"?";
   	  else cout<<m<<" + "<<n<<" = "<<m+n;
   }
    return 0;
}

Python解法 (异常处理+maxsplit)

a,b=input().split(maxsplit=1) 必须加maxsplit 
try:
    a=int(a)
    if a<=0 or a>1000:
        a='?'
except ValueError:
    a='?'
try:
    b=int(b)
    if b<=0 or b>1000:
        b='?'
except ValueError:
    b='?'
if a=='?' or b=='?':
    t='?'
else:
    t=a+b
print("{} + {} = {}".format(a,b,t))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值