1001 A+B Format (20 分) 全网最细 题目详解 翻译 完整代码 PAT甲级真题解析

本文讲解如何使用C++处理字符串,实现输入两个整数a和b,以每三位加一个逗号的标准格式输出它们的和。涉及符号处理、字符串遍历和边界条件判断。

1001 A+B Format (20 分)

本道题需要了解的预备知识string头文件使用方法

中文翻译:(原题目为英文)

计算a+b并以标准格式输出,即:每三位加一个 “,” 的格式输出(若少于四个数字则直接输出)。

输入格式:

每个输入文件包含一个测试用例。每个用例包含一对整数a和b,其中(-10^6 ≤ a,b ≤ 10^6),数字之间用空格分割。

输出格式:

对于每个测试用例,你需要按照格式要求在一行中输出a+b的计算结果。

输入样例:

-1000000 9

输出样例:

-999,991


题目解析:

字符串处理题,较为简单,有两种解题思路,无非都是向字符串中添加逗号输出。如果没思考过的话,先去思考再继续往下看!
首先是柳神的方法,我觉得一般人在考场上都想不出来这么”神奇“的表达式,短短几行代码一边判断一边输(不愧是柳神)。普通人(我)大概率想到的都是:”先加逗号,再输出"的形式。但是正向不好判断逗号的位置,所以从后向前看,每三个数字添加一个逗号,并且需要注意边界情况(第一位数字)。

整体思路如下:

  1. a+b的结果可能为正数也可能为负数,符号会干扰我们对计算结果的处理(添加逗号)。所以需要在最开始先进行符号处理(判断字符串的第一位字符:若为 “-” 输出负号并删除字符串中的负号,若为数字说明是正数,不需要处理)。
  2. 字符串从后向前遍历,每三个数字在该数字位上(前)添加一个逗号。
    在这里插入图片描述
  3. 注意边界处理,如果出现以下情况,则不可在首位数字前添加逗号。即条件为:当前位不是字符串的第一位(0号位 )且当前位数刚好为三的倍数。
    在这里插入图片描述
  4. 处理完成后直接输出,没什么好说的,直接上代码。
#include <iostream>
using namespace std;
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值