【C语言代码】大数求和
2014-03-17 22:25
204 查看
大数求和
对于超大数的加法,睡觉时突发奇想,使用的是补零法 与倒置相结合运算。
对于超大数的加法,睡觉时突发奇想,使用的是补零法 与倒置相结合运算。
#include <stdio.h> #include <string.h> /************ 前后倒置函数 ***************/ void reverse(char *str) { unsigned int i,j; char c; for(i = 0 , j = strlen(str)-1; i < j; i++,j--) { c = str[i]; str[i] = str[j]; str[j] = c ; } } void main() { char str1[100], str2[100],str[101]; char *p1 = NULL, *p2 = NULL,*p = NULL; unsigned int len1 = 0,len2 = 0,len = 0; unsigned int i = 0; printf("input the first number : "); scanf("%s",str1); printf("input the second number : "); scanf("%s",str2); len1 = strlen(str1); len2 = strlen(str2); if(len1 > 100 || len2 > 100) return; len = len1 > len2 ? len1 : len2 ; /********** 补0 ************/ reverse(str1); reverse(str2); for(i = len1 ; i < len + 1; i++) { str1[i] = '0'; } str1[i] = '\0'; for(i = len2 ; i < len + 1; i++) { str2[i] = '0'; } str2[i] = '\0'; /***** 从最低位开始相加,一直加到最前端的0 ******/ p1 = str1 ; p2 = str2 ; p = str ; while(*p1 != '\0') { *p = (*p1 -48) + (*p2 - 48) ; if(*p >= 10) { *p = *p - 10; p2 ++; *p2 = *p2 + 1; } else p2 ++ ; *p = *p + 48 ; p1 ++; p ++; } *p = '\0'; len = strlen(str); reverse(str); if(str[0] == '0') for(i = 0; i < len; i++) str[i] = str[i+1]; puts(str); }
相关文章推荐
- C语言实现的统计素数并求和代码分享
- c语言的大数相乘 十分经典的代码
- 【C语言代码】大数N的阶乘!
- 【C语言代码】大数相乘
- 一些C语言的代码,求和、最大值、阶乘、闰年、素数、大小写转换
- 大数相乘C语言代码
- 《c语言也能干大事1》作业及代码
- 优化C语言代码(程序员必读)
- C语言初学者代码中的常见错误与瑕疵(4)
- 李洪强漫谈iOS开发[C语言-047]-数列求和
- 计算大数阶乘的代码
- C语言:大数相乘.
- C语言 简单大数乘法
- linux下的c语言的随机数算法代码
- C语言的代码内存布局
- 数据结构 线性表部分代码 C语言转写(待补充)
- C语言实现UDP连接的参考代码
- 最好是用C语言可以写出来的 代码不用给了 说出意思就行 日历(万年历)算法
- 大数求和问题
- C语言初学者代码中的常见错误与瑕疵(19)