c[]:被乘数,用字符串表示,位数不限
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'; }