C語言進階:《明解C語言:中級篇》重磅來襲!

2021-02-19 圖靈教育

熟悉圖靈的小夥伴們都知道,日系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語言:中級篇》。

相關焦點

  • 用c語言編寫表白圖案_用c語言編寫一個表白
    用c語言編寫表白圖案?用c語言編寫一個表白?
  • 學習c語言,知道這三個資源就行了
    c語言作為目前最熱門的程式語言之一,一直是學生、程式設計師必須學習的課程之一,但目前許多學校的課程太過老舊,教材和教程也參差不齊,這裡就給大家推薦幾個比較好的學習c語言的資源。第一個推薦的就是《C Primer Plus》,作為一本廣受大家認可的工具書,書中詳細地講解了C語言的基本概念和編程技巧,並且包含了許多習題和例子,可以有效的幫助初學者建立對於C語言的知識體系,是一本對小白比較友好,且內容全面的入門教材。
  • 現代程式語言起點,C語言之環境搭建
    安裝好MinGW軟體後,找到安裝文件夾下的bin目錄,默認應該是:c:\MinGW\bin將c:\MinGW\bin 、c:\MinGW\lib、c:\MinGW\include添加到系統環境變量的path的最後:過命令可彈出安裝窗口 MinGW-Installation-Manager
  • C語言怎麼樣?今天聊聊C語言的發展史!
    第一個C語言編譯器是怎樣編寫的? 不知道你有沒有想過,大家都用C語言或基於C語言的語言來寫編譯器,那麼世界上第一個C語言編譯器又是怎麼編寫的呢?這不是一個「雞和蛋」的問題…… 回顧一下C語言歷史:Tomphson在BCPL的基礎上開發了B語言,Ritchie又在B語言的基礎上成功開發出了現在的C語言。
  • c語言代碼表白公式_表白代碼c語言
    c語言代碼表白公式?表白代碼c語言?
  • C語言程序設計試題及答案
    A) 'a'&&'b' B) a<=b C) a||b+c&&b-c D) !((a<b)&&!c||1)14、設有數組定義:char array[]=「student」;則數組所佔的存貯空間為( )。
  • C語言中「c=a+b」,這種結構合理嗎?
    C語言會同意一些"令人震驚"的結構,下面的結構是合法的嗎,我們來看看幾個例子。 c = a+++b; 以下代碼是合法的嗎,咋的一看不禁有這樣的疑問?
  • c語言是C語言 C教程語言零基礎教學04:int和float變量的基本使用
    大家好,我是陌塵那麼就直接開始了我們這篇教程學for循環以及冒泡算法我們先來理解一下什麼是「循環」字面意思:但是,C語言的循環和這個有點點不同,c語言中大概就是:重複執行一段特定的代碼。且C語言裡面的循環有多種方法來實現常見的有用for和while函數我們這節課只講for函數使用方法:for(單次表達式;條件表達式;表達式){特定代碼;}好了,又到了萬眾矚目的分析時間 了(此刻應有bgm)首先 單次表達式,意思就是只會執行一次的表達式(何為表達式?百度啊!!!)
  • C+相比其他語言到底難在哪裡?
    看過程式語言排行榜的都知道,c/c++自02年以來,不管時代如何發展,其排名一直在前五以內,足見其在程式語言界的地位。編程界流行這麼一句話:c幾乎什麼都能做,c++幾乎什麼都能做好,足見其功能的強大。
  • 三、C語言表達式、選擇結構
    第三章 表達式、選擇結構特別要注意:C語言中是用非0表示邏輯真的,用0表示邏輯假的。C語言有構造類型,沒有邏輯類型。關係運算符號:注意<=的寫法,==和=的區別!帶入為1<0<2,從數學的角度出發肯定是錯的,但是如果是C語言那麼就是正確的!因為要1<0為假得到0,表達式就變成了0<2那麼運算結果就是1,成為了真的了!c、等號和賦值的區別!
  • 【愛找茬】都是C語言,單片機C語言和普通的C語言究竟有什麼差異呢?
    許多小夥伴在學完C語言後想入門單片機,但學著學著發現明明都是C語言,為什麼單片機C語言和我當初學的C語言有差異呢?今天小編就來梳理我們平時所學的C語言與單片機C語言的有什麼樣的不同。
  • 用C語言編寫屬於自己的程式語言,大一學完C語言即可做!
    首先,明確一點,咱這個項目只是做一個簡單的腳本語言而不是編譯型語言!!!其次,本文不需要太多專業知識,所以不慌。最後,本文只是簡單實現腳本語言,雖然不牛X......實驗環境 : linux2.知識點 : 大一所學 C語言 知識二 要做功能:1.實現語法分析列印 hello-world
  • c語言浪漫有趣程序_c語言浪漫有趣簡單程序
    c語言浪漫有趣程序?c語言浪漫有趣簡單程序?展開全部這個,感覺有點太簡易了,弄點花樣才顯誠意嘛!
  • C語言基礎知識
    pow(x, y)函數C 和 Python 語言的 pow(x, y) 方法都是用於返回 (x 的 y 次方) 的值,C 語言中其原型為:double pow(double x, double y)。值範圍和精度的細節:IO 函數sprintf()函數fopen()函數fwrite()函數預編譯指令-條件編譯c
  • C語言程序設計試題與答案B卷
    每小題1分,共20分)1、一個C語言程序是由( )。A)可構成多重循環結構 B)循環次數不可能為0C)循環次數可能為0 D)先執行後判斷17、設int x=1,a=9,b=6,c=7,d=8;則執行語句:if(a>b) if(c>d)x=2;else x=3; 後,x的值是( )。
  • C語言項目中.h和.c文件的關係和概念
    在編譯器只認識.c(.cpp))文件,而不知道.h是何物的年代,那時的人們寫了很多的.c(.cpp)文件,漸漸地,人們發現在很多.c(.cpp)文件中的聲明語句就是相同的。
  • C語言基礎(下)
    C語言的世界結構體類型什麼是結構體共用體的所有成員佔用同一段內存,修改一個成員會影響其餘所有成員語法示例#include <stdio.h>#include<string.h>union Data{int a;char b;short c;};int main(){union Data d ;d.a = 46;printf("%
  • c語言程序設計是什麼概念?及其作用與產生原因
    c語言程序設計什麼是c語言程序設計?它的作用是什麼?因為什麼而產生?首先,c語言是一門計算機高級語言,就是除了0011101這樣的二進位代碼這些基本語言外。人類用適合自己一般邏輯的方便的,字符,詞組,字母等等來設計的語言。
  • C語言程序設計試題1
    學年期末考試級專業()《C語言程序設計A.包含1個字符 B.包含2個字符 C.包含3個字符 D.是非法表示4.設long i=65539;,執行語句printf("%d",i);後的輸出結果是(   )A.-3 B.3 C.65539 D.數據不確定5.設float c,
  • 華為方舟正式牽手C語言!完全開源
    華為強調,Ark項目的目標是建立一個基於MapleIR的跨語言編程環境,以實現跨語言的全局分析和優化。如在現有的java編程環境下,開發人員經常需要同時編寫java和c語言程序,並通過JNI相互調用,而且這兩種語言目前無法直接互操作。方舟編程系統的最終願景之一是通過一致的ir來表達不同的語言,並在全球範圍內對它們進行跨語言的優化。將來,方舟引擎將不僅從java語言中提取IR代碼,而且還將支持用C和C++語言編譯ir代碼。