题目:整数的相乘,由于整数相乘的结果可能超过int类型所能表示的最大值,发生错误,因此可以通过将整数转换为字符串再输出相乘后的字符串则不会发生越界问题
代码如下:这里就不写上整数转字符串函数了,很简单,可以用itoa函数也可以自己写个转换函数,高端一点的话注意写数如果加了正负号也要考虑
#include <iostream>
using namespace std;
void mutinum(char *str1,char *str2)
{
if (str1==nullptr||str2==nullptr)
{
return;
}
int len1=strlen(str1);
int len2=strlen(str2);
char *res=new char[len1+len2+1];
memset(res, '0', len1+len2);
for (int i=len1-1;i>=0;--i)
{
int carry=0;//上一位的进位
for (int j=len2-1;j>=0;--j)
{
//这个位置数相加等于已有的进位和上一步乘留下的数+这一步乘后的数
int temp=(res[i+j+1]-'0')+carry+(str1[i]-'0')*(str2[j]-'0');
carry=0;
if (temp>=10)
{
carry=temp/10;
}
//保存去掉进位后的数
res[i+j+1]=temp%10+'0';
}
res[i]=carry+'0';
}
int count=0;
while (*res=='0')
{
++count;
++res;
}
while (count<strlen(res)-1&&*res!='\0')
{
cout<<*res;
++res;
++count;
}
}
int main()
{
char *a = "122";
char *b = "143";
mutinum(a,b);
return 0;
}