譚浩強的C程序設計第三版中介紹函式和陣列的問題

時間 2022-10-03 17:25:03

1樓:匿名使用者

一、高維陣列

有時,陣列的維數並不止一維,例如乙個記錄消費中心在第一季度裡各個月的收入資料就可以用二維陣列來表示。定義二維陣列的方法是在一維陣列定義的後面再加上乙個用方括號括起來的維數說明。例如:

float array[3][8];

實際上,這個陣列可以看成3個連續的一維陣列,每個一維陣列具有8個元素。該陣列在記憶體中的儲存格式為最左邊的維數相同的元素連續儲存,也即按行儲存的。首先儲存第一行8個元素,其次是第二行,最後是第三行。

main()

}它的輸出結果為:

1 2 3

4 5 6

7 8 9

可以看出,二維陣列元素是按行儲存的。

我們也可以對陣列進行賦值,而不是初始化。

main()

}當輸入1 2 3 4 5 6 7 8 9《回車》

輸出為:

1 4 7

2 5 8

3 6 9

陣列可以是二維、三維甚至是更高維數的,雖然c語言對維數的處理沒有上限,但是處理高維陣列是很頭疼的事。一般盡量避免處理四維和四維以上的陣列。下面看乙個三維陣列的例子:

main()

這個三維陣列可以看成2個二維陣列,每個二維陣列又可以看成3個一維陣列。可以在頭腦裡想象成兩個平行平面,每個平面內有3*4個點。所以共有24個元素。

二、字串陣列

上面講的都是存放數值的,有一類陣列,用來處理字串的,我們叫字串陣列。其實字串陣列也是二維陣列,只是它的特殊性,才單獨拿出來說的。

main()

先看它的輸入特性,前面在說輸入語句的時候說過,遇到字串輸入,可以不加'&',現在只要記住這個特性就可以,以後說指標的時候再講為什麼。但是這兒為什麼用s[i],可能很多人不太明白。我們定義的是二維陣列,而輸入的時候,卻使用一維陣列的形式。

這是因為字串在記憶體裡位址可以用它的名字表示,就好象這種形式:

main()

定義的是一維陣列,輸入語句用變數形式表示一樣。通過前面的'%s'形式可以看出,s[i]是乙個陣列,所以s就是二維陣列了。

這裡要注意一點,scanf()函式在輸入字串時候不能支援空格,看下面的例子:

main()

我們輸入:1111

2222 3333

4444

我們是想把1111賦值給s[0],2222 3333賦值給s[1],4444賦值給s[2]。可實際上編譯器是這樣做的,把1111賦值給s[0],把2222賦值給[1],把3333賦值給s[2]。

實際輸出:1111

2222

3333

在輸入字串的時候,如果使用scanf(),就把空格當作下乙個輸入了。那麼我們怎麼解決這個問題呢?畢竟很多情況下,一行字串肯定有空格出現的。

我們使用新的函式gets()。這個函式是專門接受字串輸入的,它跳過了空格的影響。把上面的輸入語言修改為gets(s[i])即可。

我們定義了char s[3][10],超過10個字元肯定不行,如果少於10個字元,電腦怎麼處理呢?電腦是在每個字串的後面自動補上'\0',作為字串的結束標誌。

我們經常在填寫一些可選擇的內容時經常發現,待選的字串都是按字母排列好的,我們怎麼用c語言實現這個功能?在c語言裡,字串的排序是按照字元的ascii碼來的,如果第乙個字元一樣,則比較第二個,依次類推。

main()

else if(s1[i]>s2[i])

else ;

}if(s1[i]=='\0' && s2[i]!='\0') printf(s1 else if(s2[i]=='\0' && s1[i]!='\0') printf(s1>s2\n);

else printf(s1==s2\n);

}上面的例子就是比較兩個字串大小的,先比較第乙個,如果相同,接著比較第二個,如果不相同,則分出大小。一直往後比較,直到其中某乙個到'\0',你也可以先用strlen()函式找出最小的長度。

exit()函式的作用是退出程式,具體它的用法可以看看相關資料。

其實c語言把我們經常需要的字串處理函式都做好了,我們只需要呼叫它即可。如strcmp()用來比較、strcpy()用來拷貝等等。看看它們的用法:

#include string.h

main()

可以看出,比較大小時,如果k<0,則s10,則s1>s2;如果k=0,則s1=s2。實際上這是乙個函式,具體什麼是函式,以及為什麼寫成那種形式,我們下節再說。這些函式都包含在string.

h標頭檔案中,所以在程式的開頭,都要寫上#include string.h。

字串處理有很多函式,你們可以看看相關的書,也可以看看turbo c的幫助。

2樓:匿名使用者

因為陣列 做函式引數的時候 會自動退化成 指標~

3樓:匿名使用者

在編譯器識別陣列時,它會把它自動當作指標來執行

譚浩強的《c程式設計》第三版的目錄是什麼?

4樓:匿名使用者

第一部分 《c程式設計》習題和參考解答

1 c語言概述

2 程式的靈魂——演算法

3 資料型別、運算子與表示式

