该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
已经实现了加法,怎么实现乘法呢,我的想法是把乘法转换成加法,可是就是写不出来,就算写了一点,都能把自己看乱了
下面是我写的加法。求高手教我乘法
/*
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
-----------------------------