c语言字符数组的乘法,怎么用字符数组实现高位乘法啊

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

已经实现了加法,怎么实现乘法呢,我的想法是把乘法转换成加法,可是就是写不出来,就算写了一点,都能把自己看乱了

下面是我写的加法。求高手教我乘法

/*

2013年10月20日 16:47:50

目的:复习

功能:用字符数组实现高位数的加法

*/

#include

#include

int main()

{ int i,k=0,n=0,t,x,y,z;

char a[1001] ,b[1001],c[1001];

gets(a);

gets(b);

x=strlen(a);

y=strlen(b);

for(i=0;i

{ t=a[i];

a[i]=a[x-i-1];

a[x-i-1]=t;

}

for(i=0;i

{ t=b[i];

b[i]=b[y-i-1];

b[y-1-i]=t;

}

if(x>y) //让两个字符数组中的字符长度一样

{

for(i=y;i

b[i]='0';

b[x]=0;

for(i=0;i

if(a[i]+b[i]-48+k<=57)//为什么要+k? 因为如果个位进1,而十位相加为9,那么就又要进1到百位,此时两数组之和>57,执行else

c[i]=a[i]+b[i]-48+k,k=0;

else { c[i]=a[i]+b[i]-48-10+k;k=1;}//大于10;进1

if (k==1) //for 循环结束后,k==1说明还要进1,所以要把'/0'结束标志往后移动,空出来的位置让给进上来的1

{ c[x]='1';

c[x+1]=0;

}

else c[x]=0;

}

if (x<=y)

{

for(i=x;i

a[i]='0';

a[y]=0;

for(i=0;i

if(a[i]+b[i]-48+n<=57)

c[i]=a[i]+b[i]-48+n,n=0;

else { c[i]=a[i]+b[i]-48-10+n;n=1;}

if (n==1)

{ c[y]='1';

c[y+1]=0;

}

else c[y]=0;

}

z=strlen(c);

for(i=0;i

{

t=c[i];

c[i]=c[z-i-1];

c[z-i-1]=t;

}

puts(c);

}

/*

输入

-----------------------------

9876

124

-----------------------------

*/

/* 结果是

-----------------------------

10000

-----------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值