大数浮点数加法
发布时间:2020-12-14 03:28:06 所属栏目:大数据 来源:网络整理
导读:思想:大数—字符串输入—字符串—整型数组—从整型数组的最低位向高位进行进位加法—将整型数组忽略前导/后缀0输出 测试数据 1.?? 0.0+0.0=0.0 2.?? 00007.1+0.9=8.0 3.?? 7.000000+8.0=14.0 4.?? 8.00001+1.99999=10.0 ? 详细过程: 100.6554 1.455 整数部
思想:大数—>字符串输入—>字符串—>整型数组—>从整型数组的最低位向高位进行进位加法—>将整型数组忽略前导/后缀0输出 ? #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 102 void printResult(int *integer,int *decimal) { int i; int indexInt; //忽略前导0后,整数部分开始打印的地址 int indexDec; //忽略后缀0后,小数部分停止打印的地址 for(indexInt=N-1; indexInt>0 && integer[indexInt]==0; --indexInt) ; for(indexDec=N-1; indexDec>0 && decimal[indexDec]==0; --indexDec) ; for(i=indexInt; i>=0; --i)//整数部分的打印顺序<- { printf("%d",integer[i]); } printf("."); for(i=0; i<=indexDec; ++i) //小数部分的打印顺序-> { printf("%d",decimal[i]); } printf("n"); } void add(int *integer1,int *decimal1,int *integer2,int *decimal2,int *integer,int *decimal) { int i,sum; int carry = 0; /*小数部分相加*/ for(i=N-1; i>=0; --i) //小数部分相加的顺序<- { sum = decimal1[i] + decimal2[i] + carry; decimal[i] = sum%10; //本位 carry = sum/10; //进位 } /*整数部分相加,注意来自小数的进位*/ for(i=0; i<N; ++i) //整数部分相加的顺序-> { sum = integer1[i] + integer2[i] + carry; integer[i] = sum%10; carry = sum/10; } } /*将整数部分和小数部分拆开*/ void partition(char *str,index; int j = 0; int k = 0; /*数组清0,很重要*/ for(i=0; i<N; ++i) { integer[i] = 0; decimal[i] = 0; } /*确定.的位置*/ for(index=0; str[index]!=' ' && str[index]!='.'; ++index) ; /*字符串转化为数字,顺序翻转*/ for(i=index-1; i>=0; --i) { integer[j++] = str[i] - '0'; } for(i=index+1; str[i]!=' '; ++i) { decimal[k++] = str[i] - '0'; } } int main(void) { int n; freopen("in.txt","r",stdin); while(scanf("%d",&n) != EOF) { while(n--) { char str1[N],str2[N]; int integer[N],decimal[N]; int integer1[N],decimal1[N]; int integer2[N],decimal2[N]; scanf("%s%s",str1,str2); partition(str1,integer1,decimal1); partition(str2,integer2,decimal2); add(integer1,decimal1,decimal2,integer,decimal); printResult(integer,decimal); } } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何计算两个矩形之间的距离? (上下文:Lua中的一个游戏)
- 如何让我的VB.NET表单应用程序启动方法成为Program.vb中的S
- Delphi XE2 之 FireMonkey 入门(14) - 滤镜: 概览
- 批量数据处理存储过程模板
- Perl学习笔记----文件头
- Turbo Power – 用于Delphi XE的SongBeamer或SourceForge?
- Delphi以二进制方式读取图片并显示出来
- [CF1093E]Intersection of Permutations:树套树+pbds
- 105. Construct Binary Tree from Preorder and Inorder Tr
- 阉割版BBBlack安装Debian