第十一周编程总结
| 這個作業(yè)屬于哪個課程 | C語言程序設(shè)計II | |
| 這個作業(yè)要求在哪 | https://edu.cnblogs.com/campus/zswxy/MS/homework/3206 | |
| 我在這個課程的目標(biāo)是 | 能夠使用遞歸函數(shù)進(jìn)行編程;掌握宏的基本用法;掌握編譯預(yù)處理的概念 | |
| 這個作業(yè)在哪個具體方面幫助我實現(xiàn)目標(biāo) | 通過PTA作業(yè)實踐編程學(xué)習(xí) | |
| 參考文獻(xiàn) | C語言程序設(shè)計 |
選擇題
編程題
7-1 漢諾塔問題* (10 分)
漢諾塔是一個源于印度古老傳說的益智玩具。據(jù)說大梵天創(chuàng)造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤,大梵天命令僧侶把圓盤移到另一根柱子上,并且規(guī)定:在小圓盤上不能放大圓盤,每次只能移動一個圓盤。當(dāng)所有圓盤都移到另一根柱子上時,世界就會毀滅。
請編寫程序,輸入漢諾塔圓片的數(shù)量,輸出移動漢諾塔的步驟。
輸入格式
圓盤數(shù) 起始柱 目的柱 過度柱
輸出格式
移動漢諾塔的步驟
每行顯示一步操作,具體格式為:
盤片號: 起始柱 -> 目的柱
其中盤片號從 1 開始由小到大順序編號。
輸入樣例
3
a c b
輸出樣例
1: a -> c
2: a -> b
1: c -> b
3: a -> c
1: b -> a
2: b -> c
1: a -> c
1.代碼
2.設(shè)計思路
3.本題遇到的問題及解決辦法
問題:模仿書上245頁的漢諾塔代碼,但代碼運行時出現(xiàn)答案錯誤
解決辦法:重新檢查代碼,發(fā)現(xiàn)自己給定義的變量多加了‘ ’符號,改正后答案正確
4.運行結(jié)果
預(yù)習(xí)題
請大家查閱資料,思考如下問題:
請舉實例解釋以下幾個概念:數(shù)組指針,指針數(shù)組,指針函數(shù),函數(shù)指針,二級指針,單向鏈表。(無實例不給分)
請用自己的理解回答。如果有引用他人的文字,請一定要標(biāo)出出處(使用Markdown的鏈接方式)。
1.數(shù)組指針
首先“數(shù)組指針”本質(zhì)是指針,是指向一維數(shù)組的指針,定義方法,如:int (p)[n];()的優(yōu)先級更高,表示一個名為p的指針,指向一個整型的、長度為n的數(shù)組。如果要把一個二維數(shù)組賦給這樣的指針,可以這樣,如:int b[2][4]; int (p)[4]; (因為要將二維數(shù)組b賦給p,而二維數(shù)組b的有2行,每一行的長度是4,所以數(shù)組指針p的長度定為4)定義完之后賦值方法為 p=b; (將數(shù)組b的首地址b[0]或者b[0][0]賦給p),此時p指向b[0][0],若執(zhí)行p++; 則p指向b[1][0]。
2.指針數(shù)組
指針數(shù)組的本質(zhì)是數(shù)組,這個數(shù)組的元素全都是指針。定義方式如:int p[n]; p是數(shù)組名,int是數(shù)組的類型,n是數(shù)組長度,則p[0]、p[1]、p[2]等都表示這個數(shù)組的一個指針,p++; 表示p數(shù)組指向下一個數(shù)組元素。如果a是個一維數(shù)組,要將a首地址賦給p,則p=a是錯誤的方式,可以寫成p=a; 此時p表示指針數(shù)組第一個元素的值,a的首地址的值。如果要把二維數(shù)組賦給一個指針數(shù)組,則在定義之后如int c[3][5]; int p[3]; for(i=0;i<3;i++) p[i]=c[i]; 二維指針數(shù)組的各個元素的表示方法:((p+i))和**(p+i)表示第‘i+1’行的第一個元素,(p[i]+j)、((p+i)+j)、((p+i))[j]和p[i][j]都表示第i行的第j個元素。
3.指針函數(shù)
指針函數(shù)本質(zhì)是函數(shù),它的返回值是個指針。它的聲明形式:類型名 函數(shù)名(參數(shù)表),如,int fact(cahr c,char op);會返回一個類型為int的指針(地址值),而在主函數(shù)中用來接收該返回值的也必須是相同類型的指針變量。
4.函數(shù)指針
指向函數(shù)的指針包含了函數(shù)的地址,可以通過它來調(diào)用函數(shù)。聲明格式如下:
類型說明符 (*函數(shù)名)(參數(shù))
其實這里不能稱為函數(shù)名,應(yīng)該叫做指針的變量名。這個特殊的指針指向一個返回整型值的函數(shù)。指針的聲明筆削和它指向函數(shù)的聲明保持一致。
指針名和指針運算符外面的括號改變了默認(rèn)的運算符優(yōu)先級。如果沒有圓括號,就變成了一個返回整型指針的函數(shù)的原型聲明。
5.二級指針:指向指針的指針
int c=2,d=3; int *pc=&c;
pc是指針變量的存儲內(nèi)容,也就是c的地址
*pc就是對指針的解引用,取出這個c這個地址里面的值
6.單向鏈表:單向鏈表是鏈表的一種,其特點是鏈表的鏈接方向是單向的,對鏈表的訪問要通過順序讀取從頭部開始。鏈表是使用指針進(jìn)行構(gòu)造的列表,并且是由一個個結(jié)點組裝起來的,因此又稱為結(jié)點列表。其中每個結(jié)點都有指針成員變量指向列表中的下一個結(jié)點,head指針指向第一個結(jié)點稱為表頭,而終止于最后一個指向nuLL的指針。
學(xué)習(xí)感悟
本周學(xué)習(xí)了遞歸函數(shù)并用其進(jìn)行編程;學(xué)習(xí)了宏的基本用法;理解編譯預(yù)處理的概念。以前總是見到使用宏的情況,但是沒去正式了解,這次真正知道了宏的概念,還有編譯預(yù)處理也經(jīng)常聽到但沒沒去查過,這周也知道了,真正感覺到對這門課的知識越學(xué)越深了,也越來越難了。
結(jié)對編程感想
本周作業(yè)太難了,和小伙伴只討論了前面的題目,后面的只能啞口無言,看不懂,只能借看大佬的瞎扯幾句話,我們還需要加把勁。
學(xué)習(xí)進(jìn)度條
轉(zhuǎn)載于:https://www.cnblogs.com/ZJ999999/p/10846933.html
總結(jié)
- 上一篇: Laravel中一些要记住 的写法
- 下一篇: 团队冲刺十