博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
长整数的基本操作
阅读量:4189 次
发布时间:2019-05-26

本文共 2283 字,大约阅读时间需要 7 分钟。

//
 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<a[0]||a[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

你可能感兴趣的文章
IT项目经理是否需要技术能力
查看>>
饮水者才能自知冷暖
查看>>
产品和样品
查看>>
测试Windows Sockets协议
查看>>
浅谈流媒体测试
查看>>
在接口后面能不能使用new操作符
查看>>
Windows API一日一练(37)MoveWindow函数
查看>>
C/C++内存问题检查利器—Purify (三)
查看>>
C/C++内存问题检查利器—Purify (二)
查看>>
让自定义的类型可以和任意的类型之间转换
查看>>
你讨厌 C++中的“
查看>>
STL的L细细品
查看>>
实实在在说多态(相同函数名 依据上下文 实现却不同)
查看>>
仿基因编程原理导论(里面的几个重要的概念正在做修正,所以这只能算是一个原理的初稿。)
查看>>
node的 http-server 启动以后 浏览器访问有问题
查看>>
解决VS+QT无法自动生成moc文件的问题
查看>>
wpf image资源释放问题
查看>>
apache tomcat 安装配置
查看>>
eclipse maven创建一个普通java项目
查看>>
java 发送https post请求
查看>>