A1001 A+B Format Digital addition formatted output

A1001 A+B Format Digital addition formatted output

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

The main idea of ​​the topic
Add two numbers together and output the final result in a standard format

Idea 1
The easiest thing to think of is to convert the result into a character array and then output. In fact, you only need to take the remainder and divide to split the number into an array of numbers, and then output it. The following code uses ans to store the absolute value of the calculation result, and symbol to store the sign of the calculation result (1 represents a non-negative number, -1 represents a negative number).

#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;
}

Guess you like

Origin blog.csdn.net/qq_40602655/article/details/110634726