- #include "iostream"
- #include "string"
- using namespace std;
- int main(void)
- {
- char str1[1000],str2[1000];
- int i,j,len1,len2,len;
- bool flag=false;
- cout<<"任意两个大数的乘法(用数组来模拟小学三年级的乘法竖式计算过程):"<<endl;
- cout<<"请输入被乘数:";
- gets(str1);
- cout<<"请输入乘数:";
- gets(str2);
- len1=strlen(str1);
- len2=strlen(str2);
- int *a=new int[len1];
- int *b=new int[len2];
- len=len1*len2+1;
- int *result= new int[len];
- for(i=0;i<len;i++)
- result[i]=0;
- for(i=0;i<len1;i++) //将字符串转换为整数,并倒置过来
- a[i]=str1[len1-1-i]-'0';
- for(i=0;i<len2;i++)
- b[i]=str2[len2-1-i]-'0';
- for(i=0;i<len1;i++) //用数组来模拟小学三年级的乘法竖式计算过程
- {
- for(j=0;j<len2;j++)
- result[i+j]+=a[i]*b[j];
- }
- for(i=0;i<len;i++) //处理进位的情况
- {
- if(result[i]>9)
- {
- result[i+1]+=result[i]/10;
- result[i]%=10;
- }
- }
- cout<<"两个大整数相乘的结果为:";
- for(i=len-1;i>=0;i--)
- {
- if(flag)
- cout<<result[i];
- else if(result[i]!=0)
- {
- cout<<result[i];
- flag=true;
- }
- }
- cout<<endl;
- delete []a;
- delete []b;
- delete []result;
- system("pause");
- return 0;
- }
大数乘法
最新推荐文章于 2024-08-29 20:40:47 发布
479

被折叠的 条评论
为什么被折叠?



