資源簡(jiǎn)介
1. 任意長(zhǎng)的整數(shù)加減法運(yùn)算
設(shè)計(jì)算法,實(shí)現(xiàn)一個(gè)任意長(zhǎng)的整數(shù)進(jìn)行加法、減法運(yùn)算的演示程序。例如:1234,5123,4512,3451,2345與-1111,1111,1111,1111,1111的加法結(jié)果為:0123,4012,3401,2340,1234。基本要求如下:
(1)利用鏈表實(shí)現(xiàn)長(zhǎng)整數(shù)的存儲(chǔ),每個(gè)節(jié)點(diǎn)含一個(gè)整型變量;
(2)整型變量的范圍:-(2^15 -1)~(2^15 -1);
(3)輸入與輸出形式每四位一組,組間用逗號(hào)分隔開。如:1986,8213,1935,2736,3299;
(4)界面友好,每步給出適當(dāng)?shù)牟僮魈崾荆⑶蚁到y(tǒng)具有一定的容錯(cuò)能力。
至少給出下面的測(cè)試數(shù)據(jù):
(1)0; 0
(2)-2345,6789; -7654,3211
(3)-9999,9999; 1,0000,0000,0000
(4)1,0001,0001; -1,0001,0001
(5)1,0001,0001; -1,0001,0000
(6)-9999,9999,9999; -9999,9999,9999
(7)1,0000,9999,9999; 1
設(shè)計(jì)算法,實(shí)現(xiàn)一個(gè)任意長(zhǎng)的整數(shù)進(jìn)行加法、減法運(yùn)算的演示程序。例如:1234,5123,4512,3451,2345與-1111,1111,1111,1111,1111的加法結(jié)果為:0123,4012,3401,2340,1234。基本要求如下:
(1)利用鏈表實(shí)現(xiàn)長(zhǎng)整數(shù)的存儲(chǔ),每個(gè)節(jié)點(diǎn)含一個(gè)整型變量;
(2)整型變量的范圍:-(2^15 -1)~(2^15 -1);
(3)輸入與輸出形式每四位一組,組間用逗號(hào)分隔開。如:1986,8213,1935,2736,3299;
(4)界面友好,每步給出適當(dāng)?shù)牟僮魈崾荆⑶蚁到y(tǒng)具有一定的容錯(cuò)能力。
至少給出下面的測(cè)試數(shù)據(jù):
(1)0; 0
(2)-2345,6789; -7654,3211
(3)-9999,9999; 1,0000,0000,0000
(4)1,0001,0001; -1,0001,0001
(5)1,0001,0001; -1,0001,0000
(6)-9999,9999,9999; -9999,9999,9999
(7)1,0000,9999,9999; 1

