您的位置:首页 > 编程语言 > Java开发

一个“Spring轮子”引发的“血案”(5)

2008-01-03 09:44 295 查看

// LongInt.cpp : Defines the entry point for the console application.


//




#include "stdafx.h"


#include "string.h"


#define    MAXLEN    50




/**//*


function InputLongInt()长整数输入函数


*/


int InputLongInt(int *a,char *para)




...{


    int        len,i;


    char    number[MAXLEN];


    printf("请输入[%s]长整数: ",para);


    scanf("%s",number);


    len = strlen(number);


    for(i=len;i>=1;i--)


        a[i] = number[len-i]-'0';


    a[0] = len;


    return(a[0]);


}




/**//*


function OutputLongInt()长整数输出函数


*/


void OutputLongInt(int *a,char *para)




...{


    int i;


    printf("输出的[%s]长整数: ",para);


    for(i=a[0];i>=1;i--)


        printf("%d",a[i]);


    printf(" ");


}




/**//*


function FormatLongInt()长整数规范化函数


*/


int FormatLongInt(int *a)




...{


    int p;


    for(p=1;p=10;p++)




    ...{


        if(p>=a[0])    


            a[p++] = 0;


        a[p++] += a[p]/10;


        a[p] = a[p]%10;


    }


    if(p>a[0])


        a[0] = p;


    return(a[0]);


}




/**//*


function LongIntAddLongInt()长整数加长整数函数


相加的和放在数组A中


*/


void LongIntAddLongInt(int *a,int *b)




...{


    int i;


    while(a[0] < b[0])


        a[++a[0]] = 0;


    for(i=1;i<=b[0];i++)


        a[i] += b[i];


    FormatLongInt(a);


}




/**//*


function LongIntDivInt()长整数除普通整数函数


除得的商放在数组A中,余数放在返回值中


*/


int LongIntDivInt(int *a,int divisor)




...{


    int p,    //存储相除后的余数下标


        k;    //存储数字个数(长整数有效数字个数)


    k = p = a[0];


    a[0] = 0;


    while(p>0)




    ...{


        a[p-1] += a[p] % divisor * 10;


        a[p] = a[p] / divisor;


        if(a[k]==0) 


            k--;


        p--;


    }


    p = a[0] / 10;    //保存余数


    a[0] = k;    //回写有效数字个数


    FormatLongInt(a);


    return(p);


}




/**//*


function LongIntDivInt()长整数转换成二进制数函数


转换的二进制数存储数组B中


*/


void LongIntToBin(int *a,int *b)




...{


    int p;


    b[0] = 0;


    while(a[0] > 0)




    ...{


        b[0]++;


        b[b[0]] = a[1] % 2;


        p = a[0];


        while(p > 0)




        ...{


            if((a[p] % 2) && (p > 1))


                a[p-1] += 10;


            a[p] /= 2;


            if(a[a[0]] == 0)


                a[0]--;


            p--;


        }


    }


}




int main(int argc, char* argv[])




...{


    int a[MAXLEN],b[MAXLEN];


    int len,residue;




    /**//*


    len = InputLongInt(a);


    printf("源长整数的长度是:%d ",len);


    str = "源";


    OutputLongInt(a,str);


    len = FormatLongInt(a);


    printf("规范化后长整数的长度是:%d ",len);


    str = "规范化后";


    OutputLongInt(a,str);


    residue = LongIntDivInt(a,11);


    str = "除以普通整数11后";


    OutputLongInt(a,str);


    printf("长整数除以普通整数11后的余数是:%d ",residue);


    */


    len = InputLongInt(a,"第一个加数");


    //len = InputLongInt(b,"第二个加数");


    //LongIntAddLongInt(a,b);


    //OutputLongInt(a,"两数相加的和");


    LongIntToBin(a,b);


    OutputLongInt(b,"转换后的二进制数");


    printf(" 应用程序正在运行! ");


    return 0;


}





Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=935663
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: