大数
2016-04-06 19:58
351 查看
ps:实现是实现了,但错误未知,甚用。
ps:代码有点臃肿,凑和用着。
ps:能用java就用java,其次手写,最后套用这个。
整数:
1.int数组
View Code
ps:代码有点臃肿,凑和用着。
ps:能用java就用java,其次手写,最后套用这个。
整数:
1.int数组
/* 小数大数,加法 char数组实现 */ #include<iostream> #include<stdio.h> #include<string.h> using namespace std; void plu(char *a,char *b){//注意存储方式:整数倒着存,小数正着存,看代码需注意 int i,j,k,lena,lenb,lena1,lena2,lenb1,lenb2,lenc1,lenc2;//len分别对应相应数组的长度 char a1[1024],a2[1024],b1[1024],b2[1024],c1[1024],c2[1024];//a1、a2为第一个数的整数部分、小数部分 lena=strlen(a);//b1、b2为第二个数;c1、c2为结果 lenb=strlen(b); //取出第1个数的整数部分、小数部分 for(i=0;i<lena;++i) if(a[i]=='.') break; lena1=i; lena2=lena-i-1; for(j=i-1,k=0;j>=0;--j) a1[k++]=a[j]; for(j=i+1,k=0;j<lena;++j) a2[k++]=a[j]; //取出第2个数的整数部分、小数部分 for(i=0;i<lenb;++i) if(b[i]=='.') break; lenb1=i; lenb2=lenb-i-1; for(j=i-1,k=0;j>=0;--j) b1[k++]=b[j]; for(j=i+1,k=0;j<lenb;++j) b2[k++]=b[j]; //开始计算 int up=0;//进位 //计算小数部分 if(lena2>lenb2){ lenc2=lena2; for(i=lena2-1;i>=lenb2;--i) c2[i]=a2[i]; for(;i>=0;--i){ c2[i]=a2[i]+b2[i]-'0'+up; if(c2[i]>'9'){ up=1; c2[i]-=10; } else up=0; } } else{ lenc2=lenb2; for(i=lenb2-1;i>=lena2;--i) c2[i]=b2[i]; for(;i>=0;--i){ c2[i]=a2[i]+b2[i]-'0'+up; if(c2[i]>'9'){ up=1; c2[i]-=10; } else up=0; } } while(c2[lenc2-1]=='0'&&lenc2>=1)--lenc2;//去除后面多余的0 //计算整数部分 if(lena1>lenb1){ lenc1=lena1; for(i=0;i<lenb1;++i){ c1[i]=a1[i]+b1[i]-'0'+up; if(c1[i]>'9'){ up=1; c1[i]-=10; } else up=0; } for(;i<lena1;++i){ c1[i]=a1[i]+up; if(c1[i]>'9'){ up=1; c1[i]-=10; } else up=0; } } else{ lenc1=lenb1; for(i=0;i<lena1;++i){ c1[i]=a1[i]+b1[i]-'0'+up; if(c1[i]>'9'){ up=1; c1[i]-=10; } else up=0; } for(;i<lenb1;++i){ c1[i]=b1[i]+up; if(c1[i]>'9'){ up=1; c1[i]-=10; } else up=0; } } if(up==1)printf("1");//最后有进位 for(i=lenc1-1;i>=0;--i) printf("%c",c1[i]); if(lenc2>0){ printf("."); for(i=0;i<lenc2;++i) printf("%c",c2[i]); } printf("\n"); } int main(){ char a[1024],b[1024]; while(~scanf("%s%s",a,b)) plu(a,b); return 0; }
View Code
相关文章推荐
- 返回二维数组最大联通子数组的和
- thinkphp 项目分组 -开发随笔1
- android中的线性布局 968f
- 2016-04-06 小心情
- STL空间配置器(二)
- mysql数据库权限
- Caffe学习系列(23):如何将别人训练好的model用到自己的数据上
- POJ 2425.A Chess Game【博弈论(SG函数)】【4月6】
- 2014山东省第五届ACM省赛 Devour Magic
- N的阶乘后有多少0
- OpenCV cvMat的使用
- 一个action跳转到另一个action如何传参
- 结对开发——-四则运算四
- python eval函数
- JAVA基础--线程
- <十一>读<<大话设计模式>>之抽象工厂模式
- Xamarin.iOS + MvvmCross: UIPickerView data binding, SelectedItemChanged event
- 第六周上机实践项目——项目4-静态成员的应用
- js 拖拽(一)
- Caffe学习系列(22):caffe图形化操作工具digits运行实例