A1001 A+B Format 数字相加格式化输出

A1001 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 −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
最容易想到的是将结果转换为字符数组然后输出,实际上只需要通过取余数和除法,将数字拆成数字数组,然后输出即可。下面代码使用ans来存储计算结果的绝对值,symbol来存储计算结果的符号(1代表非负数,-1代表负数)。

#include <stdio.h>
#include <stdlib.h>
//以-1 10000=9999为例
void shuchu(int n, int cnt) {
    
    
	if (n == 0) return;//如果记录到最高位前一位了,退出递归,堆栈弹出
	shuchu(n / 10, ++cnt);
	//cnt记录最后一位数从个位开始的位数
	if (n >= 10 && cnt % 3 == 0) putchar(',');  
	printf("%d", n%10);     //9,1 9,2 9,3 9,4 0,5进栈,到0时出栈
}

int main() {
    
    
	int a, b, n;
	scanf("%d %d", &a, &b);
	n = a + b;
	int i = -1;
	if (n < 0) {
    
    
		n = -n;
		putchar('-');
	}
	else if (n == 0) putchar('n');
	int group[100000];
	do {
    
    
		group[++i] = n % 10;
		n /= 10;
	} while (n > 0);
	for (int k = i; k >= 0; k--) {
    
    
		printf("%d", group[k]);
		if (k > 0 && k % 3 == 0) putchar(',');
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_40602655/article/details/110634726
今日推荐