C语言实现给定两个字符串形式的非负整数 num1 与 num2,计算它们的和并同样以字符串形式返回。
时间: 2023-11-13 13:43:45 浏览: 91
您可以使用以下C语言代码来实现这个功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *addStrings(char *num1, char *num2) {
int len1 = strlen(num1);
int len2 = strlen(num2);
int maxSize = (len1 > len2 ? len1 : len2) + 1;
char *result = (char *)malloc(sizeof(char) * (maxSize + 1));
int carry = 0, sum = 0;
int i = len1 - 1, j = len2 - 1, k = maxSize - 1;
while (i >= 0 || j >= 0) {
int digit1 = (i >= 0 ? num1[i] - '0' : 0);
int digit2 = (j >= 0 ? num2[j] - '0' : 0);
sum = digit1 + digit2 + carry;
carry = sum / 10;
sum %= 10;
result[k] = sum + '0';
i--;
j--;
k--;
}
if (carry > 0) {
result[k] = carry + '0';
k--;
}
result[maxSize] = '\0';
if (k >= 0) {
char *temp = (char *)malloc(sizeof(char) * (maxSize - k));
strcpy(temp, result + k + 1);
free(result);
result = temp;
}
return result;
}
int main() {
char num1[] = "123";
char num2[] = "456";
char *sum = addStrings(num1, num2);
printf("Sum: %s\n", sum);
free(sum);
return 0;
}
```
上述代码定义了一个函数 `addStrings`,它接受两个字符串 `num1` 和 `num2`,并返回它们的和。在 `main` 函数中,我们使用示例字符串 "123" 和 "456" 来测试这个函数,并输出计算结果。
请注意,此代码假设输入的字符串仅包含数字字符,并且不包含任何符号或前导零。如果输入的字符串可能包含其他字符,请在使用之前先进行检查和处理。
阅读全文