PAT A1001 A+B Format (20)

PAT A1001 A+B Format 原题链接
PAT甲级题目目录(CSDN)
PAT甲级题目目录(简书)
在简书上查看本文
Calculate a+b and output the sum in standard format – that is, the digits must be separated into groups of three by commas (unless there are less than four digits).
Input Specification:
Each input file contains one test case. Each case contains a pair of integers a and b where −10​6​​≤a,b≤10​6​​. The numbers are separated by a space.
Output Specification:
For each test case, you should output the sum of a and b in one line. The sum must be written in the standard format.
Sample Input:

-1000000 9

Sample Output:

-999,991

一次代码:
思路: 将数值输出为字符串然后从后往前加上逗号,最后打印结果
分析:

  1. 遇到数字显示类需要按位处理的程序时使用sprintf (#include <cstring>)转换成字符数组
  2. 为了防止符号被当成数字计算位数,符号需要单独处理
  3. 在需要判断正负号输出时注意0的符号
  4. 在进行操作时注意下标与操作的对应关系:这里是显示','还是数字的区别
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
int main() {
  int a, b, sum;
  bool ispositive;
  char s_sum[100];
  scanf("%d%d", &a, &b);
  sum = a + b;
  if (sum >= 0)
    ispositive = true;
  else
    ispositive = false;
  sum = abs(sum);
  sprintf(s_sum, "%d", sum);

  int len = int(strlen(s_sum));
  int comma_tag = len;
  if (len > 3) {
    while (comma_tag > 0) {
      comma_tag -= 3;
      if (comma_tag > 0) {
        for (int i = len; i >= comma_tag; i--) {
          //因为要移动'\0'所以从len开始
          s_sum[i + 1] = s_sum[i];
        }
        s_sum[comma_tag] = ',';
      }
    }
  }

  if (ispositive) ;
  else
    printf("-");
  printf("%s", s_sum);
  return 0;
}

一次改进代码:
思路: 对于仅作输出用的字符串进行操作时,可以边计算边输出,而不用真的修改字符串
分析:

  1. 在输入输出数量不大,格式不复杂时可以考虑使用iostream,string
  2. 符号可以当做数字一起处理,只要在输出时判断','不要加在'-'和数字之间即可
  3. 由于逗号的位置是从后开始数的,但是按位输出时需要从前开始输出,需要求出正序下标和倒序下标之间的转化关系.如图,设"倒序下标"为 j j j,每当输出完满足 j m o d &ThinSpace;&ThinSpace; 3 = 0 j\mod 3=0 jmod3=0的位上的字符时输出一个逗号(不包括'-'和最后一位).观察得出 j = ( l e n − 1 − i ) j=(len-1-i) j=(len1i)(len是字符串长度).
#include <iostream>
#include <string>
using namespace std;
int main() {
  int a, b;
  cin >> a >> b;
  string s = to_string(a + b);
  int len = s.length();
  for (int i = 0; i < len; i++) {
    cout << s[i];
    if (s[i] == '-')
      continue;
    if ((len - 1 - i) % 3 == 0 && i != len - 1)
      cout << ',';
  }
  return 0;
}

二次改进代码:
分析:

  1. 希望在不麻烦的情况下把continue那一句拿到循环外面做
  2. 想要把符号和数字分开处理,即需要计算伪下标 i − 1 i-1 i1和倒序下标 j j j的关系.如图, j = ( l e n − 2 − ( i − 1 ) ) = ( l e n − 1 − i ) j=(len-2-(i-1))=(len-1-i) j=(len2(i1))=(len1i)刚好和连同负号一起考虑时一样
#include <iostream>
#include <string>
using namespace std;
int main() {
  int a, b;
  cin >> a >> b;
  string s = to_string(a + b);
  int len = s.length();
  int i = 0;
  if (s[i] == '-') {
    cout << s[i];
    i++;
  }
  for (; i < len; i++) {
    cout << s[i];
    if ((len - 1 - i) % 3 == 0 && i != len - 1)
      cout << ',';
  }
  return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值