大整数求和
来源:互联网 发布:ios手绘软件 编辑:程序博客网 时间:2024/06/05 11:29
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhello * 完成日期:2016年9月8日 * 版本号:V1.0 * 程序输入:两个长度不限的整数 * 程序输出:见运行结果 *//*分析: 因为是大整数,所以直接放弃定义int型的变量。可以考虑以字符串的形式输入。然后再从后往前将每一个字符串的字符给剥离出来,转换成整型,在同位置的相加加完后再判断是否需要进位,当然需要之前先声明一个变量存储是否进位。*/#include<iostream>#include<stdlib.h>#include<string>using namespace std;int main(){string a,b;int *sum; //因为不确定和的位数,所以定义int型指针比较好,感觉别扭的话可以想象成一维数组int i,al,bl; //al、bl在循环遍历时,和a,b字符串的长度有关cout<<"请输入两个整数,以空格相隔:"<<endl;cin>>a>>b;string temp;if(a.size()>b.size()) {temp=a;a=b;b=temp;} //上面的if语句可以确定在运算时保证b是长的字符串,可以减少下面的代码量sum=new int[b.size()+1]; //分配内存(长度) sum[0]=0;char ac,bc;int carry=0; //记录进位 int sizeDif=b.size()-a.size(); //记录两字符串位数差 int count; for (al=a.size()-1,bl=b.size()-1;al>=0;al--,bl--){ac=a[al];bc=b[bl];int m,n;m=ac-'0';n=bc-'0';sum[bl+1]=m+n+carry;carry=0; if(sum[bl+1]>9){carry=1;sum[bl+1]-=10; }}for(i=sizeDif-1;i>=0;i--){bc=b[i];sum[i+1]=bc-'0'+carry; carry=0; if(sum[i+1]>9){carry=1;sum[i+1]-=10; }}if(carry==1) //考虑到可能会有结果比b的长度还多一位,则将进的那一位即‘1’先输出 {cout<<'1'; }else{cout<<" ";}for(i=1;i<=b.size();i++)cout<<sum[i];cout<<endl;return 0;}
0 0
- 大整数求和
- 大整数求和
- 大整数求和
- PHP大整数求和
- 输入两个大整数,求和
- 大整数求和算法Add
- PHP大整数求和-arr
- POJ 2602 Superlong sums 大整数求和
- 【忙啊忙】- 两个字符串的大整数求和
- 线性表之大整数求和
- hdu 1047 Integer Inquiry(大整数求和)
- 利用数组结构实现大整数求和
- 整数求和
- 整数求和
- 整数求和
- 整数求和
- 整数求和
- java数据结构之顺序表应用之大整数求和
- 论腐女的存在原因
- LeetCode OJ(8)
- 全局变量使用final 修饰后,放在堆中,而不是栈中?
- 2016.9.9
- Java中的static关键字解析
- 大整数求和
- String,StringBuffer,StringBuilder之间的区别
- 优化Oracle数据库查询10个方法
- jdbc事务
- 腾讯2012实习生笔试题2+答案解析
- Android Studio 四大组件之一 Service简介
- openLayers3加载GeoWebCache发布ArcGIS切片
- Java-NowCoder-数字颠倒
- 51Nod 1006 - 最长公共子序列(Lcs)