int main()
{
char c[100] = "1231231231231231231231231231231232";
char t[101] ;
int m = 10;
mult(c,t,m);
printf("%s",t);
return 0;
}
void mult(char c[],char t[],int m)
{
int i,l,k,flag,add=0;
char s[100];
l=strlen(c);
/*这个是把原大数数组传人真正进行运算的数组,
因为从低位开始运算所以要见原数组进行逆置,
因为是字符,所以运算的数要减轻字符‘0’的
ASCII码值然后再进行运算。
*/
for (i=0;i<l;i++)
s[l-i-1]=c[i]-'0';
//这个循环是用来从最小的一位开始于m相乘
for (i=0;i<l;i++)
{
k=s[i]*m+add;
if (k>=10)
{
s[i]=k%10;
add=k/10;
flag=1;
}
else
{
s[i]=k;
flag=0;
add=0;
}
}
//flag是用来记录最高位做乘法时有进位的情况
if (flag)
{
l=i+1;
s[i]=add;
}
else
l=i;
//这个循环是用来把s数组的内容存到结果数组中
for(i=0;i<l;i++)
t[l-1-i]=s[i]+'0';
t[l]='\0';
}原文地址:http://blog.csdn.net/yejinwei1220/article/details/45891123