4 最簡單的c程式設計

5 選擇結構程式設計

6 迴圈控制

7 陣列

8 函式

9 預處理命令

10 指標

11 結構體與共用體

12 位運算

13 檔案

第二部分 c語言上機指南

14 turbo c 2.0的上機操作

14.1 turbo c的安裝

14.2 進入turbo c

14.3 turbo c的工作視窗

14.4 編輯乙個新檔案

14.5 編輯乙個已存在的檔案

14.6 改變使用者工作目錄

14.7 確立turbo c工作環境

14.8 編譯和連線

14.8.1 對單檔案程式的編譯連線

14.8.2 對多檔案程式進行編譯和連線

14.8.3 編譯和連線過程中的顯示資訊

14.8.4 停止編譯的方式

14.9 執行

15 turbo c++ 3.0的上機操作15.1 turbo c++系統的建立

15.2 c原始檔的建立

15.3 對多檔案程式進行編譯和連線

15.4 程式動態除錯方法

15.4.1 按步執行方法

15.4.2 設定斷點方法

……第三部分上機實驗安排

17 實驗指導

18 實驗安排

5樓:匿名使用者

c語言概述1.1c語言出現的歷史背景11.2c 語言的特點21.

3簡單的c語言程式介紹41.4執行c程式的步驟與方法71.4.

1執行c程式的步驟71.4.2上機執行c程式的方法8習題12程式的靈魂——演算法2.

1演算法的概念142.2簡單演算法舉例152.3演算法的特性192.4怎樣表示乙個演算法202.

4.1用自然語言表示演算法202.4.

2用流程圖表示演算法202.4.33種基本結構和改進的流程圖242.

4.4用n\|s流程圖表示演算法272.4.

5用偽**表示演算法302.4.6用計算機語言表示演算法332.

5結構化程式設計方法34習題36資料型別、運算子與表示式3.1c語言的資料型別373.2常量與變數373.

2.1常量和符號常量373.2.2變數383.3整型資料403.3.1整型常量的表示方法403.3.

2整型變數403.3.3整型常量的型別443.4浮點型資料453.4.1浮點型常量的表示方法453.4.2浮點型變數453.

4.3浮點型常量的型別473.5字元型資料483.5.1字元常量483.5.2字元變數493.5.3字元資料在記憶體中的儲存形式及其使用方法503.5.4字串常量523.6變數賦初值533.7各類數值型資料間的混合運算543.

8算術運算子和算術表示式553.8.1c語言運算子簡介553.8.2算術運算子和算術表示式553.9賦值運算子和賦值表示式593.10逗號運算子和逗號表示式65習題66最簡單的c程式設計——順序程式設計4.1c語句概述694.2賦值語句714.3資料輸入輸出的概念及在c語言中的實現724.4字元資料的輸入輸出734.

4.1 putchar函式734.4.

2 getchar函式744.5格式輸入與輸出744.5.1printf函式754.5.2scanf函式824.

6順序結構程式設計舉例86習題88選擇結構程式設計5.1關係運算子和關係表示式915.1.1關係運算子及其優先次序915.1.2關係表示式925.2邏輯運算子和邏輯表示式925.2.1邏輯運算子及其優先次序925.2.2邏輯表示式935.3if 語句955.3.1if語句的3種形式955.3.2if語句的巢狀995.3.3條件運算子1025.4switch語句1045.5程式舉例106習題111迴圈控制6.1概述1136.2goto語句以及用goto語句構成迴圈1136.

3用while語句實現迴圈1146.4用do…while語句實現迴圈1156.5用for 語句實現迴圈1186.

6迴圈的巢狀1216.7幾種迴圈的比較1226.8break語句和continue語句1226.

8.1break語句1226.8.

2continue語句1236.9程式舉例124習題129陣列7.1一維陣列的定義和引用1317.

1.1一維陣列的定義1317.1.

2一維陣列元素的引用1327.1.3一維陣列的初始化1327.

1.4一維陣列程式舉例1337.2二維陣列的定義和引用1357.

2.1 二維陣列的定義1357.2.

2二維陣列的引用1367.2.3二維陣列的初始化1377.

2.4二維陣列程式舉例1387.3字元陣列1407.

3.1字元陣列的定義1407.3.

2字元陣列的初始化1407.3.3字元陣列的引用1417.

3.4字串和字串結束標誌1427.3.

5字元陣列的輸入輸出1447.3.6字串處理函式1467.

3.7字元陣列應用舉例150習題152函式8.1概述1558.2函式定義的一般形式1568.2.

1無參函式定義的一般形式1568.2.2有參函式定義的一般形式1578.

2.3空函式1578.3函式引數和函式的值1588.3.1形式引數和實際引數1588.3.

2函式的返回值1608.4函式的呼叫1618.4.1函式呼叫的一般形式1618.4.2函式呼叫的方式1628.4.3對被呼叫函式的宣告和函式原型1638.5函式的巢狀呼叫1678.6函式的遞迴呼叫1718.7陣列作為函式引數1778.7.1陣列元素作函式實參1788.

7.2陣列名作函式引數1798.7.

3多維陣列名作函式引數1828.8區域性變數和全域性變數1848.8.1區域性變數1848.8.2全域性變數1858.9變數的儲存類別1888.9.1動態儲存方式與靜態儲存方式1888.9.2auto變數1898.

9.3用static宣告區域性變數1898.9.

4register變數1918.9.5用extern宣告外部變數1938.9.6用static宣告外部變數1958.

9.7關於變數的宣告和定義1968.9.8儲存類別小結1978.10內部函式和外部函式1998.

10.1內部函式1998.10.

2外部函式199習題202預處理命令9.1巨集定義2049.1.1不帶引數的巨集定義2049.1.2帶引數的巨集定義2079.2「檔案包含」處理2119.3條件編譯214習題217指標10.1位址和指標的概念21910.2變數的指標和指向變數的指標變數22110.2.1定義乙個指標變數22110.2.2指標變數的引用22210.2.3指標變數作為函式引數22510.3陣列與指標22910.3.1指向陣列元素的指標22910.3.2通過指標引用陣列元素23010.3.

3用陣列名作函式引數23510.3.4多維陣列與指標24210.4字串與指標25110.4.1字串的表示形式25110.4.2字元指標作函式引數25410.4.3對使用字元指標變數和字元陣列的討論25710.5指向函式的指標26010.5.1用函式指標變數呼叫函式26010.5.2用指向函式的指標作函式引數26210.6返回指標值的函式26510.7指標陣列和指向指標的指標26810.7.1指標陣列的概念26810.7.2指向指標的指標27110.7.3指標陣列作main函式的形參27310.8有關指標的資料型別和指標運算的小結27510.8.1有關指標的資料型別的小結27610.

8.2指標運算小結27610.8.

3void指標型別277習題278結構體與共用體11.1概述28111.2定義結構體型別變數的方法28211.

3結構體變數的引用28411.4結構體變數的初始化28511.5結構體陣列28611.5.1定義結構體陣列28611.

5.2結構體陣列的初始化28711.5.

3結構體陣列應用舉例28711.6指向結構體型別資料的指標28911.6.1指向結構體變數的指標28911.6.2指向結構體陣列的指標29011.6.3用結構體變數和指向結構體的指標作函式引數29211.7用指標處理鍊表29411.7.1鍊表概述29411.7.2簡單鍊表29511.

7.3處理動態鍊表所需的函式29611.7.

4建立動態鍊表29711.7.5輸出鍊表30011.7.6對鍊表的刪除操作30111.7.7對鍊表的插入操作30311.7.8對鍊表的綜合操作30511.8共用體30811.8.1共用體的概念30811.8.2共用體變數的引用方式30911.8.3共用體型別資料的特點31011.9列舉型別31211.10用typedef定義型別315習題318位運算12.1位運算子和位運算31912.

1.1「按位與」運算子(&)31912.1.

2「按位或」運算子(|)32012.1.3「異或」運算子(∧)32112.

1.4「取反」運算子(~)32212.1.

5左移運算子(<<)32312.1.6右移運算子(>>)32312.

1.7位運算賦值運算子32412.1.

8不同長度的資料進行位運算32412.2位運算舉例32412.3位段326習題329檔案13.1c檔案概述33013.2檔案型別指標33113.3檔案的開啟與關閉33213.3.1檔案的開啟(fopen函式)33213.3.2檔案的關閉(fclose函式)33413.4檔案的讀寫33413.4.1fputc函式和fgetc函式(putc函式和getc函式)33513.4.2fread函式和fwrite函式33913.4.3fprintf函式和fscanf函式34213.4.4其他讀寫函式34313.5檔案的定位34413.5.1rewind函式34413.5.2fseek函式和隨機讀寫34513.5.3ftell函式34613.6出錯的檢測34613.6.1ferror函式34713.6.2clearerr函式34713.7檔案輸入輸出小結347

急需《C語言程式設計教程》第三版 譚浩強張基溫 編著,高等教育出版社出版,課後習題答案

喬伊 上 bbs,5hupo,com 琥珀課後資源網 這裡面有很全的大學課後資源 應該會有你想要的 祝你學業有成哈 c程式設計 第三版 譚浩強著 課後題答案!2009 06 04 19 57 53 標籤 教育 分類 學習 1.5請參照本章例題,編寫乙個c程式,輸出以下資訊 very good 解 m...

求高手解題 C程式設計(第三版)

呵呵,分類不對啊,不好有人來,有空幫你寫吧。求這幾題c語言程式設計題目的解析 14 while迴圈沒有加,所以只控制printf一條列印語句。第一次 n 為6 n使用時是5 n為4 第二次 n 為4 n使用時是3 n為2 第三次 n 為2 n使用時是1 n為0 從第一次迴圈中我們得到列印的結果每次 ...

c程式設計第三版第二章第5題答案

第二章2.3 1 10 10 12 8 a 16 2 32 10 40 8 20 16 3 75 10 113 8 4b 16 4 617 10 176627 8 fd97 16 5 111 10 177621 8 ff91 16 6 2483 10 4663 8 963 16 7 28654 10...