A. c語言編程題目,寫出代碼
#include<stdio.h>
intmain(void)
{
inta,b,c;
printf("請輸入三角形的三條邊: ");
scanf("%d%d%d",&a,&b,&c);
if((a==b||b==c||a==c)&&(a+b>c&&b+c>a&&a+c>b)?1:0)
printf("輸入的三邊可以構成一個等腰三角形。 ");
else
printf("輸入的三邊不能構成一個等腰三角形。 ");
return0;
}
B. 最簡單的C語言代碼
最簡單的C語言代就是輸出「helloWord」,通常是作為初學編程語言時的第一個程序代碼。具體代碼如下:
#include <stdio.h>
int main(){
printf("Hello, World! ");
return 0;
}
(2)編程精粹編寫高質量c語言代碼擴展閱讀:
1、程序的第一行#include <stdio.h>是預處理器指令,告訴 C 編譯器在實際編譯之前要包含 stdio.h 文件。
2、下一行intmain()是主函數,程序從這里開始執行。
3、下一行printf(...)是C中另一個可用的函數,會在屏幕上顯示消息"Hello,World!"。
4、下一行return0;終止main()函數,並返回值0。
C. C語言編寫代碼
代碼:
#include
int main()
{
printf("Hello World.
");
return 0;
}
(3)編程精粹編寫高質量c語言代碼擴展閱讀:
代碼解析:
1.其中第一行的#include ,這行代碼是編譯預處理指令,用來提供輸入輸出函數的聲明和宏的定義,全局量的定義這些信息。stdio.h是系統提供的一個文件名,stdio是為standard input & output的縮寫,意為標准輸入輸出,文件後綴.h的意思是頭文件(header file),因為這些文件都是放在程序各文件模塊的開頭的。總的來說,輸入輸出函數的相關信息已事先放在stdio.h文件中,然後,要用#include指令把這些信息調入供使用。
2.void main(){},main是主函數的函數名,表示這是一個主函數,每一個C源程序都必須有且只能有一個主函數。
3.函數調用語句,即調用printf("Hello World
");語句 ,printf函數的功能是把要輸出的內容送到顯示器去顯示,即列印輸出Hello World到windows 控制台下,其中
為轉義字元,具有轉行的功能。
4.printf函數是一個由系統定義的標准函數,可在程序中直接調用。
D. 高質量c語言
首先,一樓的回答很具有參考性!
高質量c語言,這個涉及到c語言的運行以及鏈接等。這個不僅僅包括c語言的前期的編程,同時,要考慮到c程序在實際的運行過程中的節省運行時間,和節省電腦的內存。(這兒的高質量c語言,可不能脫離c這個范疇,如果你說的是c++,那麼,以下內容都是廢話——不同的程序編寫語言就)
而譚老爺子的c語言教程,這個是最基礎的入門。但是是經典的入門手冊。很規范。為了便於初學者的學習和理解,很多的東西都細化了。這樣,它不可避免的有些啰嗦,冗餘。會在運行的過程中造成一些時間、內存的浪費。
所以,如果你要是還沒有入門的話,那麼,建議你學習譚老爺子的 c程序設計。 扎實的基礎,有助於你以後的學習和編程。
如果,你已近入門,上升到了深化階段(估計這樣,你也不會在這兒發問了O(∩_∩)O~)。那麼,你必須學會編寫高質量的程序。
E. 如何編寫高質量的代碼!
載選<編程思想>
非程序員 編 著
代碼永遠會有BUG,在這方面沒有最好只有更好。高效是程序員必須作到的事情,無錯是程序員一生的追求。復用、分而治之、折衷是代碼哲學的基本思想。模塊化與面向對象是實現高效無錯代碼的方法。高效無錯代碼需要思想與實踐的不斷反復。
1.2.1 命名約定
命令規范基本上採用了微軟推薦的匈牙利命名法,略有簡化。
1. 常量
常量由大寫字母和數字組成,中間可以下劃線分隔,如 CPU_8051。
2. 變數
變數由小寫(變數類型)字母開頭,中間以大寫字母分隔,可以添加變數域前綴(變數活動域前綴以下劃線分隔)。如: v_nAcVolMin(交流電壓最小值)。
變數域前綴見下表
局部變數,如果變數名的含義十分明顯,則不加前綴,避免煩瑣。如用於循環的int型變數 i,j,k ;float 型的三維坐標(x,y,z)等。
3. 函數名一般由大寫字母開頭,中間以大寫字母分隔,如SetSystemPara。函數命名採用動賓形式。如果函數為最底層,可以考慮用全部小寫,單詞間採用帶下劃線的形式。如底層圖形函數:pixel、lineto以及讀鍵盤函數get_key 等。
4. 符號名應該通用或者有具體含義,可讀性強。尤其是全局變數,靜態變數含義必須清晰。C++中的一些關鍵詞不能作為符號名使用,如class、new、friend等。符號名長度小於31個,與ANSI C 保持一致。命名只能用26個字母,10個數字,以及下劃線『_』來組成,不要使用『$』『@』等符號。下劃線『_』使用應該醒目,不能出現在符號的頭尾,只能出現在符號中間,且不要連續出現兩個。
5. 程序中少出現無意義的數字,常量盡量用宏替代。
1.2.2 使用斷言
程序一般分為Debug版本和Release版本,Debug版本用於內部調試,Release版本發行給用戶使用。
斷言assert是僅在Debug版本起作用的宏,它用於檢查「不應該」發生的情況。以下是一個內存復製程序,在運行過程中,如果assert的參數為假,那麼程序就會中止(一般地還會出現提示對話,說明在什麼地方引發了assert)。
//復制不重疊的內存塊
void memcpy(void *pvTo, void *pvFrom, size_t size)
{
void *pbTo = (byte *) pvTo;
void *pbFrom = (byte *) pvFrom;
assert( pvTo != NULL && pvFrom != NULL );
while(size - - > 0 )
*pbTo + + = *pbFrom + + ;
return (pvTo);
}
assert不是一個倉促拼湊起來的宏,為了不在程序的Debug版本和Release版本引起差別,assert不應該產生任何副作用。所以assert不是函數,而是宏。程序員可以把assert看成一個在任何系統狀態下都可以安全使用的無害測試手段。
以下是使用斷言的幾個原則:
1)使用斷言捕捉不應該發生的非法情況。不要混淆非法情況與錯誤情況之間的區別,後者是必然存在的並且是一定要作出處理的。
2)使用斷言對函數的參數進行確認。
3)在編寫函數時,要進行反復的考查,並且自問:「我打算做哪些假定?」一旦確定了的假定,就要使用斷言對假定進行檢查。
4)一般教科書都鼓勵程序員們進行防錯性的程序設計,但要記住這種編程風格會隱瞞錯誤。當進行防錯性編程時,如果「不可能發生」的事情的確發生了,則要使用斷言進行報警。
1.2.3 優化/效率
規則一:對於在中斷函數/線程和外部函數中均使用的全局變數應用volatile定義。例如:
volatile int ticks;
void timer(void) interrupt 1 //中斷處理函數
{
ticks++
}
void wait(int interval)
{
tick=0;
while(tick<interval);
}
如果未用volatile,由於while循環是一個空循環,編譯器優化後(編譯器並不知道此變數在中斷中使用)將會把循環優化為空操作!這就顯然不對了。
規則二:不要編寫一條過分復雜的語句,緊湊的C++/C代碼並不見到能得到高效率的機器代碼,卻會降低程序的可理解性,程序出錯誤的幾率也會提高。
規則三:變數類型編程中應用原則:盡量採用小的類型(如果能夠不用「Float」就盡量不要去用)以及無符號Unsigned類型,因為符號運算耗費時間較長;同時函數返回值也盡量採用Unsigned類型,由此帶來另外一個好處:避免不同類型數據比較運算帶來的隱性錯誤。
1.2.4 其他
規則一:不要編寫集多種功能於一身的函數,在函數的返回值中,不要將正常值和錯誤標志混在一起。
規則二:不要將BOOL值TRUE和FALSE對應於1和0進行編程。大多數編程語言將FALSE定義為0,任何非0值都是TRUE。Visual C++將TRUE定義為1,而Visual Basic則將TRUE定義為-1。例如:
BOOL flag;
…
if(flag) { // do something } // 正確的用法
if(flag==TRUE) { // do something } // 危險的用法
if(flag==1) { // do something } // 危險的用法
if(!flag) { // do something } // 正確的用法
if(flag==FALSE) { // do something } // 不合理的用法
if(flag==0) { // do something } // 不合理的用法
規則三:小心不要將「= =」寫成「=」,編譯器不會自動發現這種錯誤。
規則四:建議統一函數返回值為無符號整形,0代表無錯誤,其他代表錯誤類型。
1.3 模塊化的C編程
C語言雖然不具備C++的面向對象的成分,但仍應該吸收面向對象的思想,採用模塊化編程思路。面向對象的思想與面向對象的語言是兩個概念。非面向對象的語言依然可以完成面向對象的編程,想想C++的誕生吧!
C++沒有理由對C存在傲慢與偏見,不是任何場合C++方法都是解決問題的良葯,譬如面對嵌入式系統效率和空間的雙重需求。注意我們談的是方法,而不是指編譯器。
C在軟體開發上存在的首要問題是缺乏對數據存取的控制(封裝),C編程者樂而不疲的使用著大量extern形式的全局變數在各模塊間交換著數據,「多方便啊」編程者樂曰,並傳授給下一個編程者。這樣多個變數出現在多個模塊中,剪不斷理還亂,直到有一天終於發現找一個「人」好難。一個東西好吃,智者淺嘗之改進之,而愚者只會直至撐死。
這世上本沒有什麼救世主,應在C上多下功夫,程序員和C締造者早就有過思考,相信野百合也有春天,還是看看C語言如何實現模塊化編程方法,在部分程度上具備了OO特性封裝與多態。
在具體闡述之前,需要明確生存期與可見性的概念。生存期指的是變數在內存的生存周期,可見性指的是變數在當前位置是否可用。兩者有緊密聯系,但不能混為一談。一個人存在但不可見只能解釋成上帝或靈魂,一個變數存在但不可見卻並非咄咄怪事,模塊化方法正是利用了靜態函數、靜態變數這些「精靈」們特殊的生存期與可見性。
最後需要明確一點的是這里的模塊是以一個.C文件為單位。
規則一:利用函數命名規則和靜態函數
模塊中不被其他模塊調用的內部函數採用以下命名規則:用全部小寫,單詞間採用帶下劃線的形式。如底層圖形函數:pixel、lineto以及讀鍵盤函數get_key等。這些函數應定義為static靜態函數,這樣在其他模塊錯誤地調用這些函數時編譯器能給出錯誤(如BC編譯器)。(注意:有些編譯器不能報告錯誤,但為了代碼風格一致和函數層次清晰,仍建議這樣作)。
規則二:利用靜態變數
模塊中不能被其他模塊讀寫的全局變數應採用static聲明,這樣在其他模塊錯誤地讀寫這些變數時編譯器能給出警告(C51編譯器)或錯誤(BC編譯器)。
規則三:引入OO介面概念和指針傳參
模塊間的數據介面(也就是函數)應該事先較充分考慮,需要哪些介面,通過介面需要操作哪些數據,盡量作到介面的不變性。
模塊間地數據交換盡量通過介面完成,方法是通過函數傳參數,為了保證程序高效和減少堆棧空間,傳大量參數(如結構)應採用傳址的方式,通過指針作為函數參數或函數返回指針,盡量杜絕extern形式的全局變數,請注意是extern形式的全局變數,模塊內部的全局變數是允許和必須的。
傳指針參數增加的開銷主要是作參數的指針和局部指針的數據空間(嵌入式系統(如C51)往往由於堆棧空間有限,函數參數會放到外部RAM的堆棧中),增加的代碼開銷僅是函數的調用,帶來的是良好的模塊化結構,而且使用介面函數會比在代碼中多處直接使用全局變數大大節約代碼空間。
需注意一點的事物總有他的兩面性,水能載舟,也能覆舟。對於需要頻繁訪問的變數如果仍採用介面傳遞,函數調用的開銷是巨大的,這時應考慮仍採用extern全局變數。
以下演示了兩個C模塊交換數據:
//Mole1.C
OneStruct* void GetOneStruct(void); //獲取模塊1數據介面
void SetOneStruct(OneStruct* pOneStruct); //寫模塊1數據介面
struct OneStruct
{
int m¬_imember;
//……
}t1; //模塊1的數據
//t1初始化代碼…..
OneStruct* void GetOneStruct(void)
{
OneStruct* pt1; //只需定義一個局部變數
t1.imember=15;
pt1=&t1;
return pt1;
}
void SetOneStruct(OneStruct* pOneStruct)
{
t1.imember=pOneStruct->imember;
//…….
}
//Mole2.C
void OperateOneStruct(void); //模塊2通過模塊1提供的介面操作模塊1的數據
OneStruct* void GetOneStruct(void);
void SetOneStruct(OneStruct* pOneStruct);
void OperateOneStruct(void)
{
OneStruct* pt2; //只需定義一個局部變數
pt2=GetOneStruct(); //讀取數據
SetOneStruct(pt2); //改寫數據
}
採用介面訪問數據可以避免一些錯誤,因為函數返回值只能作右值,全局變數則不然。
例如 cOneChar == 4; 可能被誤為cOneChar = 4;
規則四:有限的封裝與多態
不要忘記C++的class源於C的struct,C++的虛函數機制實質是函數指針。為了使數據、方法能夠封裝在一起,提高代碼的重用度,如對於一些與硬體相關的數據結構,建議採用在數據結構中將訪問該數據結構的函數定義為結構內部的函數指針。這樣當硬體變化,需要重寫訪問該硬體的函數,只要將重寫的函數地址賦給該函數指針,高層代碼由於使用的是函數指針,所以完全不用動,實現代碼重用。而且該函數指針可以通過傳參數或全局變數的方式傳給高層代碼,比較方便。例如:
struct OneStruct
{
int m¬_imember;
int (*func)(int,int);
//……
}t2;
F. 高分求c語言程序設計實例精粹(譚明金版)源程序!!
源碼在附件壓縮文件里。
G. 求C語言編程序代碼,寫的全的100分就是你的~
//輸入功能:輸入30名學生的學號、班級、姓名、上機起始時間
#include<time.h>
#include<stdio.h>
#include<string.h>
#include<Windows.h>
#define N 20
#define M 100
struct student
{ char id[N];
char theclass[N];
char name[N];
char ontime[N];
}
student[M];
int n;
void addition()
{ int i;
printf("\n請輸入錄入學生信息的總數:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{ printf("\n\t請輸入第%d個學生學號(20s):",i);
scanf("%s",student[i-1].id);
printf("\n\t請輸入第%d個學生班級(20s):",i);
scanf("%s",student[i-1].theclass);
printf("\n\t請輸入第%d個學生姓名(20s):",i);
scanf("%s",student[i-1].name);
printf("\n\t請輸入第%d個學生上機時間(20s)(例:02):",i);
scanf("%s",student[i-1].ontime);
printf("\n\t提示:您已成功錄入第%d條信息\n",i);
}
}
//計算功能:計算每個下機學生的上機費用,每小時1元。
//(上機費用=上機時間* 1.0/h ,不足一小時按一小時計算)
void calculate()
{ int hours;
char times[30];
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime(&rawtime );
strcpy(times,asctime(timeinfo));
printf("\t所有學生上機費用如下:\n");
for(int i=1;i<=n;i++)
{printf("學生%d費用:",i); if((student[i-1].ontime[3]-48)*10+student[i-1].ontime[4]>(times[14]-48)*10+times[15]) hours=(times[11]-48)*10+times[12]-(student[i-1].ontime[0]-48)*10-student[i-1].ontime[1];
else hours=(times[11]-48)*10+times[12]-(student[i-1].ontime[0]-48)*10-student[i-1].ontime[1]+1;
printf("%d\n",hours);
}
}
void calculate()
{ int hours;
char times[30];
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime(&rawtime );
strcpy(times,asctime(timeinfo));
printf("\t所有學生上機費用如下:\n");
for(int i=1;i<=n;i++)
{ printf("學生%d費用:",i); if((student[i-1].ontime[3]-48)*10+student[i-1].ontime[4]>(times[14]-48)*10+times[15]) hours=(times[11]-48)*10+times[12]-(student[i-1].ontime[0]-48)*10-student[i-1].ontime[1];
else hours=(times[11]-48)*10+times[12]-(student[i-1].ontime[0]-48)*10-student[i-1].ontime[1]+1;
printf("%d\n",hours);
}
}
//查詢功能:按條件(班級、學號、姓名)顯示學生的上機時間。
void search()
{ int i,b,c,count;
do
{ char find[20];
printf("\n請選擇查詢方式:1.根據學號查詢;2.根據班級查詢;3.根據姓名查詢;4.根據上機時間:");
scanf("%d",&b);
switch(b)
{ case 1: count=PF_FLOATING_POINT_PRECISION_ERRATA; printf("\n**請輸入學生的學號:");
scanf("%s",find);
for(i=0;i<n;i++)
{
if (strcmp(student[i].id,find)==0)
{
count++;
if(count==PF_FLOATING_POINT_EMULATED)
printf("學生學號\t學生班級\t學生姓名\t上機時間\n"); printf("%8s%15s%15s%17s",student[i].id,student[i].theclass, student[i].name,student[i].ontime);
}
}
if(!count)
printf("****提示:該生不存在");
goto A;
case 2: count=PF_FLOATING_POINT_PRECISION_ERRATA;
printf("\n**請輸入學生的班級:");
scanf("%s",find);
for(i=0;i<n;i++)
{ if (strcmp(student[i].theclass,find)==0)
{ count++;
if(count==PF_FLOATING_POINT_EMULATED)
printf("學生學號\t學生班級\t學生姓名\t上機時間\n"); printf("%8s%15s%15s%17s",student[i].id,student[i].theclass, student[i].name,student[i].ontime);
}
}
if(!count)
printf("提示:該生不存在!.....");
goto A;
case 3: count=PF_FLOATING_POINT_PRECISION_ERRATA;
printf("\n**請輸入學生的姓名:");
scanf("%s",find);
for(i=0;i<n;i++)
{
if (strcmp(student[i].name,find)==0)
{
count++;
if(count==PF_FLOATING_POINT_EMULATED)
printf("學生學號\t學生班級\t學生姓名\t上機時間\n"); printf("%8s%15s%15s%17s",student[i].id,student[i].theclass, student[i].name,student[i].ontime);
}
}
if(!count) printf("提示:該生不存在!請重新輸入!");
goto A;
case 4: count=PF_FLOATING_POINT_PRECISION_ERRATA;
printf("\n**請輸入學生的上機時間:");
scanf("%s",find);
for(i=0;i<n;i++)
{ if (strcmp(student[i].ontime,find)==0)
{ count++;
if(count==PF_FLOATING_POINT_EMULATED)
printf("學生學號\t學生班級\t學生姓名\t上機時間\n"); printf("%8s%15s%15s%17s",student[i].id,student[i].theclass, student[i].name,student[i].ontime);
}
}
if(!count)
printf("****提示:該生不存在!");
goto A;
default:printf("*****提示:輸入錯誤");
}
A:printf("\n\t**1.繼續\n\t**0.返回主菜單");
printf("\n\t 請輸入您的選擇:");
scanf("%d",&c);
}
while(c);
}
//機器使用情況的顯示(顯示方式不限但要一目瞭然)
void menu()
{
printf("\n\t*******************歡迎進入機房收費管理系統!*******************\n");
printf("\t* 1.錄入功能2.計算功能*\n");
printf("\t* 3.查詢功能0.-*EXIT*- *\n"); printf("\t***************************************************************\n");
printf("\n\t 請輸入您的選擇:");
}
void main()
{ system("color 5f");
int a;
C:menu();
scanf("%d",&a);
switch(a)
{
case 0:printf("正在退出......\n謝謝使用本系統,再見");break;
case 1:addition();
goto C;
/*錄入功能*/
case 2:calculate();
goto C; /*瀏覽功能*/
case 3:search();
goto C; /*查詢功能*/
}
}
/*說明:以上程序有錯,自己調試,改一下吧。大概就是這樣了,作業還是要自己慢慢做哈嘛。才會懂,程序要自己多看多寫,多改,才會懂的。*/
H. C語言程序設計實例精粹_譚明金
兩年了還看這個。。。。換吧。。。《C和指針》,《C專家編程》,看看國外的書吧。。。不是國內的書可以比擬的
I. 學習C語言用的書
和其他語言相比(例如C++),C語言是一門比較「小」的語言,可以在較短的時間內入門,但是由於C的很強的表達能力和太多的細枝末節,要想精通比較困難。想精通有3種途徑:1)閱讀經典書籍,只讀經典。2)多看優良的源代碼。3)學習軟體設計,並應用於日常編程。C語言比較經典的書也就那麼幾本,全部看下來也花不了很多時間。語言的優劣問題更像是一個信仰的問題,沒有太多討論的必要,而且大多編程原則適用於任何語言。在這里只討論我視野所及的C語言書籍。
舉報.
推薦 15人 全部圖書(8)
2009-10-19 07:44:50添加 1. C語言程序設計
作者: 譚浩強
出版社: 清華大學出版社
評語 : 第0本 《C語言程序設計》譚浩強我們很少有學C語言的啟蒙書不是用這本的。如果你從來沒接觸過C語言,這本書還是適合作為入門的。盡管大學畢業之後就不再碰這本書,但是還記得當初這本書看了3遍、指針那部分看了至少5遍的那種心情。以後看了其它的書,才對C語言中的一些內容有更深的理解。相信大多數第一次接觸C語言的人都有類似的感覺。不要期望一本啟蒙的書帶給你想要的一切,一切才剛剛開始。
加入購書單 已在購書單
2009-10-19 07:48:08添加 2. C程序設計語言
作者: Brian W.Kernighan/Dennis M.Ritchie
出版社: 清華大學出版社
評語 : 第1本 《C程序設計語言》 Brian W. Kernighan / Dennis M. Ritchie 這本書又稱為 R&K C,還有誰能比C語言之父對C語言更有發言權的呢?推薦看英文版。你會驚訝於在短短不到200頁的篇幅內,這兩位牛人將C語言描述的這么清晰。即使不專門學C語言的人也可以拿出來翻翻
加入購書單 已在購書單
2009-10-19 07:44:50添加 3. C陷阱與缺陷
作者: 凱尼格
出版社: 人民郵電出版社
評語 : 第2本 《C陷阱與缺陷》Andrew Koenig Andrew Koenig的成名作,能幫助初學者減少90%的錯誤。一些錯誤(比如賦值符、運算符優先順序等)還是不時的會在自己的程序里出現,只是已經打過預防針了,很容易發現。另外作者寫了一本《Accelerated C++》,據說是C++的最佳入門書,狠贊!!
加入購書單 已在購書單
2009-10-19 07:44:50添加 4. C專家編程
作者: Peter Van Der Linden
出版社: 人民郵電出版社
評語 : 第3本 《C專家編程》(LinDen,P.V.D)一看書名就知道這丫不能拿來入門用的,第一次看的時候夠折磨大腦的。作者聲稱,編程的唯一原因是因為樂趣。相比之前的幾本書,這本書還介紹C語言運行的環境,更全面地考察了C語言。深入分析了C語言中一些容易混淆的概念,如復雜的聲明和定義、數組和指針、鏈接和運行時庫、內存等。很值得一讀。順便一提:鏈接庫可參考《深入理解計算機系統》的動態鏈接庫一章,寫得更易讀
加入購書單 已在購書單
2009-10-19 07:44:50添加 5. 編程精粹
作者: Steve Maguire
出版社: 人民郵電出版社
評語 : 第4本 《編程精粹:編寫高質量C語言代碼》 《Writing Solid Code》 Steve Maguire 這是我讀到C語言書中最驚嘆的一本,盡管寫出沒有bug的程序不太可能,但按照作者提供的方法,可以離這個目標很近。本書關注的更多是怎麼使用C語言開發工業級產品的問題。這本書源自作者十幾年不斷的追問自己兩個簡單的問題: 1)怎樣才能自動地查出這個錯誤? 2)怎樣才能避免這個錯誤? 「他的另一部名著Debugging the Development Process(中文版《微軟
加入購書單 已在購書單
2009-10-19 07:44:50添加 6. C Interfaces and Implementations
作者: David R. Hanson
出版社: Addison-Wesley Professional
評語 : 第5本 《C Interfaces and Implementations》 David R. Hanson 這本據說為唯一一本能和R&K C並駕齊驅的書,可惜中文版眾口一致說太爛,無處可載電子版,影印版跳票多年,原版USD 54.99實在承受不起,囊中羞澀,奈何奈何。想念多年,至今不能一睹芳容,深以為憾。
加入購書單 已在購書單
2009-10-19 07:44:50添加 7. C標准庫
作者: P. J. Plauger
出版社: 人民郵電出版社
評語 : 前面5本差不多夠了,另外推薦兩本,精力過剩的可以翻翻第6本 《C標准庫》P. J. Plauger 本書介紹C標准庫的實現,書中有較為詳盡的代碼。雖然這本書年代久遠,現在的實現肯定和以前也有差別,但是還是很有參考價值,特別是對C標准庫的實現有興趣的人。中文版太貴,英文電子版看得太累,還是以後有地方借的時候再繼續看。
加入購書單 已在購書單
2009-10-19 07:44:50添加 8. C語言參考手冊
作者: 哈比森
出版社: 機械工業出版社
評語 : 第7本 《C語言參考手冊》拿來備查的,C語言的任何細節幾乎都能在其中找到借到。書的第一部分介紹C語言語法細節。第二部分介紹運行時庫,可以和《C標准庫》參考閱讀。