加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

乘法——(大数乘小数)

发布时间: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]=''; 
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读