精度计算——乘法(大数乘小数)
摘自一个 ACM函数模板.doc ,学习记录自己的理解(^U^)ノ~YO
语法:mult(char c[],char t[],int m);
参数:
c[]:被乘数,用字符串表示,位数不限
t[]:结果,用字符串表示
m:乘数,限定10以内
返回值:null
注意: ****
- 需要 string.h
- 乘数必须是小于10的
源程序:
void mult(char c[],char t[],int m)
{
int len,add=0;
char s[100];
len=strlen(c);
for(int i=0; i<len; i++)
s[len-i-1]=c[i]-'0'; //将字符串倒置,并存入与0的差值
for(int i=0; i<len; i++)
{
s[i]=s[i]*m+add;
add=s[i]/10;
s[i]=s[i]%10;
}
if(add>0) //最高位还有进位
{
len++;
s[len-1]=add;
}
for(int i=0; i<len; i++) //将字符串再倒置,并将内容恢复成数字<0-9>
t[i]=s[len-i-1]+'0';
t[len]='\0'; //加上字符串结束符
}