男女做暖暖的免费观看网站,有关做有机肥的企业网站,做网站的策划方案,软装设计师培训学校高精度数不进位加法
谈及数字即可想到运算#xff0c;那么高精度数怎么运算呢#xff1f;今天来系统介绍一下高精度数的加法。 思考一下加法运算#xff0c;我们可以简单将加法运算这样区分#xff1a;
有无进位。位数是否相同。 这篇文章我们就来讨论一下无进位的高精度…高精度数不进位加法
谈及数字即可想到运算那么高精度数怎么运算呢今天来系统介绍一下高精度数的加法。 思考一下加法运算我们可以简单将加法运算这样区分
有无进位。位数是否相同。 这篇文章我们就来讨论一下无进位的高精度数计算。
相同位数无进位加法
这类的相对比较简单我们只需要指定位数相加然后正常顺序输出即可。 #include iostream
#include cstring
using namespace std;int main() {char a[1001] {}, b[1001] {}; // 定义字符数组存储输入的两个高精度数int a1[1001] {}, b1[1001] {}, c1[1001] {}; // 定义整数数组用于存储转换后的高精度数及其和cin a b; // 输入两个高精度数int len strlen(a); // 获取第一个高精度数的长度for(int i 0; i len; i) {a1[i] a[i] - 0; // 将字符类型的数字转换为整数存储到a1数组中b1[i] b[i] - 0; // 将字符类型的数字转换为整数存储到b1数组中c1[i] a1[i] b1[i]; // 计算两个高精度数的对应位相加的和存储到c1数组中}for(int i 0; i len; i) {cout c1[i]; // 输出计算得到的高精度数的和}return 0;
}
不同位数无进位加法
问题来了位数不同如何完成加法呢
我们拿出两个数举例 例如 321321321321 4564563
转换成数组以后[0]位对齐这时相加的结果并不是我们想要的 毕竟我们做竖式运算时是末尾对齐。 那要如何计算出正确答案呢
1.将两个数组全都翻转。 2.翻转后[0]位对齐相加。 3.将翻转结果输出即为我们想要的结果。
代码为 char a[1001]{},b[1001]{}; int a1[1001]{},b1[1001]{},c1[1001]{}; cinab; int lenastrlen(a),lenbstrlen(b);int len(lenalenb?lena:lenb);//取较长数字的位数作为总位数for(int i0;ilena;i){a1[i]a[lena-1-i]-48;//将两个加数逆序转换成int型的数字}for(int i0;ilenb;i){b1[i]b[lenb-1-i]-48;//将两个加数逆序转换成int型的数字}for(int i0;ilen;i){c1[i]b1[i]a1[i];//对应位相加}for(int i0;ilen;i){coutc1[len-1-i];//将相加的和倒序输出}