精度计算-大数乘小数

语法:mult(char c[],char t[],int m);

参数:

  c[] 被乘数,用字符串表示,位数不限

  t[] 结果,用字符串表示

  m 乘数,限定10以内

返回值: null

注意:  

  需要 string.h

源程序:  

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
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++)
        s[l-i-1]=c[i]-'0'; //逆置数组,并转化成数字
    for(i=0;i<l;i++)
    {
        k=s[i]*m+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=i+1;
        s[i]=add;
    } 
    else 
        l=i;
    for(i=0;i<l;i++)
        t[l-1-i]=s[i]+'0';//逆置回来
    t[l]='\0';
}
int main()
{
    char bignum[100]={0};
    char anwser[100]={0};
    int smallnum=0;
    printf("please enter a big num,and a small num \n");
    scanf("%s %d",bignum,&smallnum);
    mult(bignum,anwser,smallnum);
    printf("the Anwser is %s\n",anwser);
    return 0;
}

转载于:https://my.oschina.net/u/204616/blog/544972

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值