乘法——(大数乘小数)

来源:互联网 发布:淘宝关键词怎么优化 编辑:程序博客网 时间:2024/05/01 18:19
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'; }


0 0
原创粉丝点击