首页 > 编程知识 正文

c语言编程计算大整数相乘(c语言最大数相乘)

时间:2023-05-06 11:33:03 阅读:101990 作者:3043

超大数乘法的关键是如何对齐数据位的个数。这里引入乘积位数L、乘数位数I和被除数位数K,让l=i k-1来求解。程序如下:

//超大数乘法(超大数:超出计算机处理范围的整数)

# includesdio.h/*包含输入和输出功能*/

#include string.h /*包含字符串处理函数*/

#定义N 200 //常数N应大于数据的最大位数。

main()

{ char bc[N],cc[N];//定义字符串数组:被乘数字符串bc,乘数字符串cc

int b[N]={},c[N]={},j[N * 2]={ };//定义并初始化数组:被乘数B、乘数C和乘积j。

int x,I,k,lb,lc,l;//循环变量x,I,k;多人数字lb,乘数数字lc,产品数字l。

//输入:

Printf('请连续输入被乘数:');get(BC);

Printf('请连续输入乘数:');获取(cc);

//转换:

lb=strlen(BC);LC=strlen(cc);//测量字符串的长度

for(x=1;x=磅;x){ b[x]=BC[l B- x]-48;}//被乘数字符串转换为整数。

for(x=1;x=lcx){ c[x]=cc[LC-x]-48;}//乘数字符串转换为整数

//操作:

for(I=1;i=lcI) //乘数

{ for(k=1;k=lbK) //被乘数

{ l=k I-1;//定位(确定产品L的位数)

j[l]=b[k]* c[I];//相乘并累加最后一次进位

}

}

for(x=1;x=l;X) //回收:

{ j[x 1]=j[x]/10;j[x]%=10;//舍入和标准

}

if(j[l 1]=1)l;//处理首进位和总位数

//输出:

printf('%s*%s=',bc,cc);

for(x=l;x=1;x-)//从高到低

{ if(x%3==0x!=l) printf(',');//每3位数加一个','

printf('%d ',j[x]);//输出产品

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。