當前位置:首頁 » 編程語言 » c語言初學者百日大戰之四
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言初學者百日大戰之四

發布時間: 2022-10-07 14:23:36

c語言我是初學者

您好!很高興為您解答。

「return (double)(a+b);」意思是返回一個值,這個值是將a+b的值強制轉換為雙精度實型後的結果;

「return double a+b;」不能這樣書寫,會報錯是肯定的,因為return後面只能是一個表達式。甚至「double a+b;」這種書寫方式本身就是錯的,「double #」的意思是定義一個雙精度實型的變數#(#中只能包含字母,數字和下劃線)。

望採納~如您還有不解,歡迎追問~

㈡ c語言求助!

#include <stdio.h>
#include<string.h>
#define N 100 //這里可以修改N的值
int main()
{
int a[100][100]={0},i,j,k,p,m,n;

while(scanf("%d",&n)!=EOF)
{

memset(a,0,sizeof(a));
i=n+1;
j=n/2+1; /*建立魔方陣*/
a[1][j]=1;
for(k=2;k<=n*n;k++)
{
i=i-1;
j=j+1;
if((i<1)&&(j>n))
{
i=i+2;j=j-1;
}
else
{
if(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else
{
i=i+2;
j=j-1;
a[i][j]=k;
}
}
for(i=n;i>=1;i--)/*輸出魔方陣*/
{
for(j=n;j>=1;j--)
{
if(j<n)printf(" ");
printf("%d",a[i][j]);
}
puts("");
}

}
}

㈢ 如何操作C語言

C語言的發展過程

C語言是在70年代初問世的。一九七八年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。同時由B.W.Kernighan和D.M.Ritchit合著了著名的「THE C PROGRAMMING LANGUAGE」一書。通常簡稱為《K&R》,也有人稱之為《K&R》標准。但是,在《K&R》中並沒有定義一個完整的標准C語言,後來由美國國家標准學會在此基礎上制定了一個C 語言標准,於一九八三年發表。通常稱之為ANSI C。
當代最優秀的程序設計語
早期的C語言主要是用於UNIX系統。由於C語言的強大功能和各方面的優點逐漸為人們認識,到了八十年代,C開始進入其它操作系統,並很快在各類大、中、小和微型計算機上得到了廣泛的使用。成為當代最優秀的程序設計語言之一。

C語言的特點

C語言是一種結構化語言。它層次清晰,便於按模塊化方式組織程序,易於調試和維護。C語言的表現能力和處理能力極強。它不僅具有豐富的運算符和數據類型,便於實現各類復雜的數據結構。它還可以直接訪問內存的物理地址,進行位(bit)一級的操作。由於C語言實現了對硬體的編程操作,因此C語言集高級語言和低級語言的功能於一體。既可用於系統軟體的開發,也適合於應用軟體的開發。此外,C語言還具有效率高,可移植性強等特點。因此廣泛地移植到了各類各型計算機上,從而形成了多種版本的C語言。

C語言版本

目前最流行的C語言有以下幾種:
·Microsoft C 或稱 MS C
·Borland Turbo C 或稱 Turbo C
·AT&T C
這些C語言版本不僅實現了ANSI C標准,而且在此基礎上各自作了一些擴充,使之更加方便、完美。
面向對象的程序設計語言
在C的基礎上,一九八三年又由貝爾實驗室的Bjarne Strou-strup推出了C++。 C++進一步擴充和完善了C語言,成為一種面向 對象的程序設計語言。C++目前流行的最新版本是Borland C++4.5,Symantec C++6.1,和Microsoft VisualC++ 2.0。C++提出了一些更為深入的概念,它所支持的這些面向對象的概念容易將問題空間直接地映射到程序空間,為程序員提供了一種與傳統結構程序設計不同的思維方式和編程方法。因而也增加了整個語言的復雜性,掌握起來有一定難度。

C和C++

但是,C是C++的基礎,C++語言和C語言在很多方面是兼容的。因此,掌握了C語言,再進一步學習C++就能以一種熟悉的語法來學習面向對象的語言,從而達到事半功倍的目的。

C源程序的結構特點

為了說明C語言源程序結構的特點,先看以下幾個程序。這幾個程 序由簡到難,表現了C語言源程序在組成結構上的特點。雖然有關內容還未介紹,但可從這些例子中了解到組成一個C源程序的基本部分和書寫格式。main()
{printf("c語言世界www.vcok.com,您好!\n");
}
main是主函數的函數名,表示這是一個主函數。每一個C源程序都必須有,且只能有一個主函數(main函數)。函數調用語句,printf函數的功能是把要輸出的內容送到顯示器去顯示。printf函數是一個由系統定義的標准函數,可在程序中直接調用。
#include
#include
main()
{
double x,s;
printf("input number:\n");
scanf("%lf",&x);
s=sin(x);
printf("sine of %lf is %lf\n",x,s);
}

每行注釋

include稱為文件包含命令擴展名為.h的文件也稱為頭文件或首部文件
定義兩個實數變數,以被後面程序使用
顯示提示信息
從鍵盤獲得一個實數x
求x的正弦,並把它賦給變數s
顯示程序運算結果
main函數結束
程序的功能是從鍵盤輸入一個數x,求x的正弦值,然後輸出結果。在main()之前的兩行稱為預處理命令(詳見後面)。預處理命令還有其它幾種,這里的include 稱為文件包含命令,其意義是把尖括弧""或引號<>內指定的文件包含到本程序來,成為本程序的一部分。被包含的文件通常是由系統提供的,其擴展名為.h。因此也稱為頭文件或首部文件。C語言的頭文件中包括了各個標准庫函數的函數原型。因此,凡是在程序中調用一個庫函數時,都必須包含該函數原型所在的頭文件。在本例中,使用了三個庫函數:輸入函數scanf,正弦函數sin,輸出函數printf。sin函數是數學函數,其頭文件為math.h文件,因此在程序的主函數前用include命令包含

㈣ 關於C語言的

#include<stdio.h>
main()
{ //此處缺少大括弧
int x=12;
printf("%d%o%x%u,",x,x,x,x); //第一個要加上%,
}

注意:1.C語言中要求大括弧要求匹配,這個對於C語言初學者是很容易出現的不匹配的錯誤
2.printf("d",x)和printf("%d",x);是兩個不同的輸出,第一個理論上是錯誤的,如果能輸出的話也是輸出d,與語句pirntf("d")相同,如果想輸出十進制的x,必須用printf("%d",x);"%d"表示用十進制的方式輸出x的數值

㈤ c語言每個測試實例的輸出完畢後換行

摘要 C語言中代碼的多行書寫

㈥ C語言初學者

一個C語言老師的感受:教了多年C語言課程,大多剛入門的學生覺的這門課程難學。其實,按照我們現在的教學大綱和教學要求,只要同學們掌握一些方法,克服心理上畏難、不輕言放棄,是完全可以學好的。

C語言教材的內容很豐富,按照我們現在的教學大綱,教學的主要內容是基礎知識、四種結構的的程序設計、函數與數組的應用和一些簡單的演算法。在學習時,同學們應該把主要精力放在這些部分,通過實踐(練習和上機調試等熟練掌握。當然,在初學C語言時,可能會遇到有些問題理解不透,或者表達方式與以往數學學習中不同(如運算符等),這就要求不氣餒,不明白的地方多問多想,鼓足勇氣進行學習,待學完後面的章節知識,前面的問題也就迎刃而解了,這一方面我感覺是我們同學最欠缺,大多學不好的就是因為一開始遇到困難就放棄,曾經和好多同學談他的問題,回答是聽不懂、不想聽、放棄這樣三個過程,我反問,這節課你聽過課嗎?回答又是沒有,根本就沒聽過課,怎麼說自己聽不懂呢?相應的根本就沒學習,又談何學的好?

學習C語言始終要記住「曙光在前頭」和「千金難買回頭看」,「千金難買回頭看」是學習知識的重要方法,就是說,學習後面的知識,不要忘了回頭弄清遺留下的問題和加深理解前面的知識,這是我們學生最不易做到的,然而卻又是最重要的。比如:在C語言中最典型的是關於結構化程序設計構思,不管是那種教材,一開始就強調這種方法,這時也許你不能充分體會,但是學到函數時,再回頭來仔細體會,溫故知新,理解它就沒有那麼難了。學習C語言就是要經過幾個反復,才能前後貫穿,積累應該掌握的C知識。

那麼,我們如何學好《C程序設計》呢?

一.學好C語言的運算符和運算順序

這是學好《C程序設計》的基礎,C語言的運算非常靈活,功能十分豐富,運算種類遠多於其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。在學習中,只要我們對此合理進行分類,找出它們與我們在數學中所學到運算之間的不同點之後,記住這些運算也就不困難了,有些運算符在理解後更會牢記心中,將來用起來得心應手,而有些可暫時放棄不記,等用到時再記不遲。

先要明確運算符按優先順序不同分類,《C程序設計》運算符可分為15種優先順序,從高到低,優先順序為1 ~ 15,除第2、3級和第14級為從右至左結合外,其它都是從左至右結合,它決定同級運算符的運算順序。下面我們通過幾個例子來說明:

(1) 5*8/4%10 這個表達式中出現3種運算符,是同級運算符,運算順序按從左至右結合,因此先計算5 *8=40,然後被4除,結果為10,最後是%(求余數)運算,所以表達式的最終結果為10%10 = 0;

(2)a = 3;b = 5;c =++ a* b ;d =a + +* b;

對於c=++a*b來說,按表中所列順序,+ +先執行,*後執行,所以+ + a執行後,a的值為4,由於+ +為前置運算,所以a的值4參與運算,C的值計算式為4*5=20而不是3*5=15了;而對於d=a++*b來說,由於a + +為後置運算,所以a值為4參與運算,使得d的值仍為20,而a參與運算後其值加1,值為5。 這個例子執行後,a的值為5,b的值為5,c的值為20,d的值也是20;

(3)(a = 3,b = 5,b+ = a,c = b* 5)

例子中的「,」是逗號結合運算,上式稱為逗號表達式,自左向右結合,最後一個表達式的結果值就是逗號表達式的結果,所以上面的逗號表達式結果為40,a的值為3,b的值為8,c的值為40。

(4)a=5;b=6;c=a>b?a:b;

例中的a>b?a:b是一個三目運算,它的功能是先做關系運算a>b部分,若結果為真,則取問號後a的值,否則取冒號後b的值,因此c的值應該為6,這個運算可以用來代替if…else…語句的簡單應用。

二.學好C語言的四種程序結構

(1)順序結構

順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。

例如;a = 3,b = 5,現交換a,b的值,這個問題就好象交換兩個杯子水,這當然要用到第三個杯子,假如第三個杯子是c,那麼正確的程序為: c = a; a = b; b = c; 執行結果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b = c; 則執行結果就變成a = b = c = 5,不能達到預期的目的,初學者最容易犯這種錯誤。 順序結構可以獨立使用構成一個簡單的完整程序,常見的輸入、計算,輸出三步曲的程序就是順序結構,例如計算圓的面積,其程序的語句順序就是輸入圓的半徑r,計算s = 3.14159*r*r,輸出圓的面積s。不過大多數情況下順序結構都是作為程序的一部分,與其它結構一起構成一個復雜的程序,例如分支結構中的復合語句、循環結構中的循環體等。

(2) 分支結構

順序結構的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。對於要先做判斷再選擇的問題就要使用分支結構。分支結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。分支結構的程序設計方法的關鍵在於構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的分支語句。分支結構適合於帶有邏輯或關系比較等條件判斷的計算,設計這類程序時往往都要先繪制其程序流程圖,然後根據程序流程寫出源程序,這樣做把程序設計分析與語言分開,使得問題簡單化,易於理解。程序流程圖是根據解題分析所繪制的程序執行流程圖。

學習分支結構不要被分支嵌套所迷惑,只要正確繪制出流程圖,弄清各分支所要執行的功能,嵌套結構也就不難了。嵌套只不過是分支中又包括分支語句而已,不是新知識,只要對雙分支的理解清楚,分支嵌套是不難的。下面我介紹幾種基本的分支結構。

①if(條件)

{

分支體

}

這種分支結構中的分支體可以是一條語句,此時「{ }」可以省略,也可以是多條語句即復合語句。它有兩條分支路徑可選,一是當條件為真,執行分支體,否則跳過分支體,這時分支體就不會執行。如:要計算x的絕對值,根據絕對值定義,我們知道,當x>=0時,其絕對值不變,而x<0時其絕對值是為x的反號,因此程序段為:if(x<0) x=-x;

②if(條件)

{分支1}

else

{分支2}

這是典型的分支結構,如果條件成立,執行分支1,否則執行分支2,分支1和分支2都可以是1條或若干條語句構成。如:求ax^2+bx+c=0的根

分析:因為當b^2-4ac>=0時,方程有兩個實根,否則(b^2-4ac<0)有兩個共軛復根。其程序段如下:

d=b*b-4*a*c;

if(d>=0)

{x1=(-b+sqrt(d))/2a;

x1=(-b-sqrt(d))/2a;

printf(「x1=%8.4f,x2=%8.4f\n」,x1,x2);

}

else

{r=-b/(2*a);

i =sqrt(-d)/(2*a);

printf(「x1=%8.4f+%8.4fi\n」r, i);

printf(「x2=%8.4f-%8.4fi\n」r,i)

}

③嵌套分支語句:其語句格式為:

if(條件1) {分支1};

else if(條件2) {分支2}

else if(條件3) {分支3}

……

else if(條件n) {分支n}

else {分支n+1}

嵌套分支語句雖可解決多個入口和出口的問題,但超過3重嵌套後,語句結構變得非常復雜,對於程序的閱讀和理解都極為不便,建議嵌套在3重以內,超過3重可以用下面的語句。

④switch開關語句:該語句也是多分支選擇語句,到底執行哪一塊,取決於開關設置,也就是表達式的值與常量表達式相匹配的那一路,它不同if…else 語句,它的所有分支都是並列的,程序執行時,由第一分支開始查找,如果相匹配,執行其後的塊,接著執行第2分支,第3分支……的塊,直到遇到break語句;如果不匹配,查找下一個分支是否匹配。這個語句在應用時要特別注意開關條件的合理設置以及break語句的合理應用。

(3)循環結構:

循環結構可以減少源程序重復書寫的工作量,用來描述重復執行某段演算法的問題,這是程序設計中最能發揮計算機特長的程序結構,C語言中提供四種循環,即goto循環、while循環、do –while循環和for循環。四種循環可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環,因為強制改變程序的順序經常會給程序的運行帶來不可預料的錯誤,在學習中我們主要學習while、do…while、for三種循環。常用的三種循環結構學習的重點在於弄清它們相同與不同之處,以便在不同場合下使用,這就要清楚三種循環的格式和執行順序,將每種循環的流程圖理解透徹後就會明白如何替換使用,如把while循環的例題,用for語句重新編寫一個程序,這樣能更好地理解它們的作用。特別要注意在循環體內應包含趨於結束的語句(即循環變數值的改變),否則就可能成了一個死循環,這是初學者的一個常見錯誤。

在學完這三個循環後,應明確它們的異同點:用while和do…while循環時,循環變數的初始化的操作應在循環體之前,而for循環一般在語句1中進行的;while 循環和for循環都是先判斷表達式,後執行循環體,而do…while循環是先執行循環體後判斷表達式,也就是說do…while的循環體最少被執行一次,而while 循環和for就可能一次都不執行。另外還要注意的是這三種循環都可以用break語句跳出循環,用continue語句結束本次循環,而goto語句與if構成的循環,是不能用break和 continue語句進行控制的。

順序結構、分支結構和循環結構並不彼此孤立的,在循環中可以有分支、順序結構,分支中也可以有循環、順序結構,其實不管哪種結構,我們均可廣義的把它們看成一個語句。在實際編程過程中常將這三種結構相互結合以實現各種演算法,設計出相應程序,但是要編程的問題較大,編寫出的程序就往往很長、結構重復多,造成可讀性差,難以理解,解決這個問題的方法是將C程序設計成模塊化結構。

(4)模塊化程序結構

C語言的模塊化程序結構用函數來實現,即將復雜的C程序分為若干模塊,每個模塊都編寫成一個C函數,然後通過主函數調用函數及函數調用函數來實現一大型問題的C程序編寫,因此常說:C程序=主函數+子函數。 因些,對函數的定義、調用、值的返回等中要尤其注重理解和應用,並通過上機調試加以鞏固。

三.掌握一些簡單的演算法

編程其實一大部分工作就是分析問題,找到解決問題的方法,再以相應的編程語言寫出代碼。這就要求掌握演算法,根據我們的《C程序設計》教學大綱中,只要求我們掌握一些簡單的演算法,在掌握這些基本演算法後,要完成對問題的分析就容易了。如兩個數的交換、三個數的比較、選擇法排序和冒泡法排序,這就要求我們要清楚這些演算法的內在含義,其中選擇法排序和冒泡法排序稍難,但只要明白排序的具體過程,對代碼的理解就不難了。如用選擇法對10個不同整數排序(從小到大),選擇法排序思路:設有10個元素a[1]~a[10],將a[1]與a[2]~a[10]比較,若a[1]比a[2]~a[10]都小,則不進行交換,即無任何操作;若a[2]~a[10] 中有一個比a[1]小,則將其中最大的一個(假設為a)與a[1]交換,此時a[1]中存放了10個中最小的數。第二輪將a[2]與a[3]~a[10]比較,將剩下9個數中的最小者a與a[2]交換,此時a[2] 中存放的10個數中第2小的數;依此類推,共進行9輪比較,a[1]到a[10]就已按從小到大的順序存放。即每一輪都找出剩下數中的最小一個,代碼如下:

for(i=1;i<=9;i++)

for(j=i+1;j<=10;j++)

if(a>a[j]

{temp=a;

a=a[j];

a[j]=temp;

}

結語:當我們把握好上述幾方面後,只要同學們能克服畏難、厭學、上課能專心聽講,做好練習與上機調試,其實C語言並不難學.

㈦ 想學c語言,新手應該如何學習c語言呢,高手給我個簡單易懂的教程。

首先我也是一C語言初學者。。看了許多關於學習很多C語言的方法!
所謂在沙場滾打了多年沒有看到豬走路也看過豬上路
以下是本人認為很好的學習語言教導。由於文章過長分為2節發表你!
1.
學習任何知識,循序漸進總是最好的方式。不幸的是,很多人明知這個道理,卻總是想走所謂的捷徑。如果你是一個剛剛開始學習編程的中學生,或者你是一個剛剛進入計算機學院的本科生,又或者你是一個決心在計算機領域有所建樹的初學者,你一定迫切地想知道,學習計算機技術,究竟應該從哪裡下手。

我的建議是:數學、英語、C語言。

數學和英語的重要性已經不需要我來強調,大家也許從幼兒園就開始學習它們了,請時刻把它們放在最重要的位置,無論你是否學習計算機。

為什麼C語言如此重要?我們從學習方法開始說起。書本上描述的東西,倘若不經過我們的親自實踐,是難以被徹底消化吸收的。計算機組成原理講解了浮點數的格式,如果我們能看到並分析內存或寄存器中某個浮點數的表示,那比單純的紙上談兵要強一千倍;數據結構與演算法似乎很難,如果你能把書上的例子實現出來,然後把習題做完,只需啃完一本好書,你也可以是演算法高手;操作系統原理其實不僅僅是原理,只有做一些內核方面的實驗才能真正有深刻理解;還有許多新潮的技術,比如JavaEE、PHP、Ajax、.NET等等等等,很多高手學習這些技術只需要很短的時間,不必說,他們肯定是C語言的高手。C語言幾乎是一切計算機技術的通用工具,包括計算機的各種基本理論。沒有精通C語言的決心,就不要涉足計算機領域。

為什麼是C語言而不是C++不是Java不是其它?因為C語言最簡單。你需要掌握一個語言工具,但也許並不需要「面向對象」、「模板」、「函數重載」等等一大堆概念。C語言足夠低級,非常非常地貼近計算機的底層結構,不會讓你迷失在概念的汪洋大海。除了「指針」,C語言沒有真正意義上的難點,而「指針」,恰恰是理解計算機底層結構精髓的關鍵所在。

所以,初學者們不必思考應該學什麼,等把C語言精通了,你自己便會知道下一步如何去走。如果你對操作系統內部感興趣,你便可以試著研究一下Unix的內核,除了C語言,你還需要一些匯編語言和保護模式的知識;如果你對演算法感興趣,那麼恭喜你,C語言足夠使用了;如果你對Windows編程感興趣,去看看《Windows程序設計》吧,作者清楚的告訴你「只需要C語言的基礎」;如果你對任何其它語言感興趣,盡管去學吧,不過還是建議先學C++,因為你需要一些「面向對象」的知識。

學習C語言不是一朝一夕的事情,但也不需要花費十年時間才能精通。如何以最小的代價學習並精通C語言是本文的主題。請注意,即使是「最小的代價」,也絕不是什麼捷徑,而是以最短的時間取得最多的收獲,同時也意味著你需要經歷艱苦的過程。

㈧ C語言 初學者 請指教

這是我的思路,程序如下
#include <stdio.h>
int main()
{
int day=1;
printf(" Mon Tue Wed Thu Fri Sat Sun\n");
printf(" ");//八個空格
while (day<=31)
{
printf("%4d",day);
if ((day+2)%7==0)//偏移量
{
printf("\n");
}
day++;
}
while(1);
return 0;
}

㈨ c語言學習

首先是純C的教材
第一本:H.M.Deitel和P.J.Deitel的《C HOW TO PROGRAM》(C程序設計教程)。
作者是父子,從事語言教材的編寫合計超過40年,本書被美國眾多高校選用為教材,既可入門也可翻閱,甚好。本FAQ作者認為如果你只打算看一本的話,那就選他好了。

第二本:Brian W.Kernighan和Dennis M.Ritchie 的《The C Programming Language 》(C程序設計語言)。
此書簡稱K&R,由C語言的創建者撰寫,是全球銷售最多的C語言教材,其品質不容置疑。不過不適合入門,適於在入門之後鞏固提高。實體書有原版和譯本購買,電子版英文較多。

第三本:譚浩強的《C程序設計》。
優點在於,面向中國學生,語言易於理解,而且全書篇幅小,看過的人多,容易找到人請教。但是各方面的概念不深入,淺嘗輒止,實際上還有些小錯誤,不是很嚴謹。因此適合第一次入門學習,例題做完基本就可以拋棄了。有實體書和電子版下載。同時配套有習題集和習題解答,適合自學。

第四本:王大剛先生的《C語言編程寶典》。
質量不錯,與老譚的書一樣非常適合中國學生,而且對於TC的圖形編程講解非常透徹。本人沒有發現實體書,可能只發布在網路上,在VCgood論壇有轉載:
http://www.vcgood.com/bbs/forum_posts.asp?TID=1560&PN=2
http://book.chinaz.com/C/C/index.html

第五本:無名作者的《C語言初學者入門講座》
VCgood論壇轉載,作者未知,質量同上一本。http://www.vcgood.com/bbs/forum_posts.asp?TID=1294&PN=4

第六本:Kenneth A.Reek 的《C和指針》
進階讀物,把指針一章演繹為一本書可見其技術精度。指針是C的靈魂,能領會本書中的理念,才能算是真正明白了C指針的奧妙,才算懂得了C。

第七本:Andrew Koenig 的 《C陷阱與缺陷》
進階讀物,在認真讀完上面的入門書之前,暫勿閱讀。本書暢銷14年歷久不衰,足證品質。

最後一本:ISO C89規范/C99規范
一切關於C語言的疑問,只有一件東西最權威,那就是ISO的規范。但這不是正式出版物,是類似法律文本的技術說明,而且只有英文版。新手閱讀,提防吐血而亡。

然後是C++的教材
C++比C復雜的多,所以教材也就紛繁蕪雜。既有綜合性入門性的,也有專項深入的,閱讀要循序漸進,以下分階段介紹(以下文字有部分引用自他人評介)。
首先是毫無基礎的時候,先要初步掌握語法並形成編程的概念

level 0:
H.M.Deitel和P.J.Deitel的《 C++ How to Program 》(C++大學教程)。
又是這對父子。有很多號稱C++入門的書,但經我的觀察,如果要選擇能推薦給毫無編程概念的新手用的書,這本算是佼佼者了。此父子的《C程序設計教程》我已推薦了。

仍然是K&R,Brian W.Kernighan和Dennis M.Ritchie 的《The C Programming Language》(C程序設計語言)。
盡管C++之父親口說,最好把C++看作一門新語言來學習,但我個人認為,一開始學習C至少有兩大好處。相比C++,C還是非常簡單的,易於掌握,避免你過早陷入C++的語法泥潭。同時,學C能讓你對計算機的底層運行有所認識,建立良好的概念。

錢能的《C++程序設計教程》
國內C++教材中較好的一本,作者是教師,總結多年教學實踐的經驗寫成的,比較適合國內學生。
PS:老譚也有一本C++教材,在此就不太推薦了,它完全是用C的思維來看C++。

當讀者有一定c/c++基礎
推薦的閱讀順序:
level 1
從Stanley B.lippman著 侯捷 譯的《essential c++》開始,短小精悍,可以對c++能進一步了解其特性。Stanley B.Lippman的職業是提供關於C++和面向對象的訓練、咨詢、設計和指導。他也是Bjarne Stroustrup領導的Bell實驗室Foundation項目的成員之一,負責C++程序設計環境中的對象模型部分。簡單說,他是C++的創建者之一。
以Stanley B.Lippman,Josee LaJoie,Barbara E.Moo的《c++ primer》作字典和課外讀物,因為太厚不可能一口氣看完,當然你也可以用它作為主力教材。Lippman說過了,Josee LaJoie是C++標准委員會原負責人,Barbara E.Moo 是獨立咨詢顧問,參與了第一個使用C++編寫的商業產品的開發,領導了公司中第一個C++編譯器項目。
C++之父Bjarne Stroustrup的《the c++ programming language》,簡稱BS的TCPL,全面而深入的書,缺點也是太厚。
這個階段 也可以延用前階段Detiel父子的教材。

level 2 這個階段就要養成好習慣
然後從Scott Meyers的《effective c++》開始轉職,這是聖經,請遵守10誡,要經常看,沒事就拿來翻翻
接著是 Herb Sutter的《exceptional c++》。此人是C++標准委員會的主席,主席說話,誰有異議。
順下來就是Scott Meyers的《more effective c++》和Herb Sutter的《more exceptional c++》,請熟讀並牢記各條款

level 3 這個階段 把C++的類搞透
Stanley B.lippman的《insied the c++ object model》(深度探索C++對象模型)看過後如一縷清風掃去一直以來你對語言的疑惑,你終於能明白compiler到底都背著你做了些什麼了,這本書要細細回味,比較難啃,最好反復看幾遍,加深印象。
看完上一本之後,這本Bjarne Stroustrup的《The design and evolution of c++》(C++的設計與演化)會重演一次當年C++他爹在設計整個語言過程中的歷程。
Stephen C. Dewhurst的《C++ Gotchas: Avoiding Common Problems in Coding and Design》(C++程序設計陷阱)會幫你在設計層面避免錯誤。

level 4 這個階段深入STL吧
Nicolai M.Josuttis的《the c++ standard library》(C++標准程序庫—自修教程與參考手冊) 是stl的字典,什麼都可以查得到。
Scott Meyers的《effective stl》,它和聖經一樣是你日常行為的規范。發現沒有,Scott Meyers先生一直在搞effective系列。
Matthew H. Austern的《generic programming and the stl》(泛型編程與STL)讓你從OO(面向對象)向GP(泛型編程)轉變。
光用不行,我們還有必要了解stl的工作原理,那麼侯捷的 《stl源碼剖析》會解決你所有的困惑。

level 5 徹底掌握模版泛型編程
對於c++無非是OO和GP,想進一步提升OO,Herb Sutter的《exeptional c++ style》是一本主席這么多年的經驗之談,是很長esp的。
一位stl高手是不能不去了解template的,《c++ template》是一本網路全書,足夠你看完後對於GP游刃有餘。
Andrei Alexandrescu的《modern c++ design》是太過聰明的人寫給明眼人看的。

level 6
這個時候,對於C++語法本身,你應該是已經到了隨心所欲的境界,你所要練習的大概就是大規模的C++程序的設計以及一些通用的高效庫的使用,以及為什麼要這樣做的理由。
所以,《C++ 輸入輸出流及本地化》《C++ Network Programming》《大規模C++程序設計》是你需要的。
同時,C++教材中的異類:Barbara E.Moo和Andrew Koenig的《Ruminations On C++》(C++ 沉思錄)是值得你一看的,他集中反映了C++的關鍵思想和編程技術,說明了C++是什麼樣的以及能夠做些什麼,不僅告訴你如何編程,還告訴你為什麼要這樣編程。本書曾出現在眾多的C++專家推薦書目中。

和C一樣,同樣有最後一本書
ISO+IEC+14882-1998 C++規范。這可不是寶典聖經,這就是C++的法律,一切疑問以此為准到此打住。不過,有個腳注,某些具體情況取決於編譯器實現。

接下來是Windows編程
至少在國內來說,Windows環境下的編程還是很有市場的。
第一本書:Charles Petzold 的 《Programming Windows》(Windows程序設計)。
如果說,在windows編程領域只能翻閱一本書的話,那就是他了。《Windows程序設計》由微軟出版社在1988年首次出版,後來被認為是這方面最好的導論性讀本。在1994年5月,Petzold作為僅有的七個人之一(並且是唯一的作家)被《Windows Magezine》和Microsoft公司授予Windows Pioneer獎,以表彰他對Microsoft Windows的成功做出的貢獻。這本書經典到這個程度,以至對於Windows程序員來說,「從Chares 的(Window程序設計)一書中尋找答案。」幾乎成了一句至理名言。
你可以在這個地方觀看到他的外觀,http://www.charlespetzold.com/pw5/,國內書店有售,電子版則需要仔細搜索。

第二本:Jeffrey Richter 的《》(Windows核心編程)和《Advanced Windows》(Windows 高級編程指南)
和上面這本書難分伯仲。這么說吧,你讀了之後就會後悔,後悔為什麼沒有早點讀他。建議先看高級,再看核心。

個人認為除非windows發生革命性的變化,否則看完這三本書,足以應付通常的Windows編程。

上面三本書介紹的是直接使用WindowsAPI實現應用,總的來說那是一種很基礎但很繁瑣的方式。Windows下有很多的編程庫可以使用,VC和BCB都自備了優良的庫。
在VC來說,存在版本的差異,如果是6.0版本,那麼你基本只有MFC這一種選擇,但對於2002以後的版本,包括新推出的2008,MFC、ATL、.net都不錯。
對於MFC。
要學會怎麼用,可以看一下這幾本:
微軟出版社授權的中文版系列書 由David J.Kruglinski,Scot Wingo,George Shepherd寫的《Programming Visual C++ 6.0 技術內幕(第5版)》,經典的「Visual C++技術內幕」的第5版。
清華大學出版社出版 楊永國 的《Visual C++ 6.0實用教程(第2版) 》,這本不是那麼經典,同類多得很,但好處是便宜,而且能夠買到,有些書已經買不到了。
如果想知道MFC的原理,侯俊傑先生的《深入淺出MFC 》(Dessecting MFC)就值得你仔細閱讀。

對於VC2002--2008中的.net,單獨講授的似乎目前還沒有像《Windows程序設計》那樣經典的書出現,畢竟.net出現的時間也不長。但把.net MFC ATL等綜合在一起講的,倒還是有一些。
由H.M.Deitel,P.J.Deitel,J.P.Liperi和C.H.Yaeger共同編寫的《Visual C++.NET:How To Program 》(Visual C++.NET大學教程)品質算是上乘。還記得Deitel這對父子作者么,在chinapub上可以看到父子倆合著的教材有47套之多,而且個個暢銷,我覺得他們儼然就是美國的譚浩強,只是水平高出不少。
George Shepherd,David Kruglinski 的 《Visual C++ .NET技術內幕(第6版)》,就是上面那本書的.net升級。
IVOR HORTON的《VISUAL C++ 2005入門經典》也可一看。

BCB在版本6以前用的是著名的VCL庫,BCBX另起爐灶,用的是wxWidgets庫。由於對BC,作者自己涉獵不多,所以這兩套庫的教材,請大家自行查找。

就像C++和C的規範文件一樣,Windows編程中,也有一件類似萬寶全書的神物,那就是Microsoft自己推出的MSDN。
MSDN是Microsoft Software Developer Network的簡稱。這是微軟的針對開發者的開發計劃。你可以在http://msdn.microsoft.com看到有關軟體開發的資料。在VisualStudio中包括MSDN Library的光碟,其中包括VisualStudio的幫助文件和許多與開發相關的技術文獻。MSDN Library每個季度更新一次,可以向微軟訂閱更新光碟,不過價格不便宜。
MSDN就是微軟的技術大全,所有微軟的軟體系統的開發的已公開資料,都在上面。如果在那裡也無法找到答案,那你只能想辦法咨詢微軟的內部工程師求得隱藏秘籍。不要妄想能夠完全閱讀它,3G容量的文檔(大部分是文本,不是圖片和視頻),實在太過巨大了。

㈩ 學習C語言

第一本:H.M.Deitel和P.J.Deitel的《C HOW TO PROGRAM》(C程序設計教程)。
作者是父子,從事語言教材的編寫合計超過40年,本書被美國眾多高校選用為教材,既可入門也可翻閱,甚好。本人認為如果你只打算看一本的話,那就選他好了。

第二本:Brian W.Kernighan和Dennis M.Ritchie 的《The C Programming Language 》(C程序設計語言)。
此書簡稱K&R,由C語言的創建者撰寫,是全球銷售最多的C語言教材,其品質不容置疑。不過不適合入門,適於在入門之後鞏固提高。實體書有原版和譯本購買,電子版英文較多。

第三本:譚浩強的《C程序設計》。
優點在於,面向中國學生,語言易於理解,而且全書篇幅小,看過的人多,容易找到人請教。但是各方面的概念不深入,淺嘗輒止,實際上還有些小錯誤,不是很嚴謹。因此適合第一次入門學習,例題做完基本就可以拋棄了。有實體書和電子版下載。同時配套有習題集和習題解答,適合自學。

第四本:王大剛先生的《C語言編程寶典》。
質量不錯,與老譚的書一樣非常適合中國學生,而且對於TC的圖形編程講解非常透徹。本人沒有發現實體書,可能只發布在網路上,在VCgood論壇有轉載:
http://www.vcgood.com/bbs/forum_posts.asp?TID=1560&PN=2
http://book.chinaz.com/C/C/index.html

第五本:無名作者的《C語言初學者入門講座》
VCgood論壇轉載,作者未知,質量同上一本。http://www.vcgood.com/bbs/forum_posts.asp?TID=1294&PN=4

第六本:Kenneth A.Reek 的《C和指針》
進階讀物,把指針一章演繹為一本書可見其技術精度。指針是C的靈魂,能領會本書中的理念,才能算是真正明白了C指針的奧妙,才算懂得了C。

第七本:Andrew Koenig 的 《C陷阱與缺陷》
進階讀物,在認真讀完上面的入門書之前,暫勿閱讀。本書暢銷14年歷久不衰,足證品質。

最後一本:ISO C89規范/C99規范
一切關於C語言的疑問,只有一件東西最權威,那就是ISO的規范。但這不是正式出版物,是類似法律文本的技術說明,而且只有英文版。新手閱讀,提防吐血而亡。