第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

C語言程序設(shè)計-長整數(shù)加法運(yùn)算

標(biāo)簽:
C++ C#

课程设计题目及要求:长整数加法运算

【问题描述】

设计一个实现任意长的整数进行加法运算的演示程序。

【基本要求】

利用双向循环链表实现长整数的存储,每个结点含一个整型变量。任何整型变量的范围是-(215-l)~(215-1) 。输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。

【测试数据】

(1) 0;0; 应输出 “0” 。

(2)-2345,6789; -7654,3211; 应输出 “-1,0000,0000” 。

(3)-9999,9999;1,0000,0000,0000; 应输出 “9999,0000,0001” 。

(4) 1,0001,0001;-1,0001,0001; 应输出 “0” 。

(5) 1,0001,0001;-1,0001,0000; 应输出 “1” 。

(6) -9999,9999,9999;-9999,9999,9999;应输出 “-1,9999,9999,9998” 。 (7) 1,0000,9999,9999;1; 应输出 "1,0001,0000,0000 " 。

【实现提示】

(1) 每个结点中可以存放的最大整数为 215-1=32767, 才能保证两数相加不会溢出。但若这样存放,即相当于按32768进制数存放,在十进制数与32768进制数之间的转换十分不方便。故可以在每个结点中仅存十进制数的4位,即不超过9999的非负整数,整个链表表示为万进制数。

(2) 可以利用头结点数据域的符号代表长整数的符号。相加过程中不要破坏两个操作数链表。不能给长整数位数规定上限。

(3)实现长整数的四则运算;

【选作内容】

(1)实现长整数的乘方和阶乘运算;

(2)整型量范围是- (2n-1) ~ (2n-1), 其中,n是由程序读人的参量。输入数据的分

组方法可以另行规定

系统功能和原始数据

1.原始数据

(1) 0;0; 应输出 “0” 。

(2)-2345,6789; -7654,3211; 应输出 “-1,0000,0000” 。

(3)-9999,9999;1,0000,0000,0000; 应输出 “9999,0000,0001” 。

(4) 1,0001,0001;-1,0001,0001; 应输出 “0” 。

(5) 1,0001,0001;-1,0001,0000; 应输出 “1” 。

(6) -9999,9999,9999;-9999,9999,9999;应输出 “-1,9999,9999,9998” 。

(7) 1,0000,9999,9999;1; 应输出 "1,0001,0000,0000 " 。

2.系统功能

用链表来实现任意长度的长整数的加法

程序总体设计

(1)数据结构

采用双向链表

(2)模块划分和层次结构

十一个函数,main函数在开头;

调用每个函数;

(3)函数原型清单

1.int Compare(dnode *a, dnode *b) ;

功能:用来比较链表中存入的两个数的大小

2.void InitNode(dnode **head);

功能: 初始化链表

3.int InitNumber(dnode *head, char *data) ;

功能:将字符转化为数字后,插入数字

4.void InsertNode(dnode *head, int x);

功能: 创建插入节点

5.void InsertNodePre(dnode **head, int x);

功能: 相加后,将结果插入已有节点的前面

6.void Addition(dnode *a, dnode *b) ;

功能: 相加

7.dnode* add(dnode *a, dnode *b) ;

功能: 进行相加,结果存入链表中,返回头指针

8.dnode* sub(dnode *a, dnode *b) ;

功能: 进行相减,结果存入链表中,返回头指针

9 void des( dnode *head);

功能:销毁链表,释放内存;

9.void PrintNode(dnode *head);

功能: 输出链表

(4)程序总体框架

功能模块函数设计和调试

主要模块:

加法:dnode* add(dnode *a, dnode *b)

功能:实现两个同号的长整数相加;每个相加后的节点存入创建的新链表;

要考虑到进位,满10000进一,每次计算时要注意加上进位的数值;

num = x + y + jin;//两个相加,在加上进位的;

jin = num /10000;//因为是万进制,所以满万进一;

num = num%10000;;

if(jin > 0)//如果从后往前最后一位相加后,有进位的话,

InsertNodePre(&head, jin);

减法:dnode* sub(dnode *a, dnode *b)

功能: 这个函数用来 实现两个异号的长整数相减;每个相加后的节点存入创建的新链表中;

要考虑到借位,每次相减要减去借位的数值

num = x - y - borrow;//减去借位的

borrow = 0;//初始化变量

if(num < 0){

borrow = 1;

num =num + 10000 ;

}

程序清单:

源代码:

运行结果:

错误提示:非法字符:

课程设计总结

通过课设,对链表的理解更深一些,对于链表的添加,删除和插入都更熟悉;

在检查程序的时候,调试的时候发现在循环一遍后,有些变量忘记重新初始化;

在查错的时候,输入非法字符程序会崩溃,进行控制判断后,可以输出错误信息提示;

参考资料: 李戈视频. 钱能教材

點擊查看更多內(nèi)容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消