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