c[]:被乘数,用字符串表示,位数不限
t[]:存储结果,用字符串表示
t[]:存储结果,用字符串表示
m:乘数,可以限定在任何数范围内,不过要修改下面一处代码
#include<stdio.h>
#include<string.h>
void mult(char c[],char t[],int m);
int main()
{
char c[]="123456789";//测试数据
char t[20];
int m=6;
mult(c,t,m);
int i=0;
while(*(t+i))
{
printf("%c",*(t+i));
i++;
}
return 0;
}
void mult(char c[],char t[],int m)
{
int i,l,k,flag,add=0;
int s[100];//char类型也可以
l=strlen(c);//被乘数的长度,string.h头文件里面有,计算字符串长度
for(i=0;i<l;i++)
s[l-i-1]=c[i]-'0';//把字符转换为数字 低位字符转换到数字数组高位
for(i=0;i<l;i++)
{
k=s[i]*m+add;//add是进位标志
if(k>=10)//小数是10以内,要扩大可以可这里
{
s[i]=k%10;
add=k/10;
flag=1;
}
else
{
s[i]=k;
flag=0;
add=0;
}
}
if(flag)//最高位数乘积有进位,长度l要注意边界问题
{
l=i+1;
s[i]=add;
}
else
l=i;
for(i=0;i<l;i++)
t[l-i-1]=s[i]+'0';
t[l]='\0';
}