一个大数相乘的程序,输出正确答案和乱码

来源:百度知道 编辑:UC知道 时间:2024/06/25 22:32:13
#include<iostream>
#include<string>

using namespace std;

#ifndef size
#define size 100
#endif

char * BigMultiply(char * FirstString,char * SecondString);

void main()
{
char *FirstString = new char[size];
char *SecondString = new char[size];

cin.getline(FirstString,size);
cin.getline(SecondString,size);

char *result = BigMultiply(FirstString, SecondString);

cout<<result<<endl;
}

char * BigMultiply(char * FirstString,char * SecondString)
{
int nFinalLength = strlen(FirstString)+strlen(SecondString);//计算相乘之后可能出现的最大长度
char * strResult = new char[nFinalLength];
memset(strResult,'0',nFinalLength);//将结果字符串的所有的字符初始为'0'

//这个算法事实上就是按手工乘法来做的
for(int i = strlen(FirstString)-1;i>=0;i--)
{
for(int j = strlen(SecondString)-1;j>=0;j--)
{
int nTempPosi

void main()
{
char *FirstString = new char[size];
char *SecondString = new char[size];

memset(FirstString, 0, size);
memset(SecondString, 0, size);

cin.getline(FirstString,size);
cin.getline(SecondString,size);

char *result = BigMultiply(FirstString, SecondString);

cout<<result<<endl;
}

char * strResult = new char[nFinalLength+1];
memset(strResult,0,nFinalLength+1);

多new一位出来,多出来的那一位用0作结束符,否则可能越界