cc語言程序開發參考手冊
A. c語言程序設計 參考文獻
C語言程序設計實際上是一個非常艱難的事情,因為很多人在這方面做了許多的嘗試,當然了,作為一種新的一種格式,請要學會這種技術也是一個非常困難的事情,當然在很多時候,我們都會在這個事情要做很多的努力,畢竟這種程序設計一旦做好的話,確實有很大的前途,但是想要整體的了解確實是非常困難的事情,所以說想要了解很多。c語言程序設計方面的知識,那麼想要了解的文獻就非常的多了,建議你還是從最基礎的一些學科開始練習,因為這些基礎的參考文獻才是最有用的,比如說c語言入門。課程300級,這個就是非常有用的一個基礎類書籍,這部書籍其實你自己好好的去看一下,基本上有一些關鍵的一些技術就能夠掌握了,但是這種技術的掌握只是一個初步的階段。當你把這個他會之後,再看一些更深層次的創設經驗書籍,這些書籍就會給你說很多相關的專業的知識,當你看好上面的那個基礎書籍之後,那麼再看這些就非常的明顯了,當然了,在這些研究的時候,你還是要有更多的毅力,暑假給自己設定好一個目標,當你看完一個基礎書籍之後,再去尋找另一個。要知道這種語言程序設計是非常枯燥的,如果沒有一個明確的目標,就會陷入一個非常尷尬的設計之中。所以說在這樣的情況之下只要你自己考慮好才能夠讓自己的整個的事業和工作做得更好這種設立的時候,一定要讓自己有更多的目標,從而才能過上自己,在目標的達成上做到一定的發展,從而就會讓自己在整個的語言程序設計方面處取得更好的戰績,可多人在學習的時候,就是因為剛開始的基礎打的不牢銬,所以說後來在關鍵的技術方面卻反而是落下了很多,所以說上面給你推薦的兩部書記一定要重點去參考,這樣的情況下,你才會獲得成功,假設如果自己不去好好的努力,反而是喜歡好高騖遠的話,那麼在語言程序設計方面就很難取得突破了,因為這方面的基礎知識是非常必要的,也是非常重要的,如果你能堅持下來的話,就會獲得成功,如果你自己堅持不下來,而且沒有這樣的耐心那麼你最好提前放棄因為學習對於每一個人來說要根據自己的個性如果的個性不適合這種語言程序設計的話那麼就要離開畢竟這是一個非常枯燥的這種設立的時候,一定要讓自己有更多的目標,從而才能過上自己,在目標的達成上做到一定的發展,從而就會讓自己在整個的語言程序設計方面處取得更好的戰績,可多人在學習的時候,就是因為剛開始的基礎打的不牢銬,所以說後來在關鍵的技術方面卻反而是落下了很多,所以說上面給你推薦的兩部書記一定要重點去參考,這樣的情況下,你才會獲得成功,假設如果自己不去好好的努力,反而是喜歡好高騖遠的話,那麼在語言程序設計方面就很難取得突破了,因為這方面的基礎知識是非常必要的,也是非常重要的,如果你能堅持下來的話,就會獲得成功,如果你自己堅持不下來,而且沒有這樣的耐心,那麼你最好提前放棄,因為學習對於每一個人來說,要根據自己的個性,如果的個性不適合這種語言程序設計的話,那麼就要離開,畢竟這是一個非常枯燥的學問,想要在短期內獲得成功是完全不可能的,而是需要長時間,而且還需要更多的精力才能夠成功,所以說在這樣的情況下,你必須要在長期打仗的基礎上,還要不斷地去努力提高自己其他方面的知識,所以說是一個艱難的過程,你想要完全實現的話,那麼就需要自己做更多的努力了,所以在這方面自己一定要更加的去研究,從基礎上去了解,這樣才能夠慢慢的讓自己的這種語言是設計程序能力慢慢的吐錢出來,當然這需要一個很漫長的過程,需要你的堅持。
B. C語言程序開發的四個步驟是什麼
C語言程序開發的四個步驟是什麼
1 寫代碼。
2 編譯。
3 鏈接。
4 運行。
C語言設計的三個步驟:
一、分析問題
二、畫出問題的基本輪廓
三、實現該程序
計算機語言包括機器語言、匯編語言、高級語言。機器語言是用二進制代碼表示的計算機能直接識別和執行的一種機器指令的集合。它是計算機的設計者通過計算機的硬體結構賦予計算機的操作鉛隱功能,比如匯編語言(assembly language)。機器語言具有靈活、直接執行和速度快等特點。高級語言比較容易識記和理解,像C B語言等。
C程序開發的四個步驟依次是?
輸入與編輯源程序--對源程序進行編譯--與庫函數連接--運行可執行的目標程序。
開發一個c語言程序要經過哪四個步驟
提供《計算機考試題庫》的答案(填空):
開發—個C語言程序需要經過______、______、______和______四個基本過程。
答案:編輯 編譯 連接 運行
擴充解釋:
1. 編輯:編寫源程序代碼(.c、.h文件)
2. 編譯:將源代碼編譯為目標文件(.OBJ文件)
3. 鏈接:將目標文件生成可執行文件( .EXE文件)
4. 運行:執行 .EXE文件,得到運行結果。
1. 編寫C語言程序四個步驟是: --------- , -------- , -------- , -------- . ?
四個步驟?第一次聽有人這么說,如果寫很大代碼量的程序的話,那可得幾百行甚至幾千行的代碼,沒什麼具體步驟啊!如果說框架,那一般是
#include<stdio.h><>括弧內是你需要包含的頭文件,是具體悔虛情況而定。
void main()主函數開始,這是都有的,不過也有的是int型的。
{
}
不知道我的答案能不能幫到你!
C語言程序開發歷史
C語言的原型ALGOL 60語言。(也稱為A語言)1963年,劍橋大學將ALGOL 60語言發展成為CPL(Combined Programming Language)語言。1967年,劍橋大學的Matin Richards 對CPL語言進行了簡化,於是產生了BCPL語言。1970年,美國貝爾實驗室的Ken Thompson將BCPL進行了修改,並為它起了一個有趣的名字「B語言」。意思是將CPL語言煮干,提煉出它的精華。並且他用B語言寫了第一個UNIX操作系統。而在1973年,B語言也給人「煮」了一下,美國貝爾實驗室的D.M.RITCHIE在B語言的基礎上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。為了使UNIX操作系統推廣,1977年Dennis M.Ritchie 發表了不依賴於具體機器系統的C語言編譯文本《可移植的C語言編譯程序》。即是著名的ANSI C。1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著《C語言程序》(The C Programming Language),從而使C語言成為當時世界上流行最廣泛的高級程序設計語言。1988年,隨著微型計算機的日益普及, C語言出現了許多版本。由於沒有統一的標准,使得這些C語言之間出現了一些不一致的地方。為了改變這種情況,美國國家標准研究所(ANSI)為C語言制定了一套ANSI標准, 成為現行的C語言標准3.C語言的主要特點 。C語言發展迅速, 而且成為最受歡迎的語言之一, 主要因為它具有強大的功能。許多著名的系統軟體, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 語言編寫的。用C語言加上一些匯編語言子程序, 就更能顯示C語言的優勢了,象PC- DOS 、WORDSTAR等就是用這種方法編寫的。
簡述開發一個c語言程序的步驟是什麼樣的?
1 寫代碼。這是最基礎的一步,即實現C語言的源文件(.c,必需),和可能的頭文件(.h,非必需)。
2 編譯。將編寫好的代碼,通過編譯工具,轉換為目標文件。此步中,會對文件內部及包含的頭文件進行語法語義的分析槐前廳檢查。如果出錯,則必須返回到一步對代碼進行修改,直到沒有錯誤為止。
3 鏈接。將目標文件鏈接成可執行文件。此步會對文件直接的關聯進行檢查。如果出錯需要返回到1修改代碼。直到沒有錯誤。
4 運行。這個是最後一步,也是C語言的最終目的。
5 在運行結果與期望不符時,需要檢查原因,修改代碼,重新執行一二三直到程序沒有問題。
(1)語言簡潔、緊湊靈活。二十八個關鍵字、九種控制語句,程序形式自由,運算符豐富。三十四種運算符。
(2)數據類型豐富,具有現代語言的各種數據結構。
(3)C程序的主要結構是函數,是完全模塊化和結構化的語言。
(4)允許直接訪問物理地址,能進行位操作,能實現匯編語言的大部分功能,可直接對硬體進行操作。兼有高級和低級語言的特點。
(5)程序可移植性好(與匯編語言比)。基本上不做修改就能用於各種型號的計算機和各種操作系統。
(6)目標代碼質量高,程序執行效率高。只比匯編程序生成的目標代碼效率低10%-20%。
(7)語法限制不太嚴格,程序設計自由度大。
使用CB開發平台做一個c語言程序的步驟是什麼?
安裝CB平台
1、在界面上加一個按鈕控制
2、雙擊按鈕,在游標閃爍處寫入代碼,可以寫C代碼。
軟體是用C語言程序開發出來的。C語言用什麼開發呢?
C語言不是匯編語言開發的、C語言是在B語言基礎上發展而來的、可以網路
C. 初學者學習C語言,用什麼書好,想用點比較經典的書。
學習C語言不是一朝一夕的事情,但也不需要花費十年時間才能精通。如何讓編程初學者以最小的代價學習並精通C語言是本文的主題。請注意,即使是最小的代價」也絕不是什麼捷徑,而是以最短的時間取得最多的收獲,同時也意味著各位編程初學者需要經歷艱苦的過程。
一、要讀就讀好書,否則不如不讀
所有初學者面臨的第一個問題便是如何選擇教材。好的開始是成功的一半,選擇一本優秀的教材是事半功倍的關鍵因素。
1. 《C程序設計語言》
Kernighan和 RitchiTheCProgramLanguag的《C程序設計語言》堪稱經典中的經典,不過舊版的很多內容都已過時,和現在標准C語言相去甚遠,大家一定要看最新的版本,否則不如不看。
2. 《C語言參考手冊》
即使是最經典最權威的書,也沒有辦法面面俱到,所以手邊常備一本《C語言參考手冊》十分必要的C語言參考手冊》就是CReferManualC語言標準的詳細描述,包括絕大多數C標准庫函數的細節,算得上是最好的標准C語言的工具書。順便提一句,最新的C程序設計語言》根據C89標准修訂的而《C語言參考手冊》描述的C99標准,二者可能會有些出入,建議按照C99標准學習。
3. 《C和指針》
這本《C和指針》寫得也是相當地不錯,英文名是PointeronC特別地強調指針的重要性,算是本書的一個特點吧。不過這本書並不十分適合初學者,如果你曾經學過C語言,有那麼一些C語言的基礎但又不是很扎實,那麼你可以嘗試一下這本書。相信,只要你理解了指針,C語言便不再神秘。
4.如果你已經看完一本C語言教材,並想要繼續深入學習,那麼我有兩本書推薦給你
《C陷井與缺陷》
首先這本CTrapandPitfal的《C陷井與缺陷》,很薄的一本書,內容非常非常地有趣。不過注意的是,這本書是二十多年前寫的,裡面提到很多C語言的缺陷現在都已被改進,不過能夠了解一些歷史也不是什麼壞事。
《C專家編程》
還有就是可以嘗試挑戰一下ExpertCProgram的《C專家編程》,書如其名,這本書頗具難度,不過一旦你仔細讀完並能透徹理解,便可以放心大膽地在簡歷上寫「精通C語言」
切記一個原則,不要讀自己目前還看不懂的書,那是浪費生命。如果你看不懂,那你一定是缺失了某些必需基礎知識。此時,要仔細分析自己需要補充哪些內容,然後再去書店尋找講述的這些內容的書籍。把基礎知識補充完畢再回頭來學習,才會真正的事半功倍。
二、Unix/Linux還是Window這是個很大的問題
不同的編程環境會造就出不同思維的程序員。Window程序員大多依賴集成開發環境,比如VisualStudio而Unix程序員更加鍾愛Makefil與控制台。顯而易見,集成開發環境更容易上手,Window上學習C語言,只需要會按幾個基本的VisutC++工具欄按鈕就可以開始寫Hello,World!而在Unix下,需要一些控制台操作的基本知識。有人也許認為Unix環境更簡潔,但習慣的力量是很大的大家都很熟悉 Window基本操作,而為了學習C語言去專門裝一個Unix系統,似乎有點不劃算。
對於一個只懂得Window基本操作、連 DOS什麼都不知道的新手而言,盡快做一些有趣而有意義的事情才是最重要的用C語言寫一個小程序遠比學習lscat等命令有趣,況且我要專注於C語言本身,就不得不暫時忽略一些東西,比如編譯鏈接的過程、Makefil寫法等等等等。
所以我建議初學者應該以VisualC++6.0不是VisualC++.NET或者DevC++作為主要的學習環境,而且千萬不要在IDE使用技巧上過多糾纏,因為今後你一定要轉向Unix環境的VisualC++6.0使用很方便,調試也很直觀,但其默認的編譯器對C標準的支持並不好,而DevC++使用gcc編譯器,對C99標准都支持良好。使用順帶提一下,很多大學的C語言課程還在使用TurboC2.0作為實驗環境,這是相當不可取的原因其一是TC2.0對C標准幾乎沒有支持,其二是TC2.0編譯得到程序是16位的這對今後理解32位的程序會造成極大的困擾(當然,用djgpp之類的東西可以使TC2.0編譯出32位程序,不過那過於復雜了
等你學完一本C語言的教材,一定要轉向Unix平台繼續學習,幾乎所有的C語言高級教程都是基於Unix平台的比如《C專家編程》轉變的過程是痛苦的需要面對的各種紛繁復雜的命令,完全不同於Window平台的思考方式,但是這種痛苦是值得的Unix與C共生的Unix思考方式和習慣更加符合C語言的思考方式和習慣。Unix下,可以找到無數優秀的源代碼供你盡情閱讀,可以方便地查看某個庫函數的聯機手冊,還可以看到最優秀的代碼風格(說到代碼風格,會專門寫一篇文章詳細敘述)
歸結起來就是一句話:編程初學者初學C語言,建議使用Window系統和集成開發環境,准備向「高手」方向努力時,請先轉向Unix平台。
D. C語言學習手冊的目 錄
第1篇 基礎篇
第1章 初識C語言 16
1.1 C語言介紹 17
1.1.1 簡述編程語言 17
1.1.2 C語言的產生 18
1.1.3 C語言的特點 19
1.2 選擇C語言的理由 21
1.2.1 C語言的發展趨勢 21
1.2.2 C語言的成功案例 23
1.2.3 C語言的應用領域 25
1.3 如何學好C語言 25
1.3.1 確立學習態度 26
1.3.2 打好基礎 26
1.3.3 多請教、多交流 26
1.3.4 養成良好的編程習慣 27
1.3.5 多動手、勤思考 27
1.3.6 掌握學習方法 27
1.4 本章小結 28
第2章 C語言編程准備 29
2.1 編寫程序的格式 30
2.1.1 一個簡單的C程序 31
2.1.2 標識符與關鍵字 34
2.2 開發環境 37
2.2.1 Turbo C 2.0 38
2.2.2 Visual C++ 6.0 42
2.3 一個完整的C程序 48
2.4 實戰練習 52
2.4.1 編寫一個簡單的C程序 52
2.4.2 熟悉開發工具 53
2.5 本章小結 53
第3章 C語言的靈魂——演算法 54
3.1 演算法的基本概念 55
3.1.1 演算法的特徵 55
3.1.2 演算法的優劣 57
3.2 描述演算法 57
3.2.1 自然語言 58
3.2.2 描繪流程圖 58
3.2.3 繪制N-S流程圖 64
3.2.4 偽代碼 68
3.3 本章小結 69
第4章 常量和變數 70
4.1 了解數據類型 71
4.2 解讀常量 72
4.2.1 整型常量 72
4.2.2 實型常量 75
4.2.3 字元型常量 76
4.2.4 轉義字元 80
4.2.5 符號常量 81
4.2.6 情景應用一:用putchar函數輸出「I LOVE C」 82
4.2.7 情景應用二:printf函數結合轉義字元 83
4.3 變數 83
4.3.1 整型變數 84
4.3.2 情景應用:求出買水果一共花的錢數 86
4.3.3 實型變數 87
4.3.4 字元型變數 89
4.4 掌握混合運算 91
4.5 實戰練習 93
4.5.1 使用printf語句輸出變數 93
4.5.2 使用字元型變數輸出字元串 94
4.6 本章小結 94
第5章 表達式與運算符 95
5.1 解讀表達式 96
5.2 賦值運算符與賦值表達式 98
5.2.1 變數賦初值 98
5.2.2 自動類型轉換 100
5.2.3 強制類型轉換 100
5.3 掌握算術運算符與表達式 102
5.3.1 算術運算符 102
5.3.2 算術表達式 102
5.3.3 優先順序與結合性 104
5.3.4 自增自減運算符 105
5.3.5 情景應用:求運算後的4個變數的值 107
5.4 了解關系運算符與表達式 108
5.4.1 關系運算符 108
5.4.2 關系表達式 109
5.4.3 優先順序與結合性 110
5.5 解讀邏輯運算符與表達式 111
5.5.1 邏輯運算符 111
5.5.2 邏輯表達式 112
5.5.3 優先順序與結合性 112
5.6 運用位邏輯運算符與表達式 113
5.6.1 位邏輯運算符 114
5.6.2 位邏輯表達式 114
5.7 介紹逗號運算符與表達式 114
5.8 使用復合賦值運算符 116
5.9 判斷條件運算符 117
5.10 了解運算符的優先順序和結合性 118
5.11 實戰練習 119
5.11.1 使用復合賦值運算符求出計算結果 119
5.11.2 用自增、自減運算符求出計算結果 120
5.11.3 編寫簡單的計算加班工資程序 121
5.12 本章小結 122
第6章 輸入、輸出函數 123
6.1 解讀語句 124
6.1.1 表達式語句 124
6.1.2 空語句 124
6.1.3 復合語句 124
6.2 輸入、輸出字元數據 125
6.2.1 輸出字元數據 125
6.2.2 輸入字元數據 126
6.2.3 情景應用:使用getchar函數取消獲取Entet鍵 127
6.3 輸入、輸出字元串 128
6.3.1 使用字元串輸出函數 128
6.3.2 掌握字元串輸入函數 130
6.4 介紹格式輸出函數 131
6.5 講解格式輸入函數 134
6.6 應用順序程序設計 138
6.7 實戰練習 141
6.7.1 將輸入的小寫字元轉換為大寫字元 141
6.7.2 模擬工資計算器 142
6.7.3 輸入、輸出古人名言 142
6.8 本章小結 143
第7章 選擇結構程序設計 144
7.1 if選擇語句 145
7.2 if語句的不同形式 145
7.2.1 單條件單分支的if語句 146
7.2.2 單條件雙分支的if語句 149
7.2.3 多條件多分支的if語句 153
7.2.4 情景應用:輸入數值檢查字元類型 156
7.3 掌握if語句的嵌套形式 157
7.4 注意if語句的常見錯誤 160
7.4.1 使用分號的注意事項 161
7.4.2 條件放置注意事項 161
7.4.3 if和else的配對注意事項 162
7.4.4 大括弧的重要性 162
7.5 判斷分支選擇switch語句 163
7.5.1 switch語句的基本形式 163
7.5.2 多路開關模式的switch語句 167
7.6 區分if…else語句和switch語句 169
7.7 應用選擇結構程序 171
7.8 實戰練習 173
7.8.1 計算函數,求出Y值 173
7.8.2 輸出三個變數中最大的數 174
7.8.3 計算增加後的工資 175
7.9 本章小結 175
第8章 循環語句 176
8.1 編寫循環語句 177
8.2 實現while型循環 177
8.2.1 while循環語句的一般形式 178
8.2.2 情景應用:求出數值內的所有正整數的和 180
8.2.3 避免while循環語句的死循環 182
8.2.4 了解while循環語句的空循環體 183
8.2.5 注意while循環語句常見錯誤 183
8.3 解讀for型循環語句 185
8.3.1 for循環語句的一般形式 185
8.3.2 靈活多變的for循環語句 189
8.3.3 應用for語句中的逗號 192
8.4 介紹do-while語句 193
8.5 比較三種循環 195
8.6 運用循環嵌套 195
8.6.1 各種結構的循環嵌套 195
8.6.2 循環嵌套實例 197
8.7 轉移語句 199
8.7.1 goto語句 200
8.7.2 break語句 202
8.7.3 continue語句 203
8.8 區別三種跳轉語句 205
8.9 實踐練習 205
8.9.1 列印出大寫字母的ASCII碼對照表 205
8.9.2 列印出小寫字母的ASCII碼對照表 206
8.9.3 輸出0~100之間不能被3整除的數 207
8.10 本章小結 209
第2篇 核心篇
第9章 數組 212
9.1 介紹數組的概念 213
9.1.1 數組的分類 213
9.1.2 數組的維數 213
9.2 應用一維數組 214
9.2.1 一維數組的定義 214
9.2.2 一維數組的引用 215
9.2.3 一維數組的初始化 217
9.2.4 一維數組的應用 220
9.3 掌握二維數組 222
9.3.1 二維數組的定義 222
9.3.2 二維數組的引用 223
9.3.3 二維數組的初始化 223
9.3.4 二維數組的應用 227
9.4 解讀多維數組 228
9.5 使用字元數組 229
9.5.1 字元數組的定義 229
9.5.2 字元數組的引用 229
9.5.3 字元數組的初始化 229
9.5.4 字元數組的結束標志 231
9.5.5 字元數組的輸出 232
9.5.6 字元數組的輸入 233
9.5.7 輸出完整的帶有空格的字元串 234
9.5.8 字元數組的應用 235
9.6 字元串處理函數 236
9.6.1 字元串的復制 237
9.6.2 字元串的連接 238
9.6.3 字元串的比較 240
9.6.4 字元串大小寫轉換 241
9.6.5 獲得字元串長度 243
9.7 熟練應用數組 245
9.7.1 反轉輸出字元串 245
9.7.2 使用數組統計學生成績 246
9.7.3 情景應用:字元串的加密和解密 248
9.8 實踐練習 250
9.8.1 實現strcpy函數的功能 250
9.8.2 統計字元中各元素的個數 251
9.8.3 重新排列字元串 251
9.9 本章小結 252
第10章 函數 253
10.1 函數概述 254
10.2 定義函數 256
10.2.1 函數定義的形式 256
10.2.2 定義與聲明 259
10.3 了解返回語句 262
10.3.1 從函數返回 262
10.3.2 返回值 266
10.4 傳遞函數參數 269
10.4.1 形式參數與實際參數 269
10.4.2 數組作為函數參數 271
10.4.3 了解main的參數 276
10.5 調用函數 276
10.5.1 函數調用方式 277
10.5.2 嵌套調用 280
10.5.3 遞歸調用 282
10.6 靈活應用函數 285
10.6.1 函數的應用 285
10.6.2 情景應用:使用字元函數判斷輸入字元 290
10.7 實踐與練習 292
10.7.1 輸出較大的整數 292
10.7.2 求出10個學生的平均成績 292
10.7.3 驗證6174 293
10.8 本章小結 294
第11章 指針 296
11.1 了解指針相關概念 297
11.1.1 介紹地址與指針 297
11.1.2 解讀變數與指針 298
11.1.3 使用指針變數 299
11.1.4 指針自加自減運算 303
11.1.5 情景應用:輸出整型變數地址 304
11.2 掌握數組與指針 305
11.2.1 一維數組與指針 306
11.2.2 情景應用一:輸出數組元素 309
11.2.3 二維數組與指針 310
11.2.4 情景應用二:將一個3行5列的二維數組的
第二行元素輸出 313
11.2.5 字元串與指針 314
11.2.6 字元串數組 316
11.3 指向指針的指針 318
11.3.1 應用介紹指向指針的指針 318
11.3.2 情景應用:輸出偶數 320
11.4 作為函數參數的指針變數 321
11.5 返回指針值的函數 331
11.5.1 介紹返回指針值的函數 331
11.5.2 情景應用:求長方形的周長 332
11.6 指針數組作為main函數的參數 333
11.7 實戰練習 335
11.7.1 將數組中的元素值按照相反順序存放 335
11.7.2 將兩個字元串連接後輸出 336
11.7.3 使用指針實現字元串的復制 336
11.8 本章小結 337
第12章 結構體和共用體 338
12.1 應用結構體 339
12.1.1 結構體類型的概念 339
12.1.2 結構體變數的定義 340
12.1.3 結構體變數的引用 342
12.1.4 結構體類型的初始化 344
12.1.5 情景應用:輸出學生的信息 345
12.2 掌握結構體數組 348
12.2.1 定義結構體數組 348
12.2.2 初始化結構體數組 349
12.2.3 情景應用:輸出學生信息 351
12.3 解讀結構體指針 353
12.3.1 指向結構體變數的指針 353
12.3.2 指向結構體數組的指針 356
12.3.3 結構體作為函數參數 358
12.4 介紹包含結構的結構 360
12.5 應用共用體 362
12.5.1 共用體的概念 362
12.5.2 共用體變數的引用 363
12.5.3 共用體變數的初始化 364
12.5.4 共用體類型的數據特點 365
12.6 解讀枚舉類型 365
12.7 實戰練習 366
12.7.1 統計候選人的得票 366
12.7.2 師生信息存儲系統 367
12.7.3 計算學生的綜合成績 368
12.8 本章小結 368
第13章 鏈表與演算法 369
13.1 介紹鏈表 370
13.1.1 鏈表概述 370
13.1.2 創建動態鏈表 371
13.1.3 輸出鏈表 374
13.2 進行鏈表的相關操作 376
13.2.1 鏈表的插入操作 377
13.2.2 鏈表的刪除操作 380
13.3 運用數組排序演算法 384
13.3.1 選擇法排序 385
13.3.2 冒泡法排序 387
13.3.3 交換法排序 389
13.3.4 插入法排序 391
13.3.5 折半法排序 394
13.3.6 比較數組排序演算法 396
13.4 實戰練習 397
13.4.1 鏈表的刪除操作 397
13.4.2 使用選擇法排序 398
13.4.3 使用冒泡、交換、插入、折半等演算法進行排序 399
13.5 本章小節 399
第3篇 高級篇
第14章 位運算 402
14.1 解讀位與位元組 403
14.2 掌握位運算操作符 403
14.2.1 「與」運算符 404
14.2.2 「或」運算符 405
14.2.3 「取反」運算符 407
14.2.4 「異或」運算符 409
14.2.5 「左移」運算符 412
14.2.6 「右移」運算符 413
14.2.7 位運算復合賦值運算符 415
14.2.8 長度不同的數據進行位運算 415
14.3 循環移位 416
14.4 什麼是位域 418
14.4.1 位域的概念與定義 419
14.4.2 位域相關說明 420
14.5 實戰練習 421
14.5.1 求兩個數進行「與」和「或」運算後的結果 421
14.5.2 求出一個數「左移」和「右移」後的結果 422
14.5.3 求一個數「循環左移」和「循環右移」後的結果 422
14.6 本章小結 423
第15章 存儲管理 424
15.1 內存組織方式 425
15.1.1 了解內存組織方式 425
15.1.2 解讀堆與棧 425
15.2 動態管理 428
15.2.1 動態分配一段內存空間——malloc函數 428
15.2.2 動態分配連續內存空間數組——calloc函數 429
15.2.3 改變ptr指針指向空間大小——realloc函數 431
15.2.4 情景應用:使用realloc函數重新分配內存 432
15.2.5 釋放分配整型變數內存空間——free函數 432
15.3 內存丟失 433
15.4 變數的存儲類別 434
15.4.1 動態存儲與靜態存儲 435
15.4.2 修飾一個局部變數為自動的auto變數 435
15.4.3 聲明位置不同、意義不同的static變數 436
15.4.4 寄存器存儲類的register變數 437
15.4.5 外部存儲的extern變數 437
15.5 實戰練習 438
15.5.1 為數組動態分配內存 438
15.5.2 為數組動態分配並釋放內存 439
15.5.3 用靜態局部整型變數計算3的平方和立方 440
15.6 本章小結 440
第16章 函數類型和預處理 441
16.1 內部函數和外部函數 442
16.1.1 介紹內部函數 442
16.1.2 解讀外部函數 443
16.2 靈活使用宏定義 444
16.2.1 不帶參數的宏定義 445
16.2.2 帶參數的宏定義 446
16.3 編寫#include指令 448
16.4 掌握條件編譯 450
16.4.1 #if命令 450
16.4.2 #ifdef及#ifndef命令 453
16.4.3 #undef命令 455
16.4.4 #line命令 455
16.4.5 #pragma命令 456
16.5 實踐練習 457
16.5.1 求兩個數相乘的積 457
16.5.2 從3個數中找出最小數 457
16.5.3 從3個數中找出最大數 458
16.6 本章小結 459
第17章 讀寫文件 460
17.1 文件概述 461
17.2 掌握文件基本操作 462
17.3 運用文件指針 463
17.4 打開和關閉文件 464
17.4.1 文件的打開 464
17.4.2 文件的關閉 465
17.5 讀 寫 文 件 466
17.5.1 寫字元函數——fputc函數 466
17.5.2 讀字元函數——fgetc函數 468
17.5.3 寫字元串函數——fputs函數 469
17.5.4 讀字元串函數——fgets函數 470
17.5.5 格式化寫入函數——fprintf函數 472
17.5.6 格式化讀取函數——fscanf函數 474
17.5.7 數據塊讀寫函數——fread函數和fwrite函數 475
17.6 定位文件 478
17.6.1 隨機讀寫操作——fseek函數 479
17.6.2 返回位置指針——rewind函數 481
17.6.3 ftell函數 483
17.7 實踐練習 485
17.7.1 復制文件內容 485
17.7.2 保存學生信息 486
17.8 本章小結 487
第4篇 實戰篇
第18章 學生管理系統 490
18.1 分析需求 491
18.2 設計系統 491
18.3 功能模塊設計 492
18.3.1 功能選擇界面 492
18.3.2 錄入學生成績信息 494
18.3.3 查詢學生成績信息 496
18.3.4 刪除學生成績信息 497
18.3.5 修改學生成績信息 499
18.3.6 插入學生成績信息 501
18.3.7 統計學生人數 504
18.4 本章小結 505
附錄A 專業術語表 506
E. C語言函數參考手冊的前言
C語言作為當前程序開發中最流行的編程語言之一,以其簡單、高效、快捷、方便的特性吸引了大批用戶。根據筆者使用C語言的經驗,相信對C語言程序開發人員來說,C語言函數參考手冊是必需的。因此,筆者編寫了本書,希望能真正幫助C語言程序開發人員在編程時實現易查、易學、易用,並使其成為程序開發必備的工具書。
本書內容
本書按照C語言庫函數的頭文件進行分類,每個頭文件為一章內容,分別介紹了對應頭文件中常用的C語言函數。對每個頭文件中的函數按照字母進行排序,其中每個函數都按照功能、語法來介紹,在每個方法後都有相關的示例。
本書特點
* 即查、即學、即用
本書將查、學、用結合為一體,讀者能夠使用本書進行快速查詢和快速應用,既是實用的工具書,也是學習的參考書。
* 字母排序,快捷搜索
本書在講解C語言函數時按照頭文件進行分類,用戶在使用時可以根據頭文件快速地縮小查找范圍,並且每個頭文件以字母順序進行排序,以便讀者更快、更准確地查找相關內容。
* 內容全面,示例豐富
本書內容涵蓋了學習C語言應用的各方面技術。為了便於讀者快速掌握每個知識點,每個知識點都給出對應的一個或多個示例,並提供了詳盡的注釋。
* 精彩欄目,貼心提醒
本書根據需要在各章使用了「注意」、「說明」和「技巧」等小欄目,讓讀者可以在學習過程中更輕松地理解相關知識點及概念,並輕松地掌握個別技術的應用技巧。
本書配套資源
本書提供了內容豐富的配套資源,包括源程序、素材,以及模塊庫、案例庫、題庫、素材庫等多項輔助內容,讀者朋友可以通過如下方式獲取。
第1種方式:
(1)登錄清華大學出版社的網站,在網頁右上角的搜索文本框中輸入本書書名(注意區分大小寫和留出空格),或者輸入本書關鍵字,或者輸入本書ISBN號(注意去掉ISBN號間隔線「-」),單擊「搜索」按鈕。
(2)找到本書後單擊超鏈接,在該書的網頁下側單擊「網路資源」超鏈接,即可下載。
第2種方式:
訪問本書的新浪微博:C語言圖書,找到配套資源的鏈接地址進行下載。
讀者對象
本書適合以下人群閱讀。
? 初學編程的自學者 ? 編程愛好者
? 大中專院校的老師和學生 ? 相關培訓機構的老師和學員
? 初、中級程序開發人員 ? 程序測試及維護人員
? 參加實習的程序員
F. 學習C語言 必看的書籍
給C++初學者的50個忠告
1.把C++當成一門新的語言學習(和C沒啥關系!真的。);
2.看《Thinking In C++》,不要看《C++變成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因為他們很難而我們自己是初學者所以就不看;
4.不要被VC、BCB、BC、MC、TC等詞彙所迷惑——他們都是集成開發環境,而我們要學的是一門語言;
5.不要放過任何一個看上去很簡單的小編程問題——他們往往並不那麼簡單,或者可以引伸出很多知識點;
6.會用Visual C++,並不說明你會C++;
7.學class並不難,template、STL、generic programming也不過如此——難的是長期堅持實踐和不遺餘力的博覽群書;
8.如果不是天才的話,想學編程就不要想玩游戲——你以為你做到了,其實你的C++水平並沒有和你通關的能力一起變高——其實可以時刻記住:學C++是為了編游戲的;
9.看Visual C++的書,是學不了C++語言的;
10.浮躁的人容易說:XX語言不行了,應該學YY;——是你自己不行了吧!?
11.浮躁的人容易問:我到底該學什麼;——別問,學就對了;
12.浮躁的人容易問:XX有錢途嗎;——建議你去搶銀行;
13.浮躁的人容易說:我要中文版!我英文不行!——不行?學呀!
14.浮躁的人容易問:XX和YY哪個好;——告訴你吧,都好——只要你學就行;
15.浮躁的人分兩種:a)只觀望而不學的人;b)只學而不堅持的人;
16.把時髦的技術掛在嘴邊,還不如把過時的技術記在心裡;
17.C++不僅僅是支持面向對象的程序設計語言;
18.學習編程最好的方法之一就是閱讀源代碼;
19.在任何時刻都不要認為自己手中的書已經足夠了;
20.請閱讀《The Standard C++ Bible》(中文版:標准C++寶典),掌握C++標准;
21.看得懂的書,請仔細看;看不懂的書,請硬著頭皮看;
22.別指望看第一遍書就能記住和掌握什麼——請看第二遍、第三遍;
23.請看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24.不要停留在集成開發環境的搖籃上,要學會控制集成開發環境,還要學會用命令行方式處理程序;
25.和別人一起討論有意義的C++知識點,而不是爭吵XX行不行或者YY與ZZ哪個好;
26.請看《程序設計實踐》,並嚴格的按照其要求去做;
27.不要因為C和C++中有一些語法和關鍵字看上去相同,就認為它們的意義和作用完全一樣;
28.C++絕不是所謂的C的「擴充」——如果C++一開始就起名叫Z語言,你一定不會把C和Z語言聯系得那麼緊密;
29.請不要認為學過XX語言再改學C++會有什麼問題——你只不過又在學一門全新的語言而已;
30.讀完了《Inside The C++ Object Model》以後再來認定自己是不是已經學會了C++;
31.學習編程的秘訣是:編程,編程,再編程;
32.請留意下列書籍:《C++面向對象高效編程(C++ Effective Object-Oriented Software Construction)》《面向對象軟體構造(Object-Oriented Software Construction)》《設計模式(Design Patterns)》《The Art of Computer Programming》;
33.記住:面向對象技術不只是C++專有的;
34.請把書上的程序例子親手輸入到電腦上實踐,即使配套光碟中有源代碼;
35.把在書中看到的有意義的例子擴充;
36.請重視C++中的異常處理技術,並將其切實的運用到自己的程序中;
37.經常回顧自己以前寫過的程序,並嘗試重寫,把自己學到的新知識運用進去;
38.不要漏掉書中任何一個練習題——請全部做完並記錄下解題思路;
39.C++語言和C++的集成開發環境要同時學習和掌握;
40.既然決定了學C++,就請堅持學下去,因為學習程序設計語言的目的是掌握程序設計技術,而程序設計技術是跨語言的;
41.就讓C++語言的各種平台和開發環境去激烈的競爭吧,我們要以學習C++語言本身為主;
42.當你寫C++程序寫到一半卻發現自己用的方法很拙劣時,請不要馬上停手;請盡快將餘下的部分粗略的完成以保證這個設計的完整性,然後分析自己的錯誤並重新設計和編寫(參見43);
43.別心急,設計C++的class確實不容易;自己程序中的class和自己的class設計水平是在不斷的編程實踐中完善和發展的;
44.決不要因為程序「很小」就不遵循某些你不熟練的規則——好習慣是培養出來的,而不是一次記住的;
45.每學到一個C++難點的時候,嘗試著對別人講解這個知識點並讓他理解——你能講清楚才說明你真的理解了;
46.記錄下在和別人交流時發現的自己忽視或不理解的知識點;
47.請不斷的對自己寫的程序提出更高的要求,哪怕你的程序版本號會變成Version 100.XX;
48.保存好你寫過的所有的程序——那是你最好的積累之一;
49.請不要做浮躁的人;
50.請熱愛C++!
建議你買本書,書比網上的電子版教程好的多,如計算機屆超級權威教授 譚浩強 老先生寫的《C語言程序設計(第三版)》,全國發行了700萬冊,可以說是學C語言的人必看的書,我們大學就用這本書,很適合自學,通俗易懂
建議你學習其它計算機知識時也看他的書,他出的書很多,涵蓋面廣,每一本都很經典
這里有他的教程word版下載
另外,機械工業出版社的 計算機叢書系列也相當經典,全是翻譯國外經典教材,國外計算機發展早,水平比國內高很多,看這些教材事半功倍,推薦(美)Al Kelley Ira Pohl的《C語言教程第4版》
學習程序語言要持之以恆,不浮躁,祝你成功!
G. 學習C語言有什麼書適合新手看
學習C語言不是一朝一夕的事情,但也不需要花費十年時間才能精通。如何以最小的代價學習並精通C語言是本文的主題。請注意,即使是「最小的代價」,也絕不是什麼捷徑,而是以最短的時間取得最多的收獲,同時也意味著你需要經歷艱苦的過程。
一、要讀就讀好書,否則不如不讀
所有初學者面臨的第一個問題便是:如何選擇教材。好的開始是成功的一半,選擇一本優秀的教材是事半功倍的關鍵因素。不幸的是,學校通常會幫你指定一本很差勁的C語言課本;而幸運的是,你還可以再次選擇。
大名鼎鼎的譚浩強教授出了一本《C語言程序設計》,據說發行量有超過400萬,據我所知,很多學校都會推薦這本書作為C語言課本。雖然本人的名字(譚浩宇)跟教授僅僅一字之差,但我是無比堅定地黑他這本書的。這本書不是寫給計算機專業的學生的,而是給那些需要考計算機等級考試的其它專業學生看的。這本書的主要缺點是:例子程序非常不專業,不能教給你程序設計應該掌握的思考方式;程序風格相當地不好,會讓你養成亂寫代碼的惡習;錯誤太多,曾經有人指出過這本書的上百個錯誤,其中不乏關鍵的概念性錯誤。好了,這本書我也不想說太多了,有興趣大家可以網路一下:)
Kernighan和 Ritchie的《The C Programming Language》(中譯名《C程序設計語言》)堪稱經典中的經典,不過舊版的很多內容都已過時,和現在的標准C語言相去甚遠,大家一定要看最新的版本,否則不如不看。另外,即使是最經典最權威的書,也沒有辦法面面俱到,所以手邊常備一本《C語言參考手冊》是十分必要的。《C語言參考手冊》就是《C Reference Manual》,是C語言標準的詳細描述,包括絕大多數C標准庫函數的細節,算得上是最好的標准C語言的工具書。順便提一句,最新的《C程序設計語言》是根據C89標准修訂的,而《C語言參考手冊》描述的是C99標准,二者可能會有些出入,建議按照C99標准學習。還有一本《C和指針》,寫得也是相當地不錯,英文名是《Pointers on C》,特別地強調指針的重要性,算是本書的一個特點吧。不過這本書並不十分適合初學者,如果你曾經學過C語言,有那麼一些C語言的基礎但又不是很扎實,那麼你可以嘗試一下這本書。我相信,只要你理解了指針,C語言便不再神秘。
如果你已經啃完了一本C語言教材,想要更進一步,那麼有兩本書你一定要看。首先是《C Traps and Pitfalls》(中譯名《C陷井與缺陷》),很薄的一本小冊子,內容非常非常地有趣。要注意一點,這本書是二十多年前寫成的,裡面提到的很多C語言的缺陷都已被改進,不過能夠了解一些歷史也不是什麼壞事。然後你可以挑戰一下《Expert C Programming》(中譯名《C專家編程》),書如其名,這本書頗具難度,一旦你仔細讀完並能透徹理解,你便可以放心大膽地在簡歷上寫「精通C語言」了。
切記一個原則,不要讀自己目前還看不懂的書,那是浪費生命。如果你看不懂,那你一定是缺失了某些必需基礎知識。此時,你要仔細分析自己需要補充哪些內容,然後再去書店尋找講述的這些內容的書籍。把基礎知識補充完畢再回頭來學習,才會真正的事半功倍。
二、Unix/Linux還是Windows,這是個很大的問題
不同的編程環境會造就出不同思維的程序員。Windows的程序員大多依賴集成開發環境,比如Visual Studio,而Unix程序員更加鍾愛Makefile與控制台。顯而易見,集成開發環境更容易上手,在Windows上學習C語言,只需要會按幾個基本的Visutal C++工具欄按鈕就可以開始寫Hello, World!了,而在Unix下,你需要一些控制台操作的基本知識。有人也許認為Unix的環境更簡潔,但習慣的力量是很大的,大家都很熟悉 Windows的基本操作,而為了學習C語言去專門裝一個Unix系統,似乎有點不劃算。
對於一個只懂得Windows基本操作、連 DOS是什麼都不知道的新手而言,盡快做一些有趣而有意義的事情才是最重要的。用C語言寫一個小程序遠比學習ls、cat等命令有趣,況且我們要專注於C 語言本身,就不得不暫時忽略一些東西,比如編譯鏈接的過程、Makefile的寫法等等等等。
所以我建議初學者應該以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作為主要的學習環境,而且千萬不要在IDE的使用技巧上過多糾纏,因為今後你一定要轉向Unix環境的。Visual C++ 6.0使用很方便,調試也很直觀,但其默認的編譯器對C標準的支持並不好,而Dev C++使用gcc編譯器,對C99的標准都支持良好。使用順帶提一下,很多大學的C語言課程還在使用Turbo C 2.0作為實驗環境,這是相當不可取的,原因其一是TC 2.0對C標准幾乎沒有支持,其二是TC 2.0編譯得到的程序是16位的,這對今後理解32位的程序會造成極大的困擾(當然,用djgpp之類的東西可以使TC 2.0編譯出32位程序,不過那過於復雜了)。
等你學完一本C語言的教材,你一定要轉向Unix平台繼續學習,幾乎所有的C語言高級教程都是基於Unix平台的(比如《C專家編程》)。轉變的過程是痛苦的,你需要面對的是各種紛繁復雜的命令,完全不同於Windows平台的思考方式,但是這種痛苦是值得的。Unix與C是共生的,Unix的思考方式和習慣更加符合C語言的思考方式和習慣。在Unix下,你可以找到無數優秀的源代碼供你盡情閱讀,你可以方便地查看某個庫函數的聯機手冊,還可以看到最優秀的代碼風格(說到代碼風格,我會專門寫一篇文章詳細敘述)。
歸結起來就是一句話:初學C語言,建議使用Windows系統和集成開發環境,在准備向「高手」方向努力時,請先轉向Unix平台。
三、萬事俱備,你就是東風
書已選定,環境配置完成,正所謂萬事俱備,只欠你自己的努力了。請從書的前言開始,仔細地閱讀手頭的教材,很多人看書喜歡直接從第一章開始看,這是錯誤的做法。前言是作者對整本書的大體介紹,作者一般會告訴你需要什麼基礎才能夠順利閱讀本書,這可以幫助你檢驗自己的基礎知識是否已經具備。看完前言,還要瀏覽一下目錄,了解一下書的整體結構,順便給自己安排一下學習計劃。
學習C語言,必需注意每一個細節,書上的例子代碼一定要自己親自敲一遍,編譯執行輸出都跟書上說的一致才能算是學完了一個例子,如果不一致,就要仔細找原因。出了書本上有的例子,自己還要「創造」一些例子,比如學習運算符優先順序的時候,可以寫幾個相同的表達式,在不同的位置加上括弧,看看有哪些不同的行為,比如*p++和(*p)++,又比如a = b == c、(a = b) == c和a = (b == c)等等。自己抄的書上的例子以及改造之後的例子,還有自己「創造」的例子,都應該仔細地歸類保存,並且要在源代碼中寫上簡短的注釋,闡述這個例子的意圖。
例子之後就是習題了,我建議初學者把所有的習題都獨立做一遍,然後對照答案的代碼,看看自己的代碼有那些不足,再試著修改自己的代碼。很多人不重視習題,這是極大的錯誤,因為作者通常會在習題中說明一些重要的道理,而不是單純地檢驗前面的知識。
也許你認為這樣學習太慢,其實不然。學得細致就不用走回頭路,等你學到後面才發現自己前面沒搞清楚,那才是真的得不償失。一般說來,整本書讀完,你應該完成數千行乃至上萬行的代碼,無論是原封不動照抄書上的,還是自己心血來潮寫就的,都是今後繼續學習的一筆財富。以我自己舉例,閱讀《Windows核心編程》時(我只閱讀了3/4的內容),除了抄書上的代碼,還自己寫了很多例子,一共有5574行(用unix下的wc工具統計),時隔多日,我早已記不清 Windows的系統編程了,但只要花幾分鍾翻出以前的代碼看看,便會重新瞭然於胸。所謂好記性不如爛筆頭,就是這個道理。
仔細讀書、認真抄寫源代碼、獨立完成習題外加更進一步的實驗,最後將所有的代碼留下,成為自己的經驗和財富,絕對的辛苦,也絕對的事半功倍。當然,這種方式只適合學習需要精通的技術,如果不是學習C語言,你還要具體情況具體分析。
寫到最後,還有非常非常重要的一點沒有提及──代碼風格,從最開始學習就必須強迫自己模仿最優秀的代碼風格。因為代碼風格太重要內容也太多,我會用專門的一篇文章來詳細討論,請大家關注《程序員之路──關於代碼風格》。