大数相乘 +方法2(C语言)

#include<stdlib.h>

#include<stdio.h>

#include<string.h>

void main()
{
int i,j,len=0,k,pos=-1;
char a[100],b[100],c[200],d[1000];
gets(a);
gets(b);
strrev(a);strrev(b);
memset(d,'0',sizeof(d));
for(i=0;b[i]!='\0';i++)
{
int num=0;
for(j=0;a[j]!='\0';j++)    //处理进位
{
if(j<=pos) num +=(b[i]-'0')*(a[j]-'0')+(d[j]-'0');
else num +=(b[i]-'0')*(a[j]-'0');
d[j] = num%10 +'0';
num /=10;
}
c[len++]=d[0];    //保存最地位值
for(k=1;k<j;k++)   //a[0] 后面的字符都往前面移动一位
d[k-1] = d[k]; 
if(num != 0)   //最高位有进位
{
d[--k] = num+'0';
  pos = k-1;
}
else  { d[--k] ='\0'; pos = k-1;}
}
c[len] ='\0';    //给c数组结束标志
strrev(c);
strrev(d);       //给a里面反序,就是将高位换到前面 低位在后面
strcat(d,c);
puts(d);
}*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值