【PAT甲级】 1001 A+B Format

【PAT甲级】 1001 A+B Format

原题

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 −106a,b≤106. 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 1:

-1000000 9

Sample Output 1:

-999,991

思路

题目要求

每三个数字要用,分割除非小于四位数。

题目分析

  1. 关键在于输出的标准格式;
  2. 输出为一行;
  3. 在考虑每三个输出的时候要记得考虑0;

参考代码如下

include <iostream>
using namespace std;
typedef long long ll;

void format(int c, int num){
	if(c/10 != 0) format(c/10,num+1);
	printf("%d",c%10);
	if(num%3==0&&num!=0){//要考虑为0得情况,不然最后也会输出
		printf(",");
	}
}

int main(){
	ll a,b;
	scanf("%lld %lld",&a,&b);
	ll c = a+b;
	if(c<0){
		printf("-");
		c = -c;
	}
	int num = 0;
	format(c, num);
}

可能会出现的问题

在这里插入图片描述

  • 这段英文警告意思是,scanf的返回值正在被忽略,在warn_unused_result中有说明;
  • 即你的程序忽略了scanf的值,这可能会产生一些问题,所以GCC编译器给了你一个警告;
  • warning并不影响程序执行,而出现测试用例未通过的原因是程序本身存在其他错误,诸如逻辑问题,请仔细检查程序;
  • warning一般在本地编译器内不会出现。

  • 网上的参考代码很多,比如转string之类的;
  • 以上仅是用来记录我个人的想法和答题方式;
  • 仅为c++入门选手,如有错误或者更好的方法欢迎指正与探讨;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值