 // LongInt.cpp : Defines the entry point for the console application.
// LongInt.cpp : Defines the entry point for the console application. //
//
 #include "stdafx.h"
#include "stdafx.h" #include "string.h"
#include "string.h" #define    MAXLEN    50
#define    MAXLEN    50 /*
/* function InputLongInt()长整数输入函数
function InputLongInt()长整数输入函数 */
*/ int InputLongInt(int *a,char *para)
int InputLongInt(int *a,char *para) {
{ int        len,i;
    int        len,i; char    number[MAXLEN];
    char    number[MAXLEN]; printf("请输入[%s]长整数:	",para);
    printf("请输入[%s]长整数:	",para); scanf("%s",number);
    scanf("%s",number); len = strlen(number);
    len = strlen(number); for(i=len;i>=1;i--)
    for(i=len;i>=1;i--) a[i] = number[len-i]-'0';
        a[i] = number[len-i]-'0'; a[0] = len;
    a[0] = len; return(a[0]);
    return(a[0]); }
} /*
/* function OutputLongInt()长整数输出函数
function OutputLongInt()长整数输出函数 */
*/ void OutputLongInt(int *a,char *para)
void OutputLongInt(int *a,char *para) {
{ int i;
    int i; printf("输出的[%s]长整数:	",para);
    printf("输出的[%s]长整数:	",para); for(i=a[0];i>=1;i--)
    for(i=a[0];i>=1;i--) printf("%d",a[i]);
        printf("%d",a[i]); printf(" ");
    printf(" "); }
} /*
/* function FormatLongInt()长整数规范化函数
function FormatLongInt()长整数规范化函数 */
*/ int FormatLongInt(int *a)
int FormatLongInt(int *a) {
{ int p;
    int p; for(p=1;p<a[0]||a[p]>=10;p++)
    for(p=1;p<a[0]||a[p]>=10;p++) {
    { if(p>=a[0])
        if(p>=a[0])     a[p++] = 0;
            a[p++] = 0; a[p++] += a[p]/10;
        a[p++] += a[p]/10; a[p] = a[p]%10;
        a[p] = a[p]%10; }
    } if(p>a[0])
    if(p>a[0]) a[0] = p;
        a[0] = p; return(a[0]);
    return(a[0]); }
} /*
/* function LongIntAddLongInt()长整数加长整数函数
function LongIntAddLongInt()长整数加长整数函数 相加的和放在数组A中
相加的和放在数组A中 */
*/ void LongIntAddLongInt(int *a,int *b)
void LongIntAddLongInt(int *a,int *b) {
{ int i;
    int i; while(a[0] < b[0])
    while(a[0] < b[0]) a[++a[0]] = 0;
        a[++a[0]] = 0; for(i=1;i<=b[0];i++)
    for(i=1;i<=b[0];i++) a[i] += b[i];
        a[i] += b[i]; FormatLongInt(a);
    FormatLongInt(a); }
} /*
/* function LongIntDivInt()长整数除普通整数函数
function LongIntDivInt()长整数除普通整数函数 除得的商放在数组A中,余数放在返回值中
除得的商放在数组A中,余数放在返回值中 */
*/ int LongIntDivInt(int *a,int divisor)
int LongIntDivInt(int *a,int divisor) {
{ int p,    //存储相除后的余数下标
    int p,    //存储相除后的余数下标 k;    //存储数字个数(长整数有效数字个数)
        k;    //存储数字个数(长整数有效数字个数) k = p = a[0];
    k = p = a[0]; a[0] = 0;
    a[0] = 0; while(p>0)
    while(p>0) {
    { a[p-1] += a[p] % divisor * 10;
        a[p-1] += a[p] % divisor * 10; a[p] = a[p] / divisor;
        a[p] = a[p] / divisor; if(a[k]==0)
        if(a[k]==0)  k--;
            k--; p--;
        p--; }
    } p = a[0] / 10;    //保存余数
    p = a[0] / 10;    //保存余数 a[0] = k;    //回写有效数字个数
    a[0] = k;    //回写有效数字个数 FormatLongInt(a);
    FormatLongInt(a); return(p);
    return(p); }
} /*
/* function LongIntDivInt()长整数转换成二进制数函数
function LongIntDivInt()长整数转换成二进制数函数 转换的二进制数存储数组B中
转换的二进制数存储数组B中 */
*/ void LongIntToBin(int *a,int *b)
void LongIntToBin(int *a,int *b) {
{ int p;
    int p; b[0] = 0;
    b[0] = 0; while(a[0] > 0)
    while(a[0] > 0) {
    { b[0]++;
        b[0]++; b[b[0]] = a[1] % 2;
        b[b[0]] = a[1] % 2; p = a[0];
        p = a[0]; while(p > 0)
        while(p > 0) {
        { if((a[p] % 2) && (p > 1))
            if((a[p] % 2) && (p > 1)) a[p-1] += 10;
                a[p-1] += 10; a[p] /= 2;
            a[p] /= 2; if(a[a[0]] == 0)
            if(a[a[0]] == 0) a[0]--;
                a[0]--; p--;
            p--; }
        } }
    } }
}
 int main(int argc, char* argv[])
int main(int argc, char* argv[]) {
{ int a[MAXLEN],b[MAXLEN];
    int a[MAXLEN],b[MAXLEN]; int len,residue;
    int len,residue; /*
    /* len = InputLongInt(a);
    len = InputLongInt(a); printf("源长整数的长度是:%d ",len);
    printf("源长整数的长度是:%d ",len); str = "源";
    str = "源"; OutputLongInt(a,str);
    OutputLongInt(a,str); len = FormatLongInt(a);
    len = FormatLongInt(a); printf("规范化后长整数的长度是:%d ",len);
    printf("规范化后长整数的长度是:%d ",len); str = "规范化后";
    str = "规范化后"; OutputLongInt(a,str);
    OutputLongInt(a,str); residue = LongIntDivInt(a,11);
    residue = LongIntDivInt(a,11); str = "除以普通整数11后";
    str = "除以普通整数11后"; OutputLongInt(a,str);
    OutputLongInt(a,str); printf("长整数除以普通整数11后的余数是:%d ",residue);
    printf("长整数除以普通整数11后的余数是:%d ",residue); */
    */ len = InputLongInt(a,"第一个加数");
    len = InputLongInt(a,"第一个加数"); //len = InputLongInt(b,"第二个加数");
    //len = InputLongInt(b,"第二个加数"); //LongIntAddLongInt(a,b);
    //LongIntAddLongInt(a,b); //OutputLongInt(a,"两数相加的和");
    //OutputLongInt(a,"两数相加的和"); LongIntToBin(a,b);
    LongIntToBin(a,b); OutputLongInt(b,"转换后的二进制数");
    OutputLongInt(b,"转换后的二进制数"); printf("  应用程序正在运行! ");
    printf("  应用程序正在运行! "); return 0;
    return 0; }
}

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=935663
 
                    
                     
                    
                 
                    
                 
        
 
     
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号