- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
任意长整数的四则运算
1 题目介绍和功能要求
1.1 课程设计题目要求
【问题描述】 设计一个实现任意长的整数进行加法运算的演示程序
【】:
利用双向循环链表实现长整数的存储,每个结点含一个整形变量。任何整形变量的范围是 -(- 1)~(- 1)。输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。
【基本要求】1.2 题目分析
【需求分析 (1)本程序实现计算任意长的整数的加法运算. 以用户和计算机对话的方式,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令,然后程序就计算并显示出这两个数的运算。 本演示程序中,数字字符限定为[‘0’~9’]和字符‘,’,输入字符可以任意长,输入形式以“回车符”为结束标志,串中字符顺序不限,且允许出现重复字符。利用双向循环链表现实长整数的存储,每个结点含一个整形变量。输入的形式以回车结束,可以直接输入正数或负数。按中国对于长整数的表示习惯,每四位一组,除数字和位于首位置的负号外,其它一切字符都将作为分隔符,连续多个分隔符当一个处理但不使用分隔符也不影响结果。
2 系统功能模块结构图
2.1 系统功能结构框图
图2.1 系统功能结构图
2.2主要模块的功能说明:
(1)主调程序模块:
void main()
{????? 初始化;do{???? 接受命令;???? 处理命令;}while(“命令”=”退出”)}
(2)双向循环链表处理模块 //cmplinklen.h //Creat.h //compare
说明:进行链表的存储和处理
(3)长整数运算模块 //add.h // sub.h //imul.h //idiv.h
说明:对长整数进行四则运算
(4)界面模块 //title.h //welcome.h
说明:控制系统运行操作界面
3 数据结构的设计及用法说明
3.1 概要说明
为了实现上述功能,采取双向循环链表表示长整数,每个结点含一个整型变量,仅绝对值不超过9999的整数,整个链表用十进制数表示。利用头结点数据域的符号表示长整数的符号,相加过程不破坏两个操作数链表,对长整数位数不作上限。为此需要两个结构数据类型:双向循环链表和长整数。
3.2用法说明
3.2.1 双向循环链表的数据结构定义:
typedef struct Node //双向循环链表结点
{ int data;
struct Node *prior,*next;
}Node,*NodeList;
3.2.2 基本操作:
Status conversion(char str[],NodeList oprh);
//将字符串形式的操作数转换成所需的类型
int cmplinklen(NodeList opr1,NodeList opr2);
//opr1链比opr2链长则返回1,短则返回-1,否则返回0
int length(NodeList oprr);
//求链表长度
Status Creat(NodeList oprr,int len);
//生成指定长度链表
int compare(NodeList opr1,NodeList opr2);
//比较opr1、opr2绝对值的大小
4 涉及到的函数的描述
4.1长整数操作函数
Status input(NodeList opr1,NodeList opr2,char str[]);
//从键盘输入两个长整数,存至opr1和opr2中
Status output(NodeList oprr,char str[]);
//在屏幕打印长整数oprr
Status add_bas(NodeList opr1,NodeList opr2,NodeList oprr);
//本算法实现A,B相加的操作
Status sub_bas(NodeList opr1,NodeList opr2,NodeList oprr);
//本算法实现A,B相减的操作
Status imul(NodeList opr1,NodeList opr2,NodeList oprr);
//本算法实现A,B相乘的操作
Status idiv(NodeList opr1,Node
您可能关注的文档
最近下载
- 人工智能基础与应用—(AIGC实战):AIGC文本生成与辅助写作PPT教学课件.pptx VIP
- 统编版历史必修中外历史纲要(下)第10课《影响世界的工业革命》说课稿.docx VIP
- 学前儿童美术教育与活动指导全套完整课件教学课件.pptx VIP
- 【河北梆子剧本】卖妙郎.pdf VIP
- 2013款别克昂科拉用户使用手册.pdf VIP
- 云内_国六_发动机系统介绍.pdf
- 三相鼠笼式异步电动机实验报告.doc VIP
- 急性心肌梗死合并心原性休克诊断和治疗中国专家共识(2021)解读PPT课件.pptx VIP
- 入团志愿书电子版.doc VIP
- 第4课 日本明治维新课件(共21张PPT)部编版九年级历史下册.pptx VIP
文档评论(0)