精度计算-大数乘小数

语法: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;

}

你可能感兴趣的:(计算)