大数相加考虑到数据长度有限,因此采用字符串的方式进行计算,还要考虑到进位的问题,看下代码:
void big_data_add(char * num1, char * num2){ int length, length1, length2; int i, j; int intNum1[MAX_LEN] = {0}; int intNum2[MAX_LEN] = {0}; if (num1 == NULL || num2 == NULL) { return; } length1 = strlen(num1); length2 = strlen(num2); length = length1 > length2 ? length1 : length2; for (j = length, i = 0; i < length1; i++, j--) { intNum1[j] = num1[length1 - i - 1] - '0'; } for (j = length, i = 0; i < length2; i++, j--) { intNum2[j] = num2[length2 - i - 1] - '0'; } for (i = length; i >= 0; i--) { intNum1[i] += intNum2[i]; if (intNum1[i] >= 10) { intNum1[i] -= 10; intNum1[i - 1]++; } } PRintf("the sun of num1 and num2 is: "); if (intNum1[0] == 0) { for (i = 1; i <= length; i++) { printf("%d", intNum1[i]); } } else { for (i = 0; i <= length; i++) { printf("%d", intNum1[i]); } } printf("/n");}验证程序:
#include <stdio.h>#include <string.h>#define MAX_LEN 256int main(){ char num1[MAX_LEN]; char num2[MAX_LEN]; printf("Enter num1: "); gets_s(num1); printf("Enter num2: "); gets_s(num2); big_data_add(num1, num2); return 0;}输出结果:
新闻热点
疑难解答