- 高精度乘以低精度
注:c(字符串,高精度数)为被乘数,m(整形,低精度数)为乘数,t(字符串,高精度数)为运算结果
void mult(char c[],char t[],int m){ int i,l,k,flag,add=0; char s[100]; l=strlen(c); for(i=0;i<l;i++) //将被乘数逆序并且映射为[0,10) s[l-i-1]=c[i]-48; for(i=0;i<l;i++){ k=s[i]*m+add; //第i位乘出来的结果 if(k>=10){ //需要进位 s[i]=k%10; add=k/10; flag=1; //标识位,关系到最后结果是否要增加一位 }else{ s[i]=k; add=0; flag=0; } } if(flag){ //如果有标志位,就让进位加到最后 l=i+1; s[i]=add; }else l=i; for(i=0;i<l;i++) //将结果逆序并且映射为ASCII t[l-1-i]=s[i]+48; t[l]=0; //千万不要忘了让字符串最后一个元素为0 }