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

该博客介绍了一个C++程序,用于处理从标准输入读取的两个正整数A和B的和。程序需要处理各种可能的无效输入,如超出范围的数字、负数、浮点数和非数字字符。当输入有效时,程序会计算和并按照指定格式输出;否则,用问号替换无效部分。示例中展示了不同输入和相应的输出情况。
摘要由CSDN通过智能技术生成

L1-025 正整数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:

? + ? = ?

思路:输入string类型的A,B,再求A,B的长度,用isdigit link 判断A(B)中字符是否为阿拉伯数字,不是直接输出“?”break,是的话用stoi() link 函数将string类型转换成int类型,之后就好办了。

在这里插入代码片
#include <bits/stdc++.h>
//#include <sstream>
using namespace std;

int main() {
	//stringstream stream;
	int a, b, flag = 1, k = 1, d;
	string A, B;
	//输入
	cin >> A;
	getchar();
	getline(cin, B);
	//获取A,B长度
	a = A.length();
	b = B.length();
	//判断A中是否全为阿拉伯数字
	for (int i = 0; i < a; i++) {
		if (!isdigit(A[i])) {//isdigit测试字符是否为阿拉伯数字
			cout << "?";
			flag = 0;
			break;
		}
	}
	if (flag) {
		int a = stoi(A);//stoi()将string类型的A转换为int类型的a
		if (a > 0 && a < 1001)//判断a的大小范围
			cout << a;
		else {
			cout << "?";
			flag = 0;
		}
	}
	cout << " + ";
	//对B的处理同上
	for (int i = 0; i < b; i++) {
		if (!isdigit(B[i])) {
			cout << "?";
			k = 0;
			break;
		}
	}
	if (k) {
		int b = stoi(B);
		if (b > 0 && b < 1001)
			cout << b;
		else {
			cout << "?";
			k = 0;
		}
	}
	cout << " = ";
	if (flag == 0 || k == 0)
		cout << "?";
	else {
		int a = stoi(A);
		int b = stoi(B);
		d = a + b;
		cout << d << endl;
	}
	return 0;
}

缝合怪一个,编程能力很弱,一般都是面向csdn、baidu 写程序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多练项目

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值