代碼片段和文件信息
#include?
#include?
#include?
const?int?N?=?1e5+10;//?最長(zhǎng)的整數(shù)長(zhǎng)度
char?A[N]?B[N];
//循環(huán)鏈表結(jié)點(diǎn)
struct?node
{
????int?data;???????????//?數(shù)值域
????int?len;???????????//?長(zhǎng)度
????node*?pre;????//?前驅(qū)
????node*?next;??//?后繼
};
typedef?node*?List;
void?Type_char(List?*L?char?*s);//!字符串轉(zhuǎn)換為鏈表
List?add(List?A?List?B);//!計(jì)算A+B
List?sub(List?A?List?B);//!計(jì)算A-B
void?print(List?a);//!輸出a鏈表
void?Init();//!初始化操作包括輸入
void?menu();//!菜單
int?main()
{
????menu();
????return?0;
}
/*測(cè)試數(shù)據(jù)
(1)-23456789;?-76543211;?輸出?-1000000
(2)-99999999;?1000000000000;?輸出?999900000001
(3)100010001;?-100010001;?輸出?0
(4)100010001;?-100010000;?輸出?1
(5)-999999999999;?-999999999999;?輸出?-1999999999998
(6)1000099999999;?1;?輸出?1000100000000
*/
//?將字符串字轉(zhuǎn)換成鏈表
//!頭部是符號(hào)位
void?Type_char(List?*L?char?*s)
{
????List?p?q;
????(*L)?=?(List)malloc(sizeof(node));
????(*L)->pre?=?NULL;
????(*L)->next?=?NULL;
????(*L)->data?=?‘+‘;???????????//?默認(rèn)符號(hào)位為‘+‘
????p?=?(*L);
????int?len?=?strlen(s)sum?=?1Size?=?0End?=?0;
????if(s[0]?==?‘-‘)
????{
????????(*L)->data?=?‘-‘;
????????End?=?1;????//?如果是符號(hào)“,“則從字符串第二個(gè)字符位置開始
????}
????for?(int?i?=?len-1;?i?>=?End;?--i)
????{
????????if(sum?%?5)
????????{
????????????q?=?(List)malloc(sizeof(node));
????????????q->data?=?s[i]?-?‘0‘;?????????//?字符轉(zhuǎn)換為整數(shù)
????????????q->pre?=?p;
????????????p->next?=?q;
????????????p?=?q;
????????????Size++;
????????}
????????sum++;
????}
????//?循環(huán)連接
????p->next?=?(*L);
????(*L)->pre?=?p;
????(*L)->len?=?Size;????????????????????//?記錄鏈表的長(zhǎng)度-1?————?不帶符號(hào)位的長(zhǎng)度
}
//?加法
List?add(List?A?List?B)
{
????int?len1?=?A->len;
????int?len2?=?B->len;
????List?a?b;????????//?a為較長(zhǎng)的整數(shù)鏈表,?b為較短的整數(shù)鏈表
????if(len1?>?len2)
????{
????????a?=?A;
????????b?=?B;
????}
????else
????{
????????a?=?B;
????????b?=?A;
????}
????len1?=?a->len;??????????//?較長(zhǎng)鏈表長(zhǎng)度
????len2?=?b->len;??????????//?較短鏈表長(zhǎng)度
????int?sum?=?0;
????int?temp?=?0;?????????????//?保存進(jìn)位值
????while?(sum?!=?len1)
????{
????????a?=?a->next;
????????b?=?b->next;
????????if?(sum?>=?len2)?a->data?=?a->data?+?temp;//已經(jīng)超過較短鏈表長(zhǎng)度,所以不需要加b->data
????????else?a->data?=?a->data?+?b->data?+?temp;
????????temp?=?0;
????????if?(a->data?>=?10)?a->data?-=?10?temp?=?1;//超過10表示有進(jìn)位值
????????sum++;
????}
????if?(temp)
????{
????????//?如果最后一位還有進(jìn)位則創(chuàng)建一個(gè)新的結(jié)點(diǎn)放到隊(duì)頭
????????List?p?=?(List)malloc(sizeof(node));
????????p->data?=?temp;
????????p->next?=?a->next;
????????a->next->pre?=?p;
????????p->pre?=?a;
????????a->next?=?p;
????????a?=?p;
????????len1++;
????}
????a?=?a->next;???????//?回到符號(hào)位
????a->len?=?len1;??????//?注意頭部長(zhǎng)度要變化
????return?a;
}
//?減法
List?sub(List?A?List?B)
{
????int?len1?=?A->len;
????int?len2?=?B->len;
????List?a?b;????????//?a為較長(zhǎng)的整數(shù)鏈表,?b為較短的整數(shù)鏈表
????if(len1?>?len2)
????{
????????a?=?A;
????????b?=?B;
????}
????else?if(len1?????{
????????a?=?B;
????????b?=?A;
????}
????else
????{
????????List?tmp1?=?A?tm
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????619520??2019-10-24?16:57??《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)》——課程設(shè)計(jì)報(bào)告之任意長(zhǎng)整數(shù)加法.doc
?????文件???????26173??2019-10-24?16:57??任意大數(shù)流程圖.png
?????文件????????7022??2019-10-24?16:42??任意長(zhǎng)的整數(shù)加法.cpp
?????文件??????189571??2019-10-24?16:05??長(zhǎng)整數(shù).png
- 上一篇:MSSIM 圖像相似度的計(jì)算
- 下一篇:軟件開發(fā)績(jī)效考核表
評(píng)論
共有 條評(píng)論