<C语言超大数求和>实现思路及源码
来源:互联网 发布:三菱编程实例100 编辑:程序博客网 时间:2024/05/20 00:13
1.算法思路
将float型或int型先转换成字符串,再去处理相加,所有字符加完后再转回成float或int型。
2.C语言源码如下
/* * 程序功能:超大数求和 * 编程作者:Story5 * */#include <stdio.h>#include <string.h>#define debugconst int size=1024;int main(int argc,const char *argv[]){ void bigNumAdd(char *a,char *b); char a[size]; char b[size]; printf("\n\t/* 超大数求和程序 */\n"); printf("\n请输入第一个数,按Enter键结束输入\n"); scanf("%s",a); printf("\n请输入第二个数,按Enter键结束输入\n"); scanf("%s",b); printf("\n输入结束,结果为:\n"); bigNumAdd(a,b); return 0;}void bigNumAdd(char *a,char *b){ void printLine(int n); char sum[size]="";//求a+b的和,放入sum中 char tmp=0; int alen=0,blen=0,slen=0;//分别标示a,b,sum字符串的长度 int ia=0,ib=0,is=0;//分别用来遍历a,b,sum int cflag=0;//判断进位 alen=strlen(a); blen=strlen(b); if(alen<blen)//将a,b化为等长字符串,短的前面补字符0 { memmove(a+blen-alen,a,alen+1); memset(a,'0',blen-alen); alen=blen; } else if(alen>blen) { memmove(b+alen-blen,b,blen+1); memset(b,'0',alen-blen); blen=alen; }#ifdef debug printf("\n\t %s\n\t+ %s\n",a,b); printf("\t "); printLine(alen);#endif for(ia=alen-1,ib=blen-1,is=0;ia>=0&&ib>=0;ia--,ib--,is++)//以最小长度相加 { if(sum[is]==0) { if(a[ia]+b[ib]<='9'+'0') { sum[is]=a[ia]+b[ib]-'0'; cflag=0; } else { sum[is]=a[ia]+b[ib]-'0'-10; sum[is+1]='1'; cflag=1; } } else { if(sum[is]-'0'+a[ia]+b[ib]<='9'+'0') { sum[is]=sum[is]-'0'+a[ia]+b[ib]-'0'; cflag=0; } else { sum[is]=sum[is]-'0'+a[ia]+b[ib]-'0'-10; sum[is+1]='1'; cflag=1; } } } slen=strlen(sum); for(is=0;is<slen/2;is++)//等长部分正序排列 { tmp=sum[is]; sum[is]=sum[slen-1-is]; sum[slen-1-is]=tmp; } printf("\t= %s\n",sum);#ifdef debug printf("\n\tcflag=%d\n\n",cflag);#endif}void printLine(int n){ int i=0; for(i=0;i<n;i++) printf("-"); printf("\n");}
2 0
- <C语言超大数求和>实现思路及源码
- C语言超大数相加
- 【C语言】超大数乘法运算
- C语言超大数除法,支持小数
- C语言 浮点数求和
- 贪吃蛇编写思路及C语言源码
- C 语言 超大数相加和求余
- 二叉排序树(BST)的思路及C语言实现
- 数组遍历及求和(C语言)
- C语言实现并行求和算法
- c语言实现分数数列求和
- C语言实现并行求和算法
- C语言 素数求和(函数实现)
- C语言---超大文本文件排序
- 1007. 二哥领工资 (超大数求和)
- C语言经典题目及解题思路
- C语言经典题目及解题思路
- C语言实验题——数字串求和
- python调取hive 和sqoop之二
- 绝对的小抄:Photoshop的快捷键
- 一次MVVM+ReactiveCocoa实践
- iOS AVPlayer pop 释放内存 崩溃
- hibernate一对多双向注解
- <C语言超大数求和>实现思路及源码
- java 考试复习整理——JAVA类和类成员的修饰符
- 语法基本循环控制
- <10>Android HAL 硬件抽象层模块的加载过程
- springboot-2
- Eclipse中修改作者变量${user}
- python发送email
- 网页设计中常用的20个Web安全字体
- (转)如何在Eclipse中查看JDK类库的源代码