两个大数(位数在50位以上)相加
发布时间:2020-12-14 04:06:16 所属栏目:大数据 来源:网络整理
导读:有时候为了出题考一些人,有人就出了这么一道题,其实其中逻辑也很简单。 废话不多说,很简单,请看源码: #includestdio.h#define N 100int char_to_int(char ch){switch(ch){case '0':return 0;case '1':return 1;case '2':return 2;case '3':return 3;cas
有时候为了出题考一些人,有人就出了这么一道题,其实其中逻辑也很简单。 废话不多说,很简单,请看源码: #include<stdio.h> #define N 100 int char_to_int(char ch) { switch(ch){ case '0': return 0; case '1': return 1; case '2': return 2; case '3': return 3; case '4': return 4; case '5': return 5; case '6': return 6; case '7': return 7; case '8': return 8; case '9': return 9; } } char int_to_char(int ch) { switch(ch){ case 0: return '0'; case 1: return '1'; case 2: return '2'; case 3: return '3'; case 4: return '4'; case 5: return '5'; case 6: return '6'; case 7: return '7'; case 8: return '8'; case 9: return '9'; } } void add(int k,int k2,char one[],char two[]) { int i = k2; int max = k; int j = 0; int add_1[N + 1] = {0}; int c; char sum[N + 1],sum2[N + 1];; for(;i >= 0; max--,i--,j++) { c = char_to_int(one[max]) + char_to_int(two[i]) + add_1[j]; if(c > 9) { sum[j] = int_to_char(c % 10); add_1[j + 1] = 1; }else { sum[j] = int_to_char(c); } } i = k - k2 -1; for(;i >= 0; j++,max--) { c = char_to_int(one[max]) + add_1[j]; if(c > 9) { sum[j] = int_to_char(c % 10); add_1[j + 1] = 1; }else { sum[j] = int_to_char(c); } } if(add_1[j] == 1) { sum[j++] = '1'; } sum[j] = ' '; j--; i = 0; for(; j>=0; j--) { sum2[i] = sum[j]; i++; } sum2[i] = ' '; printf("%50s",sum2); printf("nn"); } void two_bignumber_add() { char one[N],two[N]; int i = 0,k,k2; printf("input a big number:n"); gets(one); printf("input another number:n"); gets(two); for(i = 0; one[i] != ' '; i++){} k = i - 1; for(i = 0; two[i] != ' '; i++){} k2 = i - 1; printf("tt--------------the result is:----------------"); printf("n%50sn",one); printf("%50sn",two); printf("tt--------------------------------------------n"); if(k >= k2) { add(k,k2,one,two); }else if(k < k2) { add(k2,two,one); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |