长整数,高精度大数加减运算课程报告(C 版)(附源代码)
华南理工大学 计算机学院 网络工程 Copyright ©2013by CY.M.
华南理工大学
高级语言程序设计 I 大作业报告
实验题目: 长整数运算、高精度运算
姓名: 李超悦 学号: 201230610155
班级: 网络工程 任课教师: 郑运平
实验概述
【实验目的及要求】
设计一个程序实现两个任意长的整数 (包括正数和负数)、任意精度实数的算术运
算。
要求:
(1) 用动态链表存贮数据,每个结点含一个整型变量,表示若干位数。
31 31
(注:任何整型变量的范围是 - (2 -1)~ (2 -1),
n n
任意长整数的整型变量的范围是- (2 -1)~ (2 -1),在计算机上都能有
效地运行。 其中,n 是由程序读入的参数控制的。 )
(2)整数输入和输出按中国对于长整数的习惯表示,每 3 位 1 组,组间用逗号隔
开。
(3)实现加、减运算。
(4)程序运行界面清晰实用。
【实验原理】
大整数的存储结构:
大数计算的因数和结果精度一般是少则数十位,多则几万位。在C++
语言中定义的类型中精度最多只有二十多位,因而我们采取用链表存贮的
方式来存放大数。在计算中会用到从高位开始计算,和从低位开始计算数
值的两种情况。所以我们将链表定义为双向链表,其中为一个单元来存贮
数据,一个指针指向前方的数据,另一个指向后的数据。
华南理工大学 计算机学院 网络工程 Copyright ©2013by CY.M.
程序的逻辑框图
双向链表的
初始化
主函数
输入任意长整数
调用双向链表基
本操作函数
长整数求值及结
果显示
END
【实验环境】
VS2012 SP2,WIN8平台
实验内容
【实验方案设计】
一、要求和规格的说明
描述问题:
设计一个程序实现两个任意长的整数 (包括正数和负数)、任意精度实数的算术运算。
要求:
华南理工大学 计算机学院 网络工程 Copyright ©2013by CY.M.
(1) 用动态链表存贮数据,每个结点含一个整型变量,表示若干位数。
31 31
(注:任何整型变量的范围是 - (2 -1)~ (2 -1),
n n
任意长整数的整型变量的范围是- (2 -1)~ (2 -1),在计算机上都能有
效地运行。 其中,n 是由程序读入的参数控制的。 )
(2)整数输入和输出按中国对于长整数的习惯表示,每 3 位 1 组,组间用逗号隔
开。
(3)实现加、减运算。
(4)程序运行界面清晰实用。
二、设计
1、设计思想:
1)储结构:
双向链表储存数据
struct long_int //构建一个存储字符与地址的结构
{char num ; long_int *pro , *next ; };//在这里,用pro记录左链,
用next记录右链
原理:在