超出数据类型范围的数的加法

来源:互联网 发布:linux 对外开放端口 编辑:程序博客网 时间:2024/05/16 05:45

这个程序有一定的缺陷:有可能其中会出现乱码,我估计这与我只new没有delete有关。

#include<iostream>#include<string.h>using namespace std;char * fun(){char *num1 = new char[100];char *num2 = new char[100];char *num3 = new char[120];cout << "请输入第一个数字:" << endl;cin >> num1;cout << "请输入第二个数字:" << endl;cin >> num2;int length1 = strlen(num1), length2 = strlen(num2);if (length1 > length2){int count = length2;while (count != -1){*(num2 + count + length1 - length2) = *(num2 + count);*(num2 + count) = '0';count--;}}if(length1 < length2){int count = length1;while (count != -1){*(num1 + count + length2 - length1) = *(num1 + count);*(num1 + count) = '0';count--;}}int result2 = 0, count = 0;for (int i = (length1>=length2 ? length1 : length2)-1; i>=0; i--){int result1 = int((num1[i] - '0') + (num2[i] - '0') + result2);result2 = 0;if (result1<10){*(num3 + count) = char(result1 + '0');count++;}else{result2 = result1 / 10;*(num3 + count) = char(result1 % 10 + '0');count++;}}if (result2 != 0){num3[count] = char(result2 + '0');count++;}char *num4 = new char[120];for (int m = count -1 ; m >= 0; m--)*(num4 + count - m -1) = num3[m];num4[count] = '\0';return num4;}int main(){cout << fun() << endl;system("pause");return 0;}
阅读全文
0 0