瓜子二手车直卖网买车,贵港采购,云南财经大学研究生
1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 int main(void) 5 { 6 string str1; //输入两个字符串 7 string str2; 8 //数组大小决定精度大小 9 int* arr = new int[101]{ 0 }; 10 int* brr = new int[101]{ 0 }; 11 cin >> str1 >> str2; 12 int len1 = str1.length(); //取得第一个字符串长度 13 int len2 = str2.length(); //取得第二个字符串长度 14 int len; 15 for (int i = 0; i < len1; i++) //把第一个字符串中的每一位转换为整数,存放在数组arr中 16 { 17 arr[i] = str1[len1 - i - 1] - '0'; //减1一定不要减掉了,因为len1是长度,不减1会造成数组越界 18 } //倒着减的原因是要把字符串中的个位转换到整型数组的第一个位置上 19 for (int i = 0; i < len2; i++) //把第二个字符串中的每一位转换为整数,存放在数组brr中 20 { 21 brr[i] = str2[len2 - i - 1] - '0'; 22 } 23 len = (len1 > len2 ? len1 : len2); //取得最大字符串的长度 24 for (int i = 0; i < len; i++) //模拟加法运算 25 { 26 arr[i] = arr[i] + brr[i]; 27 arr[i + 1] = arr[i + 1] + arr[i] / 10; 28 arr[i] = arr[i] % 10; 29 } 30 while ((arr[len] == 0) && (len > 0)) //把数组中多余的0去掉 31 { 32 len--; 33 } 34 for (int i = len ; i >= 0; i--) //逆向输出 35 { 36 cout << arr[i]; 37 } 38 return 0; 39 }
注意:
(1):设置数组的时候还要把数组每一位都初始化为0,不然后面模拟加法运算的时候就会因为数组没有初始化的问题而出现报错或乱码。
(2):根据题目要求合理确定数组大小,不要过小也不要过大
(3):由于整型数组初始化十分不方便,而且也很难做到像字符串那样输入,所以先按照字符串输入,再把字符串转换成整型数组
(4):length()函数是取得字符串的有效位数,不包含'\0'
(5):17行和21行,len1- i - 1的原因是len1是有多少位数字,如果不减1,就会造成数组越界。减i是因为在后面数组模拟加法运算的时候,把数组第一位当成了个位,而在原来字符串里面个位在最后一个位置,所以要减i。
(6):最后输出之前一定要把数组里面多余的0过滤掉。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论