ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:84.96KB ,
资源ID:318227      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/318227.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(任意长整数的四则运算.docx)为本站会员(b****0)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

任意长整数的四则运算.docx

1、任意长整数的四则运算 1 题目介绍和功能要求1.1 课程设计题目要求【问题描述】: 设计一个实现任意长的整数进行加法运算的演示程序 。【题目容】:利用双向循环链表实现长整数的存储,每个结点含一个整形变量。任何整形变量的围是 -(- 1)(- 1)。输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。【基本要求】:(1)利用所学知识,设计相应的数据结构;(2)熟练运用开发环境;(3)完成软件的设计与编码; (4)熟练地掌握基本的调试方法。1.2 题目分析【需求分析】: (1)本程序实现计算任意长的整数的加法运算. 以用户和计算机对话的方式,即在计算机终端上显示“提示信息”之后

2、,由用户在键盘上输入演示程序中规定的运算命令,然后程序就计算并显示出这两个数的运算。 (2)本演示程序中,数字字符限定为09和字符,输入字符可以任意长,输入形式以“回车符”为结束标志,串中字符顺序不限,且允许出现重复字符。 (3)利用双向循环链表现实长整数的存储,每个结点含一个整形变量。输入的形式以回车结束,可以直接输入正数或负数。按中国对于长整数的表示习惯,每四位一组,除数字和位于首位置的负号外,其它一切字符都将作为分隔符,连续多个分隔符当一个处理,但不使用分隔符也不影响结果。 2 系统功能模块结构图2.1 系统功能结构框图 系统功能模块 主调程序模块 长整数运算模块 双向循环链表处理模块

3、界 面 模 块 图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 概要说明为了实现上述功能,采取双向循环链表表示长整数,每个结

4、点含一个整型变量,仅绝对值不超过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 cmpli

5、nklen(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); /从键盘输入两个长整数,存至

6、opr1和opr2中Status output(NodeList oprr,char str); /在屏幕打印长整数oprrStatus 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(NodeLis

7、t opr1,NodeList opr2,NodeList &quti,NodeList &remand); /本算法实现A,B相除的操作4.2主要函数 主程序模块: /int main()双向循环链表处理模块: /Status conversion(char str,NodeList &oprh); /int cmplinklen(NodeList opr1,NodeList opr2); /Status Creat(NodeList &oprr,int len); /int compare(NodeList opr1,NodeList opr2);长整数四则运算模块: /Status ad

8、d_bas(NodeList opr1,NodeList opr2,NodeList &oprr); /Status sub_bas(NodeList opr1,NodeList opr2,NodeList &oprr); /Status imul(NodeList opr1,NodeList opr2,NodeList &oprr); /Status idiv(NodeList opr1,NodeList opr2,NodeList &quti,NodeList &remand); 界面模块: /void title(); /void welcome(); 5 主要算法程序流程图 5.1 程

9、序流程图 输出数据输出数据 否 是 程序结束程序结束 图5.1 主要算法流程图 6 程序测试(1) 程序运行环境为DOS界面,执行文件为“长整数四则运算.exe”(2) 进入演示程序后即显示文本方式的用户界面 图6.1 用户界面(3) 输入命令,执行相应的功能: 1-加法运算 2-减法运算 3-乘法运算 4-除法运算 5-退出系统 图6.2 执行界面(4) 加法运算测试 图6.3 加法运算界面 (5) 减法运算测试 图6.4 减法运算界面(6) 乘法运算测试 图6.5 乘法运算界(7) 除法运算测试 图6.6 除法运算界面7 参考文献1 严蔚敏,吴伟民.数据结构(C语言版)M.:清华大学,20

10、062 吕国英.算法设计与分析M.:清华大学,20063 徐宝文,志.C程序设计语言M.:机械工业,20044 滕国文.数据结构课程设计M.:清华大学,20105 仕华.数据结构课程设计(第2版)M.:机械工业,20106 建学,光.数据结构课程设计案例精编M.:清华大学,20107 汪沁,奚峰.数据结构与算法M.:清华大学,20128 奚小玲,敖广武.数据结构理论与实践M.:东北大学,2010 附录:程序清单(带有必要的注释)#include#include#include#include#include#include#define LEN sizeof(struct Node)#defi

11、ne MAX 1000#define OK 1#define ERROR 0#define OVERFLOW -1#define TRUE 1#define FALSE 0typedef int Status;typedef struct Node int data; struct Node *prior,*next;Node,*NodeList;/=输入模块=/求指数函数值int axp(int a,int k) int r=1; if(k=0) return 1; for(;k0;k-) r=r*a; return r;/输入转换函数Status conversion(char str,N

12、odeList &oprh)/将字符串形式的操作数转换成所需的类型 NodeList p; int i,k,buffer; k=buffer=0; oprh=(NodeList)malloc(LEN); oprh-next=oprh; oprh-prior=oprh; for(i=strlen(str)-1;i=0;i-) /若输入的数不合法就返回重新输入 if(i!=0 | (str0!=- & str0!=+)&(stri9 | strinext-prior=p; p-prior=oprh; p-next=oprh-next; oprh-next=p; p-data=buffer; buffer=k=0; if(str0=-) oprh-data=-; else oprh-data=+; return OK;/输入函数Status input(NodeList &opr1,NodeList &opr2,char str) int flag=OK,i,n=0,l; char bMAX; printf(n请输入第一个操作数:n); scanf(%s,b);getchar();l=strlen(b);for(i=0;il;i+) if(bi!=,) strn+=bi;strn=0; flag=convers

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1