任意长整数的四则运算Word格式.docx
- 文档编号:13247706
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:38
- 大小:84.96KB
任意长整数的四则运算Word格式.docx
《任意长整数的四则运算Word格式.docx》由会员分享,可在线阅读,更多相关《任意长整数的四则运算Word格式.docx(38页珍藏版)》请在冰豆网上搜索。
2.1系统功能结构框图
系统功能模块
主调程序模块
长整数运算模块
双向循环链表处理模块
界面模块
图2.1系统功能结构图
2.2主要模块的功能说明:
(1)主调程序模块:
voidmain()
{
初始化;
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双向循环链表的数据结构定义:
typedefstructNode//双向循环链表结点
{intdata;
structNode*prior,*next;
}Node,*NodeList;
3.2.2基本操作:
Statusconversion(charstr[],NodeList&
oprh);
//将字符串形式的操作数转换成所需的类型
intcmplinklen(NodeListopr1,NodeListopr2);
//opr1链比opr2链长则返回1,短则返回-1,否则返回0
intlength(NodeListoprr);
//求链表长度
StatusCreat(NodeList&
oprr,intlen);
//生成指定长度链表
intcompare(NodeListopr1,NodeListopr2);
//比较opr1、opr2绝对值的大小
4涉及到的函数的描述
4.1长整数操作函数
Statusinput(NodeList&
opr1,NodeList&
opr2,charstr[]);
//从键盘输入两个长整数,存至opr1和opr2中
Statusoutput(NodeListoprr,charstr[]);
//在屏幕打印长整数oprr
Statusadd_bas(NodeListopr1,NodeListopr2,NodeList&
oprr);
//本算法实现A,B相加的操作
Statussub_bas(NodeListopr1,NodeListopr2,NodeList&
//本算法实现A,B相减的操作
Statusimul(NodeListopr1,NodeListopr2,NodeList&
//本算法实现A,B相乘的操作
Statusidiv(NodeListopr1,NodeListopr2,NodeList&
quti,NodeList&
remand);
//本算法实现A,B相除的操作
4.2主要函数
主程序模块:
//intmain()
双向循环链表处理模块:
//Statusconversion(charstr[],NodeList&
//intcmplinklen(NodeListopr1,NodeListopr2);
//StatusCreat(NodeList&
//intcompare(NodeListopr1,NodeListopr2);
长整数四则运算模块:
//Statusadd_bas(NodeListopr1,NodeListopr2,NodeList&
//Statussub_bas(NodeListopr1,NodeListopr2,NodeList&
//Statusimul(NodeListopr1,NodeListopr2,NodeList&
//Statusidiv(NodeListopr1,NodeListopr2,NodeList&
界面模块:
//voidtitle();
//voidwelcome();
5主要算法程序流程图
5.1程序流程图
输出数据
输出数据
否
是
程序结束
图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].:
清华大学,2006
[2]吕国英.算法设计与分析[M].:
[3]徐宝文,志.C程序设计语言[M].:
机械工业,2004
[4]滕国文.数据结构课程设计[M].:
清华大学,2010
[5]仕华.数据结构课程设计(第2版)[M].:
机械工业,2010
[6]建学,光.数据结构课程设计案例精编[M].:
[7]汪沁,奚峰.数据结构与算法[M].:
清华大学,2012
[8]奚小玲,敖广武.数据结构理论与实践[M].:
东北大学,2010
附录:
程序清单(带有必要的注释)
#include<
cstdio>
cstring>
malloc.h>
conio.h>
stdlib.h>
stdio.h>
#defineLENsizeof(structNode)
#defineMAX1000
#defineOK1
#defineERROR0
#defineOVERFLOW-1
#defineTRUE1
#defineFALSE0
typedefintStatus;
typedefstructNode
{
intdata;
//===============输入模块===============
//求指数函数值
intaxp(inta,intk)
intr=1;
if(k==0)
return1;
for(;
k>
0;
k--)
r=r*a;
returnr;
}
//输入转换函数
Statusconversion(charstr[],NodeList&
oprh)
{//将字符串形式的操作数转换成所需的类型
NodeListp;
inti,k,buffer;
k=buffer=0;
oprh=(NodeList)malloc(LEN);
oprh->
next=oprh;
prior=oprh;
for(i=strlen(str)-1;
i>
=0;
i--)
{//若输入的数不合法就返回重新输入
if((i!
=0||(str[0]!
='
-'
&
&
str[0]!
+'
))&
(str[i]>
'
9'
||str[i]<
0'
))
returnERROR;
if(str[0]=='
str[1]!
\0'
)
if((str[0]=='
||str[0]=='
)&
str[1]=='
if(str[i]!
str[i]!
{
buffer=buffer+(str[i]-'
)*axp(10,k);
k++;
if(k==4||str[i-1]=='
||str[i-1]=='
||i==0)
{//将新建结点插入到头结点之后
p=(NodeList)malloc(LEN);
oprh->
next->
prior=p;
p->
next=oprh->
next;
next=p;
data=buffer;
buffer=k=0;
}
}
if(str[0]=='
oprh->
data='
;
else
returnOK;
//输入函数
opr2,charstr[])
intflag=OK,i,n=0,l;
charb[MAX];
printf("
\n请输入第一个操作数:
\n"
);
scanf("
%s"
b);
getchar();
l=strlen(b);
for(i=0;
i<
l;
i++)
if(b[i]!
'
str[n++]=b[i];
str[n]='
flag=convers
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 任意 整数 四则运算