大整数加法

/* ============================================================================ Name : BigInteger.c Author : QiBaoyuan Version : Copyright : Your copyright notice Description : Hello World in C, Ansi-style ============================================================================ */ #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LEN 2000 int an1[MAX_LEN + 10]; int an2[MAX_LEN + 10]; char szLine1[MAX_LEN + 10]; char szLine2[MAX_LEN + 10]; int main(void) { printf("输入第一个加数:"); scanf("%s", szLine1); printf("输入第二个加数:"); scanf("%s", szLine2); int i = 0, j = 0; memset(an1, 0, sizeof(an1)); memset(an2, 0, sizeof(an2)); int nLen1 = strlen(szLine1);//得到第1个加数的长度 j = 0;//设置j=0 for (i = nLen1 - 1; i >= 0; i--) {//反序放 an1[j++] = szLine1[i] - '0'; } int nLen2 = strlen(szLine2);//得到第2个加数的长度 j = 0;//an2 for (i = nLen2 - 1; i >= 0; i--) { an2[j++] = szLine2[i] - '0'; } for (i = 0; i < MAX_LEN; i++) { an1[i] += an2[i]; if (an1[i] >= 10) {//超过10 an1[i] -= 10; an1[i + 1] += 1;//进位 } } printf("/n"); int bStartOutput = 0;//跳过多余的0 for (i = MAX_LEN; i >= 0; i--) { if (bStartOutput == 1) { printf("%d", an1[i]); } else if (an1[i] != 0) {//从高位扫描,不为0,则开始输出结果,并置输出位为1 printf("%d", an1[i]); bStartOutput = 1; } } if (bStartOutput == 0) printf("0"); return EXIT_SUCCESS; }  

你可能感兴趣的:(大整数加法)