熟悉圖靈的小夥伴們都知道,日系IT圖書中比較火的系列有「圖解系列」、「是怎樣系列」、「明解系列」.,它們以講解細膩及圖解的風格吸引了一大批讀者。
「圖解系列」有13本,內容涉及各個方面;
「是怎樣系列」有3本,趣味講解IT基礎知識;
「明解系列」出版《明解C語言:入門篇》以來,就有好多小夥伴期待「明解系列」進階篇,今天,《明解C語言:中級篇》終於出版了。
這本《明解C語言:中級篇》是為那些已經學完入門內容,想要掌握實際編程能力的讀者編寫的。
作者:柴田望洋
譯者:丁靈
明解系列第2彈!C語言進階無悔選擇
111段代碼+152幅圖表,圖文並茂,講解清晰、易懂
10個有趣的遊戲程序,讓你在快樂編程中學會實用技巧
雙色印刷,版式賞心悅目
榮獲日本工學教育協會著作獎,原版系列累計銷量超1,000,000冊!
本書適合以下讀者閱讀:
入門書中的示例程序都能看懂,但是自己寫不出來;
理解數組、指針等語法,但是不知如何在程序中使用;
學完入門書後找不到一本合適的書繼續學習……
筆者迄今為止遇到過很多難以從C語言「新手」階段畢業的人,他們似乎都抱有下面這樣的煩惱。
☞ 雖然能理解入門書中所寫的程序,但換成自己寫就寫不出來了。
☞ 雖然了解數組和指針等語法知識,但不知該如何在實際程序中使用。
☞ 新員工培訓中學到的基礎知識和實際工作中要求的相差甚遠,或者在大學課堂上所學的內容跟畢業設計要求編寫的程序難度大相逕庭,因此不知如何是好。
事實上,這些煩惱在某種意義上也是無可奈何的。因為在學習程式語言的初級階段,學習「語言」本身的基礎知識是必需的,無暇顧及應用語言的「編程」。
當然,語言和編程兩者也不是完全對立的。但是對新手而言,如果想要同時學習這兩者,要記住和掌握的東西未免太多了。因此,初學階段往往把重點放在「語言」上,很多入門書的結構都是如此。
本書的結構和一般圖書不同,每章的標題不是「數組」「指針」這樣的編程術語,而是像下面這樣:每一章都會「開發程序」。
第1 章 猜數遊戲
第2 章 專注於顯示
第3 章 猜拳遊戲
第4 章 珠璣妙算
第5 章 記憶力訓練
第6 章 日曆
第7 章 右腦訓練
第8 章 打字練習
第9 章 文件處理
第10 章 英語單詞學習軟體
為了讓大家能夠從C語言編程的「新手」中畢業,踏實地在「中級者」的道路上前進,本書將帶領大家一邊接觸眾多的程序一邊學習,這些程序的編寫和運行都很有趣。如下風格 ↓↓↓
大家嘗試之後可能會驚訝道:「這麼短的程序居然這麼有意思!」
當然這些程序不僅僅是有趣而已,每個程序中都包含著實用性的技巧,例如隨機數的生成、數組的應用方法、包含漢字的字符串、字符串和指針、命令行參數、文件處理、生成接收可變參數的函數的方法、存儲空間的動態分配與釋放,等等。另外我們還將學習詳細的語法規則、眾多庫的規範以及使用方法等。
我們要學習的程序清單總共有111個。
▶ 為了幫助大家理解,本書使用了大量簡明易懂的圖表(全書共有152張圖表)。
下面總結了一些閱讀本書時需要事先了解和注意的事項。
本書是「明解C語言」系列的第二本書,在講解《中級篇》的同時,也會帶領大家一併複習《入門篇》中學過的內容。
▶ 因此,學習內容和難易程度跟《入門篇》和同系列的第三本《實踐篇》有部分重複。這主要考慮到有些讀者在入門學習時採用的是非本系列《入門篇》的其他圖書。
大家將在本書中學到random函數、srand函數、fopen函數等眾多C語言標準庫函數(包括函數式宏共有57個)。這些函數的解說都是筆者基於C標準庫的JIS標準文件改寫而成的,為了傳達嚴格的規範,表述可能會略顯生硬。
大家可以從以下網站下載本書涉及的源程序。若是這些程序能為大家所用,筆者將感到萬分榮幸。
http://www.ituring.com.cn/book/1810
第1章 猜數遊戲
1-1 猜數判定
通過if語句實現條件分支
if語句的嵌套
實現多分支的方法
1-2 重複到猜對為止
通過do語句循環
相等運算符和關係運算符
通過while語句循環
break語句
while語句和do語句
先判斷後循環和先循環後判斷
1-3 隨機設定目標數字
rand函數:生成隨機數
srand函數:設置用於生成隨機數的種子
隨機設定目標數字
限制輸入次數
1-4 保存輸入記錄
數組
把輸入的值存入數組
通過for語句來顯示輸入記錄
數組元素的初始化
獲取數組的元素個數
第2章 專注於顯示
2-1 熟練運用轉義字符
轉義字符
\a:警報符
\n:換行符
\f:換頁符
\b:退格符
\r:回車符
\t:水平制表符
\v:垂直制表符
\'和\":單引號和雙引號
putchar函數:輸出字符
\?:問號符
\\:反斜槓字符
八進位轉義字符和十六進位轉義字符
2-2 操縱時間
clock函數:獲取程序啟動後經過的時間
計算處理所需的時間
暫停處理一段時間
2-3 字幕顯示
逐個顯示並消除字符
strlen函數:查詢字符串的長度
字幕顯示(從右往左)
字幕顯示(從左往右)
2-4 格式輸入輸出
把要顯示的位數指定為變量
顯示任意數量的空白字符
printf函數:格式輸出
scanf函數:格式輸入
第3章 猜拳遊戲
3-1 猜拳遊戲
基本設計
switch語句
表示「手勢」的字符串
包含漢字的字符串
char型
顯示所有的字符
isprint函數:判斷顯示字符
條件運算符和條件表達式
字符串的內部
通過指針來遍歷字符串
CHAR_BIT
指向字符串的指針數組
程序的改良
手勢的值和手勢的判斷
讓計算機「後出」
3-2 函數的分割
勝負次數
函數和標識符的作用域
猜贏3次就結束
第4章 珠璣妙算
4-1 珠璣妙算
珠璣妙算
出題
讀取數字串
atoi函數/atol函數/atof函數:把字符串轉換為數值
檢查已讀取的字符串的有效性
字符類別的判斷
hit和blow的判斷
第5章 記憶力訓練
5-1 單純記憶訓練
訓練記憶4位數
整數型的表示範圍
訓練記憶任意位數的數值
輸入訓練等級
用字符串表示數值
生成作為題目的字符串
顯示作為題目的字符串
strcmp函數:字符串的比較
英文字母記憶訓練(其一)
生成作為題目的字符串
英文字母記憶訓練(其二)
5-2 加一訓練
加一訓練
輸入等級
生成並顯示題目
消除題目
輸入答案
判斷對錯
保存答對數量
顯示訓練結果
用橫向圖形顯示
用縱向圖形顯示
把數值存入數組
如何存儲超過數組元素個數的值(其一)
如何存儲超過數組元素個數的值(其二)
加一訓練的改良
5-3 存儲空間的動態分配與釋放
聲明數組
動態存儲期
存儲空間的動態分配與釋放
指向void型的指針
為單個對象分配存儲空間
為數組對象分配存儲空間
第6章 日曆
6-1 今天是幾號
今天的日期
time_t型:日曆時間
time函數:以日曆時間的形式來獲取當前時間
tm結構體:分解時間
localtime函數:把日曆時間轉換成表示本地時間的分解時間
gmtime函數:把日曆時間轉換成UTC分解時間
通過當前時間設定隨機數種子
asctime函數:把分解時間轉換成字符串
ctime函數:把日曆時間轉換成字符串
difftime函數:求時間差
暫停處理一段時間
6-2 求星期
mktime函數:把表示本地時間的分解時間轉換成日曆時間
蔡勒公式
6-3 日曆
顯示日曆
求星期
閏年的判斷
月份的天數
顯示日曆的過程
橫向顯示
把1個月的日曆存入字符串
sprintf函數:對字符串進行格式化輸出
生成空字符串
strcpy函數:字符串的複製
在第1日左側設置空白
strcat函數:字符串的連接
顯示字符串
年月的計算
6-4 命令行參數
命令行參數
argv指向的實體
通過指針以字符串為單位遍歷argv
通過指針以字符為單位遍歷argv
不使用argc來遍歷
啟動程序時指定年月的日曆
第7章 右腦訓練
7-1 尋找幸運數字
複製數組
複製數組時跳過一個數組元素
尋找幸運數字
重新排列數組元素
交換兩個值
7-2 尋找重複數字
尋找重複數字
鍵盤輸入和操作性能的提升(MS-Windows/MS-DOS)
getch函數:獲取按下的鍵
putch函數:輸出到控制臺
鍵盤輸入和操作性能的提升(UNIX / Linux / OS X)
通用頭文件
包含頭文件保護的頭文件的設計
替換調用的函數
可變參數的聲明
va_start宏:訪問可變參數前的準備
va_arg宏:取出可變參數
va_end宏:結束對可變參數的訪問
vprintf函數/ vfprintf函數:輸出到流
vsprintf函數:輸出到字符串
改良後的程序
7-3 三字母詞聯想訓練
瞬間判斷力的養成
生成題目
第8章 打字練習
8-1 基本打字練習
輸入一個字符串
消除已輸入的字符
輸入多個字符串
打亂出題順序(方法一)
打亂出題順序(方法二)
8-2 鍵盤布局聯想打字
鍵盤布局聯想打字
8-3 綜合打字練習
練習菜單
單一位置訓練
混合位置訓練
C語言的單詞訓練
英語會話訓練
第9章 文件處理
9-1 標準流
複製程序
getchar函數和EOF
賦值和比較
流和緩衝區
緩衝的種類
setvbuf函數/setbuf函數:更改緩衝方法
fflush函數:刷新緩衝區
標準流
重定向
9-2 文本文件
文件的打開和關閉
fopen函數:打開文件
FILE型
fclose函數:關閉文件
保存和獲取訓練信息
更新最高得分
讀取訓練信息
fscanf函數:輸入格式
寫入訓練信息
fprintf函數:輸出格式
9-3 實用程序的編寫
concat:文件的連接輸出
fgetc 函數:從流中讀取一個字符
fputc 函數:向流輸出一個字符
detab:把水平制表符轉換成空白字符
fputs 函數:輸出字符串
entab:把空白字符轉換成水平制表符
9-4 二進位文件
文本文件和二進位文件
fread函數:從文件中讀取數據
fwrite 函數:向文件中寫入數據
hdump:通過字符和十六進位編碼實現文件轉儲
bcopy:複製文件
第10章 英語單詞學習軟體
10-1 英語單詞學習軟體
單詞顯示軟體
選擇和顯示單詞
向單詞學習軟體擴展
顯示選項
生成選項
生成選項(改良版本)
10-2 為字符串數組動態分配空間
為單一字符串動態分配空間
為字符串數組(二維數組)動態分配空間
為字符串數組(指針數組)動態分配空間
單詞文件的讀取
後記
致謝
參考文獻
希望大家通過閱讀《明解C語言:中級篇》,爭取從新手階段完全畢業!
當然,如果你還沒入門C語言,牆裂推薦《明解C語言:入門篇》,自出版以來倍受青睞,豆瓣評分8.5分。
作者:柴田望洋
譯者:管傑,羅勇,杜曉靜
原版暢銷280,000冊
205段代碼+220幅圖表,雙色印刷
日本C語言經典教材,被譽為「C語言聖經」
本書對C語言的基礎知識進行了徹底剖析,內容涉及數組、函數、指針、文件操作等。對於C語言語法以及一些難以理解的概念,均以精心繪製的示意圖,清晰、通俗地進行講解。原著在日本廣受歡迎,始終位於網上書店C語言著作排行榜首位。
現在到處都有「人生苦短,我用Python」的口號,如果讓你用一句話來表白你喜歡的或者正在用的程式語言,你會說什麼?
喜歡C的小夥伴也趕緊出來冒冒泡,用一句話來表達C的強大~~
PS:不管你喊出了什麼口號,最後別忘了寫上你想要《入門篇》還是《中級篇》,還有你想要的理由~~
☟ 點擊閱讀原文,到京東購買《明解C語言:中級篇》。