输入两个不多于300位的非负正整数,实现两者相加
时间: 2024-10-08 21:20:18 浏览: 30
输入一个不多于5位的正整数.cpp
在C语言中,我们可以编写一个简单的程序来实现两个非负正整数的加法。这里可以用数组或者字符串表示这两个数字,并逐位相加,同时考虑进位的问题。以下是一个基本的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 将字符串转换为整数
int atoi(const char *str) {
int result = 0;
while(*str != '\0') {
if(*str >= '0' && *str <= '9') {
result = result * 10 + (*str - '0');
}
str++;
}
return result;
}
// 两个数相加的辅助函数
int add(char* num1, char* num2) {
int len1 = strlen(num1);
int len2 = strlen(num2);
int max_len = (len1 > len2) ? len1 : len2;
char sum[max_len+1];
int carry = 0;
for(int i = max_len; i >= 0; i--) {
int digit1 = (i < len1) ? atoi(&num1[len1-i-1]) : 0;
int digit2 = (i < len2) ? atoi(&num2[len2-i-1]) : 0;
int temp_sum = digit1 + digit2 + carry;
carry = temp_sum / 10;
sum[i] = temp_sum % 10 + '0';
}
// 如果有进位,添加到最前面
if(carry > 0)
sum[0] = carry + '0';
sum[max_len] = '\0'; // 添加终止符
return atoi(sum);
}
int main() {
char num1[301], num2[301];
printf("请输入第一个整数:");
fgets(num1, sizeof(num1), stdin);
num1[strcspn(num1, "\n")] = '\0'; // 去除换行符
printf("请输入第二个整数:");
fgets(num2, sizeof(num2), stdin);
num2[strcspn(num2, "\n")] = '\0';
int result = add(num1, num2);
printf("两数之和为:%d\n", result);
return 0;
}
```
在这个程序中,首先读取用户输入的两个数字,然后将它们分别转换成整型,最后通过`add`函数逐位相加得到结果。
阅读全文