C:大数乘法(直接看改进版)

本文介绍了如何在C语言中实现大数的乘法运算,首先展示了初始的算法实现,该实现通过逐位相乘并进位来计算大数乘积。然后,对算法进行了改进,去除了多余的数组逆置步骤,提高了效率。通过具体示例987*34,解释了改进后的代码逻辑,并感谢Mlib前辈的知识分享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:求很大的数的乘积,比如:

11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111*1000

一、最初

思路:手算复现,整体采用先求每位的积,再逐位取余进位。考虑到下标容易混乱,就采用镜像方式求值(这一点在改进思路中已纠正)。创建两个较大的数组a、b;通过输入字符的方式输入整数,并转换为数字存入对应数组中,并将输入字符个数返回,由于乘积最大位数为两个整数位数之和,创建结果数组c;(将a、b数组逆置);逐位对应求乘积,并将相应位上积和存入结果数组"c[i+j]+=a[i]*b[j];";结果数组从头到jio取余进位;将结果数组c逆置并输出,由于考虑到没有进位会导致最高位为0,故"i==0&&c[i]==0"时忽略输出

以987*34为例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

舟桥居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值