乘法——(大数乘小数)
发布时间:2020-12-14 03:34:05 所属栏目:大数据 来源:网络整理
导读:c[]:被乘数,用字符串表示,位数不限 t[]:存储结果,用字符串表示 m:乘数,可以限定在任何数范围内,不过要修改下面一处代码? #includestdio.h#includestring.hvoid mult(char c[],char t[],int m);int main(){ char c[]="123456789";//测试数据 char t[2
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[],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]=' '; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |