1. 程式人生 > >初學C語言,有什麼好書推薦?

初學C語言,有什麼好書推薦?

2014年下半年到東北某地校招,面試了12人,其中有當過C語言助教,有自學C語言程式設計的,問了4人,全都還在用譚浩強的C教材。老實說,聽到這樣的回答,我很是詫異,現在市面上有這麼多好書可選,有不少學校和學生(非計算機專業)卻還在用譚浩強的書。

昨天給公司人力同事提了一份面向嵌入式軟體開發工程師的書單/線上資源,正好有幾本C語言或相關書籍,單列在此。其中大部分書我至少讀過一遍。

基礎(C語言入門,初學,程式設計基礎)
  1. 《C語言程式設計:現代方法》(第2版)(C Programming: A Modern Approach, 2nd Edition, K.N.King)
  2. 《深入理解計算機系統》(修訂版或第2版)(Computer Systems: A Programmer's Perspective, Randal E. Bryant et al),閱讀建議
  3. 《C語言程式設計》(第2版)(The C Programming Language, Brian W. Kernighan & Dennis M. Ritchie)
  4. 《程式設計師修煉之道》(The Pragmatic Programmer: From Journeyman to master, Andy Hunt & Dave Thomas)

核心/驅動

  1. 《Linux核心設計與實現》(第3版)(Linux Kernel Development, 3rd Edition, Robert Love)
  2. 《Linux裝置驅動程式》(第3版)(Linux Device Driver, 3rd Edition, Jonathan Corbet et al)
  3. 《深入Linux核心架構》(Professional Linux Kernel Architecture, Wolfgang Mauerer)

應用

  1. 《UNIX環境高階程式設計》(Advanced Programming in the UNIX Environment, W. Richard Stevens)
  2. 《UNIX網路程式設計》(Unix Network Programming, W. Richard Stevens)
進階
  1. 《C陷阱與缺陷》(C Traps and Pitfalls, Andrew Koenig)
  2. 《C專家程式設計》(Expert C Programming, Peter van der Linden)
  3. 《ARM嵌入式系統開發:軟體設計與優化》(ARM System Developer's Guide: Designing and Optimizing System Software, Andrew Sloss et al)
線上資源

基礎

  1. MOOC課程《C語言程式設計》,翁愷 請擇期學習課程,並參加考試,申請認證證書。
  2. Python簡明教程:A Byte of Python 學習Python,編寫並執行所有示例程式碼。
  3. Linux Shell簡明教程 熟悉Linux Shell,掌握基本的shell指令碼程式設計。
  4. LeetCode OJ線上試題 獨立、自主完成至少2/3或更多題目,目前支援C++、Java和Python三種語言答題。
  5. 劉未鵬:怎樣花兩年時間去面試一個人? 建議提前兩年參考這篇文章,做好面試準備。
附註

StackOverflow有一份C語言圖書指南(The Definitive C Book Guide and List),分為Reference Style(參考、大全)、Beginner(初學)、Intermediate(中階)、Above Intermediate(高階)四類。

以下為引文
-------------

Reference Style - All Levels

Beginner

Intermediate

Above Intermediate

相關推薦

初學C語言什麼好書推薦

2014年下半年到東北某地校招,面試了12人,其中有當過C語言助教,有自學C語言程式設計的,問了4人,全都還在用譚浩強的C教材。老實說,聽到這樣的回答,我很是詫異,現在市面上有這麼多好書可選,有不少學校和學生(非計算機專業)卻還在用譚浩強的書。 昨天給公司人力同事提了一份面向嵌入式軟體開發工程師的書單/線上

C語言N個硬幣面值為a[1]...a[N]給一個非負數m用這些硬幣湊成m多少種方法?

#include <stdio.h> #include <memory.h> #define N 1000 #define M 100000 int a[N]; int DP[M]; int dpItUnlimited(int m, i

初學C語言幾種利用巢狀迴圈的字母列印格式

1、最簡單的換行巢狀,一個for迴圈控制行數,一個for迴圈控制每行輸出量。 #include <stdio.h> /*輸出類似於 $ $$ $$$ $$$$ $$$$$ */ int main(void) { int m,n;

初學C語言編程時最容易犯的錯誤你踩坑了嗎?

不同的 類型 alt 結果 如何 wid text size can C編譯的程序對語法檢查並不像其它高級語言那麽嚴格,這就給編程人員留下“靈活的余地”,但還是由於這個靈活給程序的調試帶來了許多不便,尤其對初學C語言的人來說,經常會出一些連自己都不知道錯在哪裏的錯誤。看著有

C語言實現兩個整數m和n的二進位制序列中多少不同的位

新手學程式設計,大佬寫的太高深,看看本人小白寫的,一起學習一起交流 #include <stdio.h> int main() { int m = 0; int n = 0; int i = 0; int count = 0; scanf("%d%d", &

初學C語言(5):逆序輸出片語 判斷迴文數

#include #include<assert.h> using namespace std; void reverse(char *pbegin, char *pend ) // 將一句話 片語逆序輸出 { char tmp = 0; while (pbegin < p

萌新初學c語言;求質數請大家幫忙看看

#include<stdio.h> int main(){ int a,b,c,d,e,f; c=0;d=0; printf("請輸入範圍:__至__\n"); scanf("%d %d",&e,&f); for(a=

C語言實現一個字元陣列的內容為:"student a am i"請你將陣列的內容改為"i am a student"。

//有一個字元陣列的內容為:"student a am i",請你將陣列的內容改為"i am a student"。    要求:不能使用庫函式。               只能開闢有限個空間(空間個數和字串的長度無關)。   解題思路:               

ACMNO.38 C語言-報數 n人圍成一圈順序排號。從第1個人開始報數(從1到3報數)凡報到3的人退出圈子問最後留下的是原來的第幾號的那位。

題目描述 有n人圍成一圈,順序排號。 從第1個人開始報數(從1到3報數),凡報到3的人退出圈子。`在這裡插入程式碼片` 問最後留下的是原來的第幾號的那位。 輸入 初始人數n 輸出 最後一人的初始編號 樣例輸入 3 樣例輸出 2 來源/分類

ACMNO.44 C語言-平均分 N個學生每個學生的資料包括學號、姓名、3門課的成績從鍵盤輸入N個學生的資料要求打印出3門課的總平均成績以及最高分的學生的資料(包括學號、姓名、3門課成績)

題目描述 有N個學生,每個學生的資料包括學號、姓名、3門課的成績, 從鍵盤輸入N個學生的資料, 要求打印出3門課的總平均成績,以及最高分的學生的資料 (包括學號、姓名、3門課成績) 輸入 學生數量N佔一行每個學生的學號、姓名、三科成績佔一行,空格分開。 輸出 各門

C 語言一個班4個學生5門課程。

題目:有一個班4個學生,5門課程。1、求第一門課程的平均分;2、找出有兩門課程以上不及格的學生,輸出他們的學號和全部課程成績及平均成績;3、找出平均成績在90分以上或全部課程成績在85分以上的學生。分別

如何學習 Objective-C 語言這方面最好的書什麼?

最近我也在學習Objective-C和iOS開發,我就簡單說下我在蒐集相關內容的時候總結出來的經驗吧,希望能對你有所幫助。  我個人的經驗是,如果之前有過程式設計基礎(無論是C、C++還是Java),那麼《Objective-C基礎教程》(圖靈程式設計叢書,人民郵電出版社)是不錯的選擇。而如果是第一次學習程

c語言1、2、3、4個數字能組成多少個互不相同且無重複數字的三位數?打印出來?

有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?打印出來?解:程式:#include<stdio.h>int main(){int i, j, k;int count = 

C語言5個學生每個學生3門課的成績從鍵盤輸入學生資料計算平均成績

有5個學生,每個學生有3門課的成績,從鍵盤輸入學生資料(包括學生號、姓名、三門課成績),計算平均成績,將原有資料和計算出的平均分數存放在磁碟檔案“stud”中  對於平均成績的思路就是:把平均成績當做結構體的一項  在輸入3門課成績以獲得平均成績時,要注意在c語言中,三門成績

初學C語言:輸入10個整數將其中最小的數與第一個數對換把最大的數與最後一個數對換。

#include<stdio.h> void input(int a[10]) { int i; for (i=0;i<10;i++) { scanf("%d",&

C語言鏈表操作

char next count 鏈表 刪除節點 free etc turn getchar() #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <

C語言符號數、無符號數、整數溢出 (轉)

alt 原因 () tar sig 重新 detail copyto 想象 [cpp] view plain copy print? #include<stdio.h> void main() { int l=-1; unsigned

c語言實際上就是函數調用

mar oci noi oos left info 函數調用 blank tor 嬌44趴JZP5VLB陀汗http://shequ.docin.com/cfrlv671 2735T吠rD輾氯譾5http://shequ.docin.com/adb78175 U2i75AQ

首先不談C語言我們先來談談編程工具

3.0 windows 7 最好 微軟 windows10 理由 平臺 window 以及 系統環境: 推薦Windows xp sp1 軟件: Tb2.0或3.0 推薦理由:最好的一個系統環境 系統環境: 推薦Windows xp/ Windows 7/ Wi