L1-025 正整数A+B (15 分)

题目链接

题目大意

 读入A和B,如果A和B在【1,1000】且为正整数,输出他们的和,如果不符合要求,对应的位置输出

思路

 1.分情况讨论

2.都是数字的情况,和出现一个非数字以上

3.判读是否符合要求

坑点

 1.分情况讨论

2.都是数字的情况,和出现一个非数字以上

3.判读是否符合要求

代码 

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string a,b,c;
	int numa=0,numb=0,sum=0;
	cin>>a;//读入a 
	getchar();//吃空格 
	getline(cin,b);//读入b 
	//cout<<b;
	int lena=a.length();//a的字符串长度 
	int lenb=b.length();//b的字符串长度
	for(int i=0;i<lena;i++)//遍历字符串a 
	{
		if(a[i]<'0'||a[i]>'9')//判断是否为数字 
		{
			a='?';//如果不是数字就赋值问号 
			c='?';//c作为和,赋值问号 
			break;//跳出 
		}
	}
	for(int i=0;i<lenb;i++)//遍历字符串b 
	{
		if(b[i]<'0'||b[i]>'9')//判断是否为数字
		{
			b='?';//如果不是数字就赋值问号 
			c='?';//c作为和,赋值问号 
			break;//跳出 
		}
	}
	if(b[0]!='?'&&a[0]!='?') //当a,b两个字符串都是数字时 
	{
		for(int i=0;i<lena;i++)
		{
			numa=a[i]-'0'+numa;//转换为数字同时累加 
			if(i!=lena-1)
			{
				numa=numa*10;//如果不是一位数,则乘几次10 
			}
		}
		for(int i=0;i<lenb;i++)
		{
			numb=b[i]-'0'+numb;//转换为数字同时累加
			if(i!=lenb-1)
			{
				numb=numb*10;//如果不是一位数,则乘几次10 
			}
		}
		//printf("%d %d\n",numa,numb);
		if(numa<1||numa>1000)//判断是否符合区间 
		{
			printf("?");
		}else{
			printf("%d",numa);
		}
		cout<<" + ";
		if(numb<1||numb>1000)//判断是否符合区间 
		{
			printf("?");
		}else{
			printf("%d",numb);
		}
		cout<<" = ";
		if(numa>=1&&numa<=1000&&numb>=1&&numb<=1000)//判断是两个数是否同时符合区间 
		{
			printf("%d",numa+numb);
		}else{
			cout<<"?";
		}
		return 0;
	}
	//如果两者有一者不是数字,进入下面。 
	cout<<a<<" + "<<b<<" = "<<c;
	return 0;
}

 总结

 读清题意,找到规律的话会好写点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值