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

一、题目

二、解题思路

  1. 输入两个字符串,一个 cin 输入,一个 getline 输入;
  2. 判断两个字符串是否是正整数:字符串长度、是否有非数字的字符、是否在区间 [1,100] ;
  3. 分情况输出。

三、代码

#include<iostream>
using namespace std;
//函数的声明 
int is_integer(string str); 

int main()
{
	string a,b;
	cin>>a;
	getline(cin,b);
	b.erase(0,1);
	int A=is_integer(a);
	int B=is_integer(b);
	if(A==0 && B==0)
	{
		cout<<"? + ? = ?";
	}
	else if(A==0 && B!=0)
	{
		cout<<"? + "<<B<<" = ?";
	}
	else if(A!=0 && B==0)
	{
		cout<<A<<" + ? = ?";
	}
	else
	{
		cout<<A<<" + "<<B<<" = "<<A+B;
	}
	return 0;
}
//判断输入的字符串是否是整数,是则返回 1 ,否则返回 0 
int is_integer(string str)
{	
	if(str.size()>4)
	{
		return 0;
	}
	int sum=0;	
	for(int i=0;i<str.size();i++)
	{
		if(str[i]>='0' && str[i]<='9')
		{
			sum=sum*10+int(str[i])-'0';
		}
		else
		{
			return 0;
		}
	}
	if(sum<1 || sum>1000)
	{
		return 0;
	}
	else
	{
		return sum;
	}
}

四、总结

  1. 若输入为 "123 45 6",则 A 为 "123" ,B 为 "45 6" ,结果为 "123 + ? = ?" 。
  2. 题目要求把输入中出现的第1个空格认为是 A 和 B 的分隔,并且至少存在一个空格:A 直接 cin 输入即可,B 需要 getline输入,此时 B 包含前边的空格,所以通过 erase 把第一个多余的空格删除。
  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值