C程序設(shè)計(jì)項(xiàng)目教程習(xí)題答案.docx_第1頁
C程序設(shè)計(jì)項(xiàng)目教程習(xí)題答案.docx_第2頁
C程序設(shè)計(jì)項(xiàng)目教程習(xí)題答案.docx_第3頁
C程序設(shè)計(jì)項(xiàng)目教程習(xí)題答案.docx_第4頁
C程序設(shè)計(jì)項(xiàng)目教程習(xí)題答案.docx_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

項(xiàng)目一項(xiàng)目考核一、選擇題16:ACCCD C二、簡答題1機(jī)器語言、匯編語言、高級(jí)語言各有什么特點(diǎn)? 機(jī)器語言機(jī)器語言是以二進(jìn)制代碼(0和1)表示機(jī)器指令的一種語言,用機(jī)器語言編寫的程序能被計(jì)算機(jī)直接執(zhí)行。但使用機(jī)器語言編寫程序非常繁瑣,程序代碼很難讀懂且不通用。 匯編語言匯編語言用易懂的符號(hào)代替二進(jìn)制代碼,使得編程技術(shù)前進(jìn)了一大步。計(jì)算機(jī)并不能直接執(zhí)行,需要借助匯編編譯器將它翻譯成二進(jìn)制機(jī)器代碼。 高級(jí)語言高級(jí)語言屏蔽了機(jī)器的細(xì)節(jié),更接近于自然語言和數(shù)學(xué)語言,給編程帶來了極大的方便,如FORTRAN、BASIC、C、C+、Java、C#等。2簡述執(zhí)行C語言程序的基本過程。C語言程序都采用編譯方式運(yùn)行,一般分為編輯、編譯、連接和運(yùn)行過程。高級(jí)語言源程序編譯機(jī)器語言目標(biāo)程序連接可執(zhí)行程序運(yùn)行運(yùn)行結(jié)果編譯程序連接程序(.obj)(.exe) 編寫源代碼使用C語言編寫實(shí)現(xiàn)特定功能的程序代碼,源代碼必須遵循C語言的規(guī)范。 編譯編譯階段是將我們編寫的源代碼翻譯為計(jì)算機(jī)能夠理解的二進(jìn)制目標(biāo)代碼。 連接連接過程便是將目標(biāo)文件與函數(shù)合并成完整的可執(zhí)行文件,即生成.exe文件,這樣程序就可以在計(jì)算機(jī)上直接運(yùn)行了。 運(yùn)行即執(zhí)行連接成功后得到的可執(zhí)行程序。3簡述C程序的基本結(jié)構(gòu)。 C語言程序由函數(shù)構(gòu)成 程序中包含對(duì)庫函數(shù)的引用 程序有良好的編碼格式 編寫程序注釋 友好的人機(jī)交互提示4簡述調(diào)試C程序的基本步驟。第一步 設(shè)置斷點(diǎn)單擊工具欄按鈕即可添加斷點(diǎn),此時(shí)該行前端將出現(xiàn)一個(gè)斷點(diǎn)標(biāo)志。第二步 開始調(diào)試程序打開“組建”下拉菜單,執(zhí)行“開始調(diào)試”“GO”命令(或直接按【F5】鍵),程序會(huì)進(jìn)入調(diào)試模式,并且會(huì)在斷點(diǎn)處暫停。第三步 單步運(yùn)行不斷按【F10】鍵,程序會(huì)一步一步地向前執(zhí)行。項(xiàng)目實(shí)訓(xùn)略項(xiàng)目二項(xiàng)目考核一、選擇題112:DAAAB BDCAB AC二、簡答題1在程序中定義數(shù)據(jù)類型的目的是什么?C語言提供了哪些基本數(shù)據(jù)類型?答:為了在程序中存儲(chǔ)不同類型的數(shù)據(jù),并節(jié)省空間。C語言提供了以下數(shù)據(jù)類型:數(shù)據(jù)類型基本類型構(gòu)造類型整型短整型長整型整型雙長整型浮點(diǎn)型字符型布爾型空類型單精度雙精度長雙精度枚舉類型、數(shù)組類型、結(jié)構(gòu)體類型、共同體類型、指針類型、函數(shù)類型2常量和變量有何區(qū)別?字符常量和字符串常量有何區(qū)別?答:常量是指在程序執(zhí)行過程中值保持不變的量,變量是指在程序運(yùn)行過程中值可以改變的量,每個(gè)變量都必須在聲明時(shí)明確定義其數(shù)據(jù)類型,并且需要用標(biāo)識(shí)符標(biāo)識(shí)。字符串常量與字符常量有所不同。字符型常量在內(nèi)存中只占一個(gè)字節(jié);字符串是按照串中字符的排列順序存放的,每一個(gè)字符占一個(gè)字節(jié),并在末尾添加“0”作為字符串結(jié)尾標(biāo)志或結(jié)束標(biāo)志。3在C語言中如何表示不同進(jìn)制的整數(shù)?答: 十進(jìn)制整型常量:由正、負(fù)號(hào)和數(shù)字09組成,但數(shù)字部分不能以0開頭,如12、7、0等。 八進(jìn)制整型常量:由正、負(fù)號(hào)和數(shù)字07組成,數(shù)字部分以0開頭,如0408、07761等。 十六進(jìn)制整型常量:由正、負(fù)號(hào),數(shù)字09和字母AF(或af)組成,數(shù)字部分以0X或0x開頭,AF(或af)分別表示數(shù)值1015,如0XFFFF、0x2D等。4下列標(biāo)識(shí)符中哪些是合法的?并指出系統(tǒng)自定義的標(biāo)識(shí)符p 2a a# t3 _hit int答:合法標(biāo)識(shí)符:t3 _hit int(為系統(tǒng)自定義標(biāo)識(shí)符)5寫出下面程序的輸出結(jié)果#include void main()int i,j,m,n;i=5;j=10;m=+i;n=j+;printf(i = %d, j = %d, m = %d, n = %dn,i,j,m,n);結(jié)果為i=6,j=11,m=6,n=10項(xiàng)目實(shí)訓(xùn)#include stdio.hvoid main() int num,i; char name10 ;/字符串用數(shù)組方式存儲(chǔ),下同 int age; int base_salary; float ratio,salary,yj,sum_age,sum_salary; sum_age=sum_salary=0; printf(*n); printf(輸入與輸出職工工資信息n); printf(*n); for(i=0;i3;i+) /輸入并存儲(chǔ)職工工資信息 printf(nn);printf(請(qǐng)輸入員工編號(hào):n);scanf(%d, &num);printf(請(qǐng)輸入姓名:n);scanf(%s, &name);printf(請(qǐng)輸入年齡:n);scanf(%d, &age);fflush(stdin);/清空緩存printf(請(qǐng)輸入基本工資:n);scanf(%d, &base_salary);printf(請(qǐng)輸入級(jí)別系數(shù):n);scanf(%f, &ratio);printf(請(qǐng)輸入銷售額:n);scanf(%f, &yj);/計(jì)算每個(gè)人工資總額 salary=base_salary+yj*0.01*ratio; /輸出職工工資信息printf(nn下面輸出職工工資信息n);printf(員工編號(hào):%dn,num);printf(姓名:%sn,name);printf(年齡:%dn,age);printf(工資總額為:%fn,salary); sum_age=age+sum_age; sum_salary=salary+sum_salary; printf(nn); printf(平均年齡為:%fn,sum_age/3); printf(平均工資為:%fn,sum_salary/3); 項(xiàng)目三項(xiàng)目考核一、選擇題1-2 A A二、簡答題1. 將任務(wù)一【例3-2】的算法用流程圖表示出來。2. 計(jì)算的值,設(shè)計(jì)算法并嘗試寫出程序進(jìn)行調(diào)試。自然語言描述如下: S1: sigh=1 S2: sum=1 S3: deno=2 S4: sigh=(-1)sigh S5: term= sigh(1/deno ) S6: sum=sum+term S7: deno= deno +1S8:若 deno100,返回 S4;否則,結(jié)束。流程圖描述如下:輸出sum的值開始deno100?sigh=(-1)sighterm= sigh(1/deno )sum=sum+termdeno= deno +1初始化變量sigh=1,sum=1,deno=2結(jié)束參考程序代碼如下:#include stdio.hvoid main() int sigh,deno; long double sum,term; sigh = 1; deno = 2; term=sum=0; for(;deno=100;deno+) sigh=(-1)*sigh; term= sigh*(1/deno); sum=sum+term; printf(表達(dá)式的值為:%.20lf,sum);NY項(xiàng)目實(shí)訓(xùn)#include int main() int sushu(int x); int n; printf(請(qǐng)輸入一個(gè)大于1的整數(shù):n); scanf(%d,&n); sushu(n); return 0; int sushu(int x) int i; for(i=2;ix;i+) if(x%i=0)break; if(i=x) printf(是素?cái)?shù)n); else printf(不是素?cái)?shù)n);return 0;程序運(yùn)行結(jié)果項(xiàng)目四項(xiàng)目考核一、選擇題1-5 DBCCC二、簡答題1簡述邏輯運(yùn)算符與條件運(yùn)算符的使用方法。邏輯運(yùn)算符的使用方法表4-2 邏輯運(yùn)算符及其用法邏輯運(yùn)算符名稱說明示例結(jié)果!邏輯非一元運(yùn)算符,真變假,假變真! 6 40|邏輯或兩操作數(shù)同假結(jié)果為假,否則為真。但當(dāng)左操作數(shù)為真,其結(jié)果則為真,不再計(jì)算右操作數(shù)的值ef = ef | ac = bd1條件運(yùn)算符的使用方法條件運(yùn)算符“?:”也稱三元運(yùn)算符,它根據(jù)布爾型表達(dá)式的值返回兩個(gè)值中的一個(gè),其格式如下:條件 ? 第一個(gè)表達(dá)式 : 第二個(gè)表達(dá)式;如果條件為 true,則計(jì)算第一表達(dá)式并以它的計(jì)算結(jié)果為整個(gè)條件表達(dá)式的值;如果為 false,則計(jì)算第二表達(dá)式并以它的計(jì)算結(jié)果為整個(gè)條件表達(dá)式的值。2簡述C語言中switch語句的特點(diǎn)。 switch語句中的表達(dá)式通常為整型或字符型,配套的常量類型也應(yīng)該是字符型或整型。此外,如果常量類型是字符型,一定要用單引號(hào)括起來(如A),而不能使用雙引號(hào)(A)。 每個(gè)case后面的常量表達(dá)式必須各不相同,否則會(huì)出現(xiàn)矛盾,即一個(gè)值有多種選擇。 各個(gè)case語句和default語句出現(xiàn)的順序?qū)?zhí)行結(jié)果沒有影響。 每個(gè)分支的語句可以是單條語句,也可以是多條語句,多條語句不用加花括號(hào)。 通常情況下,每個(gè)分支語句后都要加一個(gè)break語句,表示跳出switch語句。程序在執(zhí)行完該分支的語句后,如果有break語句,則結(jié)束switch語句,否則,繼續(xù)執(zhí)行下面的語句,直到遇到break語句或整個(gè)switch語句結(jié)束。項(xiàng)目實(shí)訓(xùn)實(shí)訓(xùn)一#include void main() float weight, price; printf(請(qǐng)輸入您行李的重量!); scanf(%f,&weight); if (weight0) printf(您輸入的數(shù)據(jù)有誤!); else if (weight=20) printf(您可以免費(fèi)托運(yùn)行李!); else if (weight=30) price = (weight-20) * 30; printf(您的托運(yùn)費(fèi)用為%f元!,price); else if (weight=40) price = (30 - 20) *30+(weight-30)*40; printf(您的托運(yùn)費(fèi)用為%f元!, price); else if (weight = 50) price = (30 - 20) * 30 + (40 - 30) * 40+(weight-40)*50; printf(您的托運(yùn)費(fèi)用為%f元!,price ); else printf(您托運(yùn)的行李超出了最高上限,不允許托運(yùn)!); 實(shí)訓(xùn)二#include void main() float sales, bonus; printf(請(qǐng)輸入您的銷售額!); scanf(%f,&sales); bonus = sales = 15000 ? sales * 0.1 :sales = 10000 ? sales * 0.08 :sales = 8000 ? sales * 0.05 :sales = 5000 ? sales * 0.03 : 0; if (sales 0) printf(您輸入的金額有誤!, 獎(jiǎng)金); else printf(您獲得的獎(jiǎng)金為:%f元!,bonus );項(xiàng)目五項(xiàng)目考核一、選擇題1-5 ABBAA二、簡答題1簡述for語句的使用方法。for語句中變量初始化部分只在開始時(shí)執(zhí)行一次,然后判斷條件表達(dá)式,若為true,則執(zhí)行代碼塊循環(huán)體,然后執(zhí)行控制變量更新表達(dá)式,再回頭來判斷條件表達(dá)式是否成立,以決定下一次循環(huán);若條件表達(dá)式為false,則結(jié)束整個(gè)循環(huán)。2簡述break語句和continue語句的區(qū)別。break語句用于終止當(dāng)前循環(huán)的執(zhí)行,直接執(zhí)行當(dāng)前循環(huán)語句的下一語句。當(dāng)循環(huán)有多層時(shí),break語句只能跳出本層循環(huán),外層循環(huán)仍會(huì)繼續(xù)。continue語句只能用于循環(huán)語句內(nèi)部,用于結(jié)束本次循環(huán),即跳過本次循環(huán)體中余下的尚未執(zhí)行的語句,再一次進(jìn)行循環(huán)條件判斷,以便執(zhí)行下一次循環(huán)。項(xiàng)目實(shí)訓(xùn)實(shí)訓(xùn)一#include void main() char c; int n=0; printf(請(qǐng)輸入一行字符:); do scanf(%c,&c); if(c=A&c=a & c=z) n+; while(c!=n); printf(該行英文字母的個(gè)數(shù)為:%dn,n); 實(shí)訓(xùn)二#include void main() int x = 1; while (x+ = 100) if (x % 3 = 0) printf(%d ,x); scanf(%d);項(xiàng)目六項(xiàng)目考核一、選擇題1-10 CCACC BCBDD二、簡答題1簡述函數(shù)進(jìn)行嵌套調(diào)用時(shí)函數(shù)的執(zhí)行順序。當(dāng)函數(shù)進(jìn)行嵌套調(diào)用時(shí),程序首先從主函數(shù)開始執(zhí)行,到達(dá)調(diào)用函數(shù)語句時(shí)流程轉(zhuǎn)到第一個(gè)被調(diào)用函數(shù);第一個(gè)被調(diào)用函數(shù)執(zhí)行到調(diào)用函數(shù)的語句時(shí)轉(zhuǎn)入第二個(gè)被調(diào)用函數(shù),依此類推,直到最后一個(gè)被調(diào)用函數(shù);最后一個(gè)被調(diào)用函數(shù)執(zhí)行到return語句時(shí),返回調(diào)用該函數(shù)的函數(shù)中,執(zhí)行調(diào)用函數(shù)語句下面的語句,依此類推,直到最后返回到主函數(shù)中。2簡述不同變量的作用域。 局部變量局部變量只在該函數(shù)范圍內(nèi)有效。也就是說,只有在該函數(shù)內(nèi)才能使用這些變量。 全局變量在函數(shù)外部定義的變量稱為全局變量,其作用范圍是從定義變量的位置開始到本源文件結(jié)束。項(xiàng)目實(shí)訓(xùn)實(shí)訓(xùn)#include int CommonFactors(int a, int b);main()int sub,x,y;printf(請(qǐng)輸入用于計(jì)算公約數(shù)的兩個(gè)整數(shù)值(中間通過空格分隔):n);scanf(%d %d,&x,&y);while(sub=CommonFactors(x, y) 0)static int counter=1;printf(Common factor %d is %dn, counter+, sub);/* 函數(shù)功能: 指明計(jì)算哪兩個(gè)數(shù)的公約數(shù) 函數(shù)入口參數(shù): 兩個(gè)整型數(shù) 函數(shù)返回值: 公約數(shù)*/int CommonFactors(int a, int b)static int num1=-1;static int num2=-1;static int curFactor;if (a 0 | b b ? b : a;/* curFactor置為兩個(gè)數(shù)中較小的那個(gè) */while(curFactor0)if ( a%curFactor = 0 & b%curFactor = 0 )return curFactor-;/* 如果不減1,則下次還會(huì)測(cè)試這個(gè)數(shù) */curFactor-;return -1;項(xiàng)目七項(xiàng)目考核一、選擇題1-10 DDCCD BACAD二、簡答題1簡述二維數(shù)組的存儲(chǔ)形式。盡管二維數(shù)組由若干行、列構(gòu)成,而實(shí)質(zhì)上,二維數(shù)組最終也是在硬件存儲(chǔ)器的一維線性空間上實(shí)現(xiàn)的。在語言中,二維數(shù)組是按行排列的,如圖7-6所示。圖7-6 數(shù)組a在內(nèi)存中的組織形式2簡述使用數(shù)組元素和數(shù)組名作為函數(shù)參數(shù)時(shí)的區(qū)別。用數(shù)組元素作實(shí)參時(shí),只要數(shù)組類型和函數(shù)的形參變量的類型一致即可,并不要求函數(shù)的形參也必須是下標(biāo)變量,即對(duì)數(shù)組元素的處理是按普通變量對(duì)待的。用數(shù)組名作函數(shù)參數(shù)時(shí),則要求形參和相對(duì)應(yīng)的實(shí)參必須是類型相同的數(shù)組,都必須有明確的數(shù)組說明。當(dāng)形參和實(shí)參二者不一致時(shí),就會(huì)發(fā)生錯(cuò)誤。項(xiàng)目實(shí)訓(xùn)實(shí)訓(xùn)源碼#include #include string.h char names10; int score107; int max10,min10; double average10; int no10=0,1,2,3,4,5,6,7,8,9; void main() char names1010; /*定義二維字符數(shù)組存放選手名字*/ int i; for(i=0;i10;i+) printf(please input the name of the No. %d singern,i+1); /*提示用戶輸入編號(hào)為i+1的選手的名字*/ gets(namesi); /*將用戶輸入的字符串作為該選手的名字*/ int score107,j; for(i=0;i10;i+) printf(nplease input the score of the No. %d singern,i+1); /*提示用戶輸入編號(hào)為i+1的選手的成績*/ for(j=0;j7;j+) scanf(%d,&scoreij); for(i=0;i10;i+) maxi=scorei0; for(j=1;jmaxi) maxi = scoreij; printf(the highest score of the No.%d singer is:%dn, i+1, maxi);for(i=0;i10;i+) mini=scorei0; for(j=1;j7;j+) if(scoreijmini) mini = scoreij; printf(the lowest score of the No.%d singer is:%dn, i+1, mini);int sum,temp; /*清零*/for(i=0;i10;i+) sum=0; for(j=0;j7;j+) sum+=scoreij; /*累加*/ sum=sum-maxi-mini; /*去掉最高和最低分*/ averagei = (double)sum/5; /*計(jì)算平均分*/ printf(the average score of the No.%d singer is:%lfnn, i+1, averagei);for(i=1;i=6;i+) for(j=0;j7-i;j+) /*比較的averagenoj,而不是noj本身*/ if(averagenojaveragenoj+1) temp=noj; noj=noj+1; noj+1=temp; /*交換排名位置*/ for(i=0;i10;i+) printf(%d : %s(number:%d) get %lfn,i,namesnoi,noi+1,averagenoi);項(xiàng)目八項(xiàng)目考核一、選擇題1-5 DDABA二、簡答題以下程序的執(zhí)行結(jié)果:(1)(2)(3)項(xiàng)目實(shí)訓(xùn)實(shí)訓(xùn)一#include #include main()char str80, *pStart, *pEnd;int len;printf(Input string: );gets(str);len = strlen(str);pStart = str;pEnd = str + len - 1;while (*pStart = *pEnd) & (pStart pEnd)pStart+;pEnd-;if (pStart pEnd)printf(No!n);elseprintf(Yes!n);實(shí)訓(xùn)二#include main ()char *ballColor=RED,YELLOW,BLUE,WHITE,BLACK;int i,j,k,m=0;for(i=0;i5;i+)for(j=i+1;j5;j+)for(k=j+1;k5;k+)m+;printf(%d: %s , %s , %sn,m,ballColori,ballColorj,ballColork);項(xiàng)目九項(xiàng)目考核一、選擇題1-4 BCDD二、簡答題1簡述共用體與結(jié)構(gòu)體數(shù)據(jù)類型的不同。共用體與結(jié)構(gòu)體的定義形式相似,但它們的含義不同。結(jié)構(gòu)體變量所占內(nèi)存長度是各成員所占內(nèi)存長度之和,每個(gè)成員分別占有自己的內(nèi)存單元;而共用體變量所占的內(nèi)存長度等于最長的成員的長度。2簡述單鏈表的插入與刪除結(jié)點(diǎn)的步驟。插入結(jié)點(diǎn)在單鏈表中,插入結(jié)點(diǎn)同樣有三種情況,如圖9-8所示。即插入到鏈表的中間、插入到鏈表頭結(jié)點(diǎn)前、接到鏈表的尾結(jié)點(diǎn)后。圖9-8 鏈表結(jié)點(diǎn)的插入 插入到中間結(jié)點(diǎn)p3和p2之間時(shí),只要將其前一個(gè)結(jié)點(diǎn)p3的指針指向要插入的接點(diǎn)p1,然后將p1的指針指向p2,就完成了結(jié)點(diǎn)p1的插入; 若要插入到第一個(gè)結(jié)點(diǎn)之前,只要將head直接指向新結(jié)點(diǎn)p1,然后將p1的指針指向老的首結(jié)點(diǎn)即可; 若要插入到最后一個(gè)結(jié)點(diǎn)之后,則只要將最后的p2的指針直接指向新結(jié)點(diǎn)即可。下面我們通過一個(gè)例子來學(xué)習(xí)鏈表的插入,假定鏈表中的各結(jié)點(diǎn)已經(jīng)按照學(xué)號(hào)由小到大順序排列,現(xiàn)要插入一個(gè)新結(jié)點(diǎn),要求按學(xué)號(hào)的順序插入。插入的結(jié)點(diǎn)要依次與表中結(jié)點(diǎn)相比較,找到合適的插入位置。刪除結(jié)點(diǎn)如圖9-9所示,從鏈表中刪除一個(gè)結(jié)點(diǎn)有三種情況,即刪除鏈表的中間結(jié)點(diǎn)、刪除鏈表頭結(jié)點(diǎn)、刪除鏈表的尾結(jié)點(diǎn)。圖9-9 鏈表結(jié)點(diǎn)的刪除 刪除中間結(jié)點(diǎn)s時(shí),只要將其前一個(gè)結(jié)點(diǎn)p的指針指向s的下一個(gè)接點(diǎn),即完成了將結(jié)點(diǎn)s從鏈表中分離的目的,再將其內(nèi)存釋放,就完成了結(jié)點(diǎn)s的刪除; 若要?jiǎng)h除的是第一個(gè)結(jié)點(diǎn),只要將head直接指向第二個(gè)結(jié)點(diǎn),然后將第一個(gè)結(jié)點(diǎn)的內(nèi)存釋放即可; 若要?jiǎng)h除的是最后一個(gè)結(jié)點(diǎn),則只要將p的指針直接指向NULL,然后釋放s的內(nèi)存即可。項(xiàng)目實(shí)訓(xùn)實(shí)訓(xùn)#include #include struct stackint data;struct stack *next;typedef struct stack STACK;STACK *head,*pr;int nodeNumber = 0;/* 堆棧節(jié)點(diǎn)數(shù)寄存器 */* 函數(shù)功能:生成一個(gè)新的節(jié)點(diǎn),并為該節(jié)點(diǎn)賦初值函數(shù)參數(shù):整型變量unm,是要給新節(jié)點(diǎn)賦的初值函數(shù)返回值:指向新的節(jié)點(diǎn)的指針*/STACK *CreateNode(int num)STACK *p;p = (STACK *)malloc(sizeof(STACK);/* 動(dòng)態(tài)申請(qǐng)一段內(nèi)存 */if(p = NULL) /* 如果返回空指針,申請(qǐng)失敗,打印錯(cuò)誤信息并退出程序 */printf(No enough memory to alloc);exit(0);/*結(jié)束程序運(yùn)行*/p-next = NULL;/* 為新建的節(jié)點(diǎn)指針域賦空指針 */p-data = num; /* 為新建的節(jié)點(diǎn)數(shù)據(jù)區(qū)賦值 */return p;/*函數(shù)功能:壓棧函數(shù) 函數(shù)參數(shù):整型變量num,表示要保存到棧里的數(shù)據(jù)函數(shù)返回值:指向鏈表新節(jié)點(diǎn)的指針*/STACK *PushStack(int num)if(nodeNumber=0) /* 如果是第一個(gè)節(jié)點(diǎn),保留該節(jié)點(diǎn)首地址在head中*/head = CreateNode(num);pr = head;nodeNumber+;/* 堆棧節(jié)點(diǎn)數(shù)寄存器+1 */else /* 不是第一個(gè)節(jié)點(diǎn),將新建節(jié)點(diǎn)連到鏈表的結(jié)尾處*/pr-next = CreateNode(num);pr = pr-next;nodeNumber+;/* 堆棧節(jié)點(diǎn)數(shù)寄存器+1 */return pr;/*函數(shù)功能:彈出堆棧 函數(shù)參數(shù):無函數(shù)返回值:當(dāng)前堆棧中存儲(chǔ)的數(shù)據(jù)*/int PopStack(void)STACK *p;int result;p = head;for(;)if(p-next = NULL) /* 查找最后一個(gè)節(jié)點(diǎn) */break;elsepr = p;/* 記錄最后一個(gè)節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)的地址*/p = p-next;nodeNumber-;/*堆棧節(jié)點(diǎn)數(shù)寄存器-1 */if(nodeNumber = 0) return -1;/* 如果是最后一個(gè)節(jié)點(diǎn),返回錯(cuò)誤代碼*/pr-next = NULL;/*將最后一個(gè)節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)的地址的指針域賦空指針*/result = p-data;free(p);/*釋放內(nèi)存*/return result;main ()int pushNum10=111,222,333,444,555,666,777,888,999,10000;int popNum10;int

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論