【问题描述】能使用数组的方式对两个15位的正整数相加,并将结果显示出来。 提示:请将每一位数存放在一个数组元素中,然后逐位相加。 【输入形式】 输入两个15位的正整数,每个整数占一行。 【输出形式】 结果显示在下一行 C语言
时间: 2024-12-20 12:16:00 浏览: 15
在C语言中,你可以使用数组来模拟每一位相加的过程。这里是一个简单的示例程序,它会读取两个15位的正整数,分别存储在两个字符数组`num1[]`和`num2[]`中,然后逐位相加并将结果存储在另一个数组`result[]`中。最后输出计算后的数字。
```c
#include <stdio.h>
#define MAX_DIGITS 16 // 为了容纳15位数以及进位
void addNumbers(char num1[], char num2[]) {
int len = strlen(num1) - 1; // 获取输入字符串长度减一(因为索引从0开始)
char result[MAX_DIGITS] = {0}; // 初始化结果数组
int carry = 0; // 携带进位值
for (int i = len; i >= 0; i--) {
int digit1 = num1[i] - '0'; // 转换为十进制
int digit2 = num2[i] - '0';
int sum = digit1 + digit2 + carry; // 相加
carry = sum / 10; // 计算进位
result[i] = sum % 10 + '0'; // 将结果转换回字符并添加到结果数组
}
if (carry > 0) { // 如果有剩余的进位,添加在最左边
result[0] = carry + '0';
}
}
int main() {
char inputNum1[MAX_DIGITS];
char inputNum2[MAX_DIGITS];
printf("请输入第一个15位正整数:\n");
fgets(inputNum1, sizeof(inputNum1), stdin);
inputNum1[strlen(inputNum1) - 1] = '\0'; // 去除行尾的换行符
printf("请输入第二个15位正整数:\n");
fgets(inputNum2, sizeof(inputNum2), stdin);
inputNum2[strlen(inputNum2) - 1] = '\0';
addNumbers(inputNum1, inputNum2);
printf("两数相加的结果为: ");
for (int i = 0; i <= MAX_DIGITS; i++) {
if (i == MAX_DIGITS && result[i] == 0) break;
printf("%d", result[i]);
}
printf("\n");
return 0;
}
```
运行此程序时,请确保输入的数字不超过15位,并且是正整数。注意这个程序不包括错误处理,例如无效输入检查。
阅读全文