加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

字符串表示 大数相乘

发布时间:2020-12-14 02:58:28 所属栏目:大数据 来源:网络整理
导读:用字符串模拟 两个数字相乘 1 两个字符串分别逆序 2 字符串1[i]*字符串2[j] ?的结果 ? ? ?保存在i+j位置处,如果大于10则进位处理? span style="font-size:18px;"void multiply_1(char number1[],char number2[]){ int len1=0,len2=0;char *p1=number1,*p2=n

用字符串模拟 两个数字相乘

1 两个字符串分别逆序

2 字符串1[i]*字符串2[j] ?的结果 ? ? ?保存在i+j位置处,如果大于10则进位处理?



<span style="font-size:18px;">void multiply_1(char number1[],char number2[])
{
    int len1=0,len2=0;
	char *p1=number1,*p2=number2;
	while (*p1++)
	{
		len1++;
	}
	while (*p2++)
	{
		len2++;
	}
	p1=NULL;
	p2=NULL;
	cout<<"原序列1:";
	for (int i=0;i<len1;i++)
	{
		cout<<number1[i];
	}
	for (int i=0;i<len1/2;i++)
	{
		number1[i]=number1[len1-1-i]+number1[i];
		number1[len1-1-i]=number1[i]-number1[len1-1-i];
		number1[i]=number1[i]-number1[len1-1-i];
	}
	cout<<"    反转后序列1:";
	for (int i=0;i<len1;i++)
	{
		cout<<number1[i];
	}
	cout<<endl;
	cout<<"原序列2:";
	for (int i=0;i<len2;i++)
	{
		cout<<number2[i];
	}
	for (int i=0;i<len2/2;i++)
	{
		number2[i]=number2[len2-1-i]+number2[i];
		number2[len2-1-i]=number2[i]-number2[len2-1-i];
		number2[i]=number2[i]-number2[len2-1-i];
	}
	cout<<"    反转后序列2:";
	for (int i=0;i<len2;i++)
	{
		cout<<number2[i];
	}
	cout<<endl;

	char *newArray=new char[len1+len2];
	for (int i=0;i<len1+len2;i++)
	{
		newArray[i]='0';
	}
	int max_Index=0;        //结果的最大的索引位置   



	for (int i=0;i<len1;i++)
	{
		for (int j=0;j<len2;j++)
		{
			int result=(number1[i]-'0')*(number2[j]-'0');    //结果
			int loc=i+j;                                     //加到i+j位置上		
			 
			do 
			{

				max_Index=loc>max_Index?loc:max_Index;
				result=newArray[loc]-'0'+result;                    //结果值
				 
				newArray[loc]=result%10+'0';            //本位值

				result=result/10;	                 //进位到下一个

				loc++;

			} while(result);

		}
	}



	for (int i=0;i<=max_Index/2;i++)
	{
		newArray[i]=newArray[max_Index-i]+newArray[i];
		newArray[max_Index-i]=newArray[i]-newArray[max_Index-i];
		newArray[i]=newArray[i]-newArray[max_Index-i];
	}

	for (int i=0;i<=max_Index;i++)
	{
		cout<<newArray[i];
	}
	cout<<endl;

	delete []newArray;

}

void  main()
{
 
	char number1[]="456333";
	char number2[]="456333";
	multiply_1(number1,number2);
	system("pause");
	return;
}</span>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读