c++代码输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。
时间: 2024-03-24 13:13:37 浏览: 37
由于 a 和 b 都不超过 100 位,因此需要使用高精度计算。以下是一种 C 语言实现高精度加法的方法:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 105
int a[MAX_LEN], b[MAX_LEN], sum[MAX_LEN];
void reverse(char s[]) {
int len = strlen(s);
for (int i = 0; i < len / 2; i++) {
char temp = s[i];
s[i] = s[len - i - 1];
s[len - i - 1] = temp;
}
}
void str_to_int(char s[], int num[]) {
int len = strlen(s);
for (int i = 0; i < len; i++) {
num[i] = s[i] - '0';
}
reverse(s);
}
void add(int a[], int b[], int sum[]) {
int carry = 0;
for (int i = 0; i < MAX_LEN; i++) {
int s = a[i] + b[i] + carry;
sum[i] = s % 10;
carry = s / 10;
}
}
void int_to_str(int num[], char s[]) {
int len = 0;
for (int i = MAX_LEN - 1; i >= 0; i--) {
if (num[i] != 0) {
len = i + 1;
break;
}
}
for (int i = 0; i < len; i++) {
s[i] = num[i] + '0';
}
if (len == 0) {
s[0] = '0';
s[1] = '\0';
} else {
s[len] = '\0';
}
reverse(s);
}
int main() {
char a_str[MAX_LEN], b_str[MAX_LEN];
scanf("%s %s", a_str, b_str);
str_to_int(a_str, a);
str_to_int(b_str, b);
add(a, b, sum);
char sum_str[MAX_LEN];
int_to_str(sum, sum_str);
printf("%s\n", sum_str);
return 0;
}
```
该代码先将输入的字符串转换为整数数组,然后执行高精度加法,最后将结果转换为字符串输出。