2022年长整数四则运算+数据结构课程设计 .pdf
《2022年长整数四则运算+数据结构课程设计 .pdf》由会员分享,可在线阅读,更多相关《2022年长整数四则运算+数据结构课程设计 .pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、长整数四则运算题目:编制一个演示长整数的四则运算的程序一、需求分析1. 本程序实现计算任意长的整数的四则运算. 以用户和计算机对话的方式,先后输入数字的最多位数,然后程序就计算并显示出这两个数的运算。2. 利用双向循环链表现实长整数的存储,每个结点含一个整形变量。 输入的形式以回车结束,可以直接输入正数或负数,程序会过滤掉无效的字符。按中国对于长整数的表示习惯,每四位一组,除数字和位于首位置的负号外,其它一切字符都将作为分隔符,连续多个分隔符当一个处理。但不使用分隔符也不影响结果。3. 测试数据(1)0; 0; 输出“0”;(2)-2345,6789; -7654,3211; 输出 “ -1,
2、000,000 ”;(3)-9999,9999; 1,0000,0000,0000; 输出 “9999,0000,0001 ”;(4)1,0001,0001; -1,0001,0001; 输出 “0”;(5)1,0001,0001; -1,0001,0001; 输出 “1”;(6)-9999,9999,9999; -9999,9999,9999; 输出 “ -1,9999,9999,9998”; (7)1,0000,9999,9999; 1; 输出 1,0001,0000,0000. 二、概要设计为实现上述程序功能,应以双向循环链表表示长整数。为此,需要定义一个抽象数据类型。1. 抽象数据类型
3、定义为: ADT OrderedList 2. 数据对象: D=ai|aiint,i=1,2,.n, n0 基本操作:init(&a,digit4) 操作结果:构造一个位数是digit4*4 长整数。pass(&a,&b,&c) 初始条件: a,b,c都已存在操作结果: c 等于 a 和 b 的和。nep(&a) 初始条件: a已存在。操作结果: a变为输入参数的相反数。printlong(&a) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - -
4、- - - - - 初始条件: a已存在。操作结果:按四位一组,分隔符为,的格式,在屏幕上输出a。ston(&S,&a) 初始条件: a已存在。操作结果:把字符串形式的长数字赋给a。ADT OrderedList 2.本程序包含两个模块:1)主程序模块:Void main() 选择操作:1:帮助。2:加法。3:减法。4:乘法。5:除法。6:退出。打印结果; 三、详细设计1.元素类型,结点类型,指针类型#define NULL 0 #include #include #include typedef struct longnode /*每个节点的结构 */ int num; /*数字*/ str
5、uct longnode *low1; /*指向低一位节点 */ struct longnode *high1; /*指向高一位节点 */ longnode; typedef struct xlong /*每个长整数的结构 */ longnode *High; /*每个长整数的最高节点 */ longnode *Low; /*每个长整数的最低节点 */ int digit4; /*每个长整数的总位数 (不包括高位的 0)/4 */ *xlong; int init(xlong *a,int digit4) int I;/*.init.*/ longnode *j; 名师资料总结 - - -精品
6、资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - (*a)=(xlong)malloc(sizeof(struct xlong);/* 为 a 的头结构申请空间 ,并赋初始值 */ (*a)High=NULL;(*a)-Low=NULL; (*a)-High=NULL; (*a)-Low=NULL; (*a)-digit4=0 ;for(i=0;inum=0;j-high1=NULL; j-low1=(*a)-High; if(*a)-High) (*a)
7、-High-high1=j; else (*a)-Low=j;(*a)-High=j;(*a)-digit4+; int pass(xlong a,xlong b,xlong c) int cf=0; /* 两个数字的相加*/ longnode *a1=a-Low,*b1=b-Low,*c1=c-Low; while(a1)c1-num=a1-num+b1-num+cf; if(c1-num9999) cf=1; /* 如果产生进位 (借位) */ c1-num-=10000; elsecf=0; a1=a1-high1;b1=b1-high1;c1=c1-high1; return cf;
8、/* 最高位的进位 (借位) */ int passa(xlong a,xlong b,xlong c) int cf=0; /* 两个数字的相减*/ longnode *a1=a-Low,*b1=b-Low,*c1=c-Low; while(a1)c1-num=a1-num-b1-num-cf; if(c1-num9999)cf=1;/* 如果产生进位 (借位) */ c1-num-=10000; elsecf=0; a1=a1-high1;b1=b1-high1;c1=c1-high1; return cf; /* 最高位的进位 (借位) */ 名师资料总结 - - -精品资料欢迎下载 -
9、 - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - int passb(xlong a,xlong b,xlong c) int cf=0;/* 两个数字的相乘*/ longnode *a1=a-Low,*b1=b-Low,*c1=c-Low; while(a1)c1-num=a1-num*b1-num*cf; if(c1-num9999) cf=1; /* 如果产生进位 (借位) */ c1-num=10000; elsecf=0; a1=a1-high1;b1=b1-h
10、igh1;c1=c1-high1; return cf; /* 最高位的进位 (借位) */ int passc(xlong a,xlong b,xlong c) int cf=0;/* 两个数字的相除*/ longnode *a1=a-Low,*b1=b-Low,*c1=c-Low; while(a1) c1-num=a1-num/b1-num/cf; if(c1-num9999) cf=1; /* 如果产生进位 (借位) */ c1-num-=10000; else cf=0; a1=a1-high1;b1=b1-high1;c1=c1-high1; return cf; /* 最高位的进
11、位 (借位) */ nep(xlong a) /* 求 a的相反数*/ int cf=1; /* 因为求相反数是取反加一,所以这里 cf=1; */ longnode *a1=a-Low; while(a1) a1-num=9999-(a1-num)+cf; if(a1-num9999) a1-num=10000; elsecf=0;a1=a1-high1; return; printlong(xlong a) longnode *i=a-High;/* 打印长整数 a */ if(i-num=5000) printf(-); /* 最高位(bit)=1 表示负数 ,即用补码表示*/ 名师资料
12、总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - - - - nep(a); /* 求反打印其绝对值*/ while(i&i-num=0) i=i-low1; /* 跳过最位的 0 */ if(i)printf(%d,i-num); i=i-low1; if(i) printf(“, ”);else printf(“0”);/* a=0 打 0 */ while(i)printf(%04d,i-num); if(i-low1) printf(,);
13、 i=i-low1; int ston(char in,xlong out) /* 把字符串转化为数字赋给a */ int bit,i,jishu=1,num0=0; longnode *j=out-Low; i=strlen(in)-1;while(i=0 & j) /* 循环每一个字节*/ bit=ini- ,0?;/* 把字符形式的值赋给整数形式的bit */ if(bit=0 & bit 1&(jishu=10000|bit9) /* 数字以外的字符*/ j-num=num0; j=j-high1; /* 存入一个节点*/ num0=0; jishu=1; i-; if(num0) j
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年长整数四则运算+数据结构课程设计 2022 年长 整数 四则运算 数据结构 课程设计
限制150内