c語言學後感
㈠ c語言實訓心得
通過這次C語言實訓,提高了我掌握和利用C語言進行程設計的能力, 而且進一步理解和運用結構化程設計的思想和方法。初步掌握了開發一個小型實用系統的基本方法。學會了調試一個較長程序的基本方法。學會了利用流程圖或N-S圖表示演算法。掌握了書寫程設計開發文檔的能力.為以後的實訓打下堅實的基礎。
㈡ 學習C語言心得
學習C語言,我自己認為我還學得不錯,但是其實比起THQ來說那又算什麼喲!但是我並沒有灰心,還是堅持於自己的執著...
其實學習任何東西都要有一種堅持不懈精神;其次,要對他培養出一種興趣愛好.(興趣是最大的老師)
我就是先了解它是個什麼,在了解它能做什麼,能做出什麼好的什麼...(這樣可以鉤起一種好奇的心理)
樓上那位說得對,這些東西要多寫代碼,也就是要多實踐.
還有,我建議多到書店裡去看看相關的書籍(因為我就經常新華書店看書,一看就是幾個小時.)
㈢ 大一第一學期C語言實訓心得500字左右,急 急 急,在線等
樓主在這中間加減點東西,就可以用
過C語言實訓,讓我加深了對C語言的了解,而不只是單單的在課本中學到的那些理論,平時乏味的課程,通過自己動手親自編寫,變的生動有趣,而在自己動手的過程中,出現的問題很多,比理論要難的多,當一個程序寫完以後,經常會有很多錯誤而沒法解決。不過,通過幾天的實訓,逐漸積攢了一些經驗,有些錯誤可以很快就看出來。
這次實訓有很大的收獲,讓我對C語言有了更深的認識,平時在課堂上學到的東西可以自己動手編寫,將其轉化成一些實用的技能。如果是一個程序寫完一處錯誤也沒有,會有種成就感,於是興趣就來了,興趣來了,自然學的東西也就多了,能把理論變成實際的技能,讓我對C語言有了濃厚的興趣和更深層的認識。
C語言是一個有序的學習,學了最基本的替換,然後擴展到循環,嵌套,條理很清楚,不是一個零散的知識,實際上所有的課程都如此,不過通過實訓我也知道了自己的不足,存在的很多問題。
比如自己寫的寫的小程序出了問題,不會解決了就叫老師幫忙,雖然說一定意義上增加了師生之間的感情,但是會養成一種依賴的心理,碰到問題了個想到的是求助而不是自己獨立解決,所以以後要多多鍛煉自己的信心和增加自己的能力,爭取做到老師不在身邊的時候也可以完成一些簡單的程序編寫與錯誤排除。
還有自己的基礎知識不扎實,遇到的問題,沒有很好的邏輯思維,親自編寫一個陌生的程序的時候會有種無法下手的感覺,找不到突破口。通過實訓,逐漸理清了順序,對於簡單的程序和一些相對比較繁瑣的嵌套,循環,不在是看著一頭霧水。其實只要理清了思路,把基礎知識掌握了,然後有條不紊的分析,一步一步理解,C語言還是很有意思的課程。
自己親自動手編寫程序讓我增加了對C語言程序開發環境的了解,在上課的時候老師就講,學習C語言最重要的是學習C語言的邏輯思維,不管以後從事什麼行業,學習C語言都對自己的職業很有幫助,如果是從事編程工程工作的話,就更有幫助了,即使以後的編程工作可能不用C語言,但是擁有扎實的C語言基礎是對工作很有用的。
當初在初步接觸C語言的時候,看著一堆「奇形怪狀」的符號,覺得甚是無聊,通過這次實訓,擺脫了那種似懂非懂的狀態!
感謝學校安排這次實訓和老師的耐心講解,讓我學到了很多知識,在實訓過程中,同學之間的相互探討,老師的循循善誘,最終讓我們達到了舉一反三的效果,在學知識的同時,也增加了同學老師之間的感情。希望以後還會有更多類似的實訓課程,在有限的大學時間內學到更多的實用技能,為以後的工作打下一個良好的基礎
㈣ 尋求學習C語言的心得
上回說的是一些小問題,真正編東西,學東西還有許多要注意的地方。
由於本人也是剛學不久,水平有限,說錯的地方望大家原諒。謝謝!
一、多看代碼
在有一定基礎以後一定要多看別人的代碼。注意代碼中的演算法和數據結構。畢竟學C之後的關口就是演算法和數據結構。提到數據結構,指針是其中重要的一環,絕大多數的數據結構是建立在指針之上的,如鏈表、隊列、樹、圖等等,所以只有學好指針才能真正學好C。別的方面也要關注一下,諸如變數的命名、庫函數的用法等等。有些庫函數是經常用到的。對於這些函數的用法就要牢牢記住。
二、要自己動手
編程序是個實乾的活,光說不練不行。剛開始學的時候可以多練習書上的習題。對於自己不明白的地方,自己編個小程序實驗一下是最好的方法,能給自己留下深刻的印象。自己動手的過程中要不斷糾正自己不好的編程習慣和認識錯誤。有一定的基礎以後可以嘗試編一點小游戲,文曲星之類的電子詞典上小游戲很多,照著編作為練習。基礎很扎實的時候,可以編一些關於數據結構方面的東西,諸如最經典的學生管理系統。之後.....學匯編、硬體知識。
三、選擇一個好的編譯器
本人前段時間就遭受了一個編譯器的折磨。這個編譯器帶了個自運行程序,自動修改IE主頁。叫什麼名字就不說了。言歸正傳,英文版Turbo C v2.0沒話說,最經典的C編譯器(下載地址:http://www4.skycn.com/soft/2151.html),其次推薦一個win-tc 1.91,支持windows下的編譯器。(下載地址:http://www4.skycn.com/soft/17869.html)
四、關於養成良好的編程習慣
基本上每本C教材上都要提到。作為新手這條一定要時時遵守。記的一位網友發過評論:高手寫一堆亂七八糟的代碼就是藝術,新手寫一堆亂七八糟的代碼就是垃圾。就象古代賢人寫錯字叫通假字,小學生寫錯字叫錯別字,一個道理。具體方面:
1、在比較復雜的代碼後面要有注釋。如果光溜溜一堆代碼,別人就不可能看懂你的代碼,而且也不利於查找錯誤。除非你一直編東西給自己看。能在代碼里說明白的就一定要在代碼里體現。比如變數名、函數名,在命名的時候盡量說明是干什麼用的。
2、注意語句的嵌套不能過長,一般來說,一段代碼里Tab要少於8個。簡單說就是語句最多8個嵌套。對於新手來說,這個標准還要下降。有一個好習慣是,把主函數盡量寫簡短。經常看到別人的代碼是主函數只有幾行,幾個函數調用,而定義全在主函數外部。這樣一是減少了主函數內部的嵌套,二是比較精簡,容易讀懂。
3、注意語句的選擇。並不是分支語句就用if循環就用while、for。在適當的情況下switch和do while語句也是要用的。在某些時候,switch語句比if語句更加精練明了,而do while比while少一個循環。
㈤ 學習c語言的感想
不同的人學習C語言都有不同的感想,可以根據自己的感想,自行將學習中的感受寫下來即可。
㈥ c語言學習總結300字
1.最初接觸C語言時要弄清楚各種變數的定義方法,特別是常用的類型,int、float、char等等,還要掌握各種類型的輸入、輸出格式。這一步做到後,上機就沒有多大的問題了。
2.在對函數的學習過程中,一定要弄明白函數的作用和具體格式。值得強調的是在寫循環程序時,一定要弄清楚循環的條件。
3.對每一個知識點,都應該立即編出對應的程序,有時可能還會有語法錯誤,碰到更好的方法也可以試一下,很多時候你想想代碼怎麼寫和你真的寫出來了是有很大的差距的。
4.學習時一定有很多疑惑的,要及時弄清楚。
5.找一本好的課本,我並不推薦譚浩強的《C語言程序設計》,因為這本書把知識點講的太細碎太理論。我推薦《c語言程序設計:現代方法》這本書,書中奧妙非凡,值得深讀體驗。
6.不要認為上課認真聽課有用,寫程序不可能從課堂上學會太多的,偉大的程序員或者是很多的黑客,不是老師教出來的,你的有自己的想法自己的思路自己的,學習一門語言才有用,也才會得到別人傳教不了的東西。
㈦ 求C語言的學習心得 或者 方法總結 什麼的
* 掌握C語言的基本語法和規定。 * 掌握程序設計基本演算法和思路,開拓思路, * 提高上機操作能力,掌握上機調試程序的方法 * 培養自學能力,強調自主學習。 * 養成良好的程序設計習慣。 通過總結多年的教學經驗,總結學生在學習過程中具有規律性的特點,可以發現,在本課程學習過程中學生經常出現下面這些問題: * 注重理論學習,忽視上機編程實踐,造成"只能用筆在紙上編程"的奇怪現象。特別是一些女同學,一到機器前面就手忙腳亂,如果程序再出現錯誤,就更不知道該如何查找錯誤,如何排除錯誤了。 *入門時自以為難度大,產生畏難情緒,總是怕,最後因為怕學不好而導致沒有學好。 *前期沒有抓緊,希望通過突擊完成課程學習。本課程要靠平時的積累,幾乎不能靠臨時突擊,由於前面基礎補扎實,到了後面已經無法彌補。 *太注重學習語句的語法規定,忽視了對編程的思路和方法的訓練。有些同學再學習結束的感覺就是:對每一個語句的語法和每一條規定都明白,就是面對實際問題的時候不知道該如何思考,該如何編程。 *急於求成,總想編寫綜合性的程序,忽視基本概念,忽視基本功的訓練和練習。在編寫程序中發現問題,一追根源,全是概念或基礎問題。 1.不要看到別人的回復第一句話就說:給個代碼吧!你應該想想為什麼。當你自己想 出來再參考別人的提示,你就知道自己和別人思路的差異。 2.初學者請不要看太多太多的書那會誤人子弟的,先找本系統的學,很多人用了很久 都是只對部分功能熟悉而已,不系統還是不夠的。 3.看幫助,不要因為很難而自己是初學者所以就不看;幫助永遠是最好的參考手冊, 雖然幫助的文字有時候很難看懂,總覺得不夠直觀。 4.不要被對象、屬性、方法等詞彙所迷惑;最根本的是先了解最基礎知識。 5.不要放過任何一個看上去很簡單的小問題--他們往往並不那麼簡單,或者可以引伸 出很多知識點;不會舉一反三你就永遠學不會。 6.知道一點東西,並不能說明你會寫腳本,腳本是需要經驗積累的。 7.學腳本並不難,JSP、ASP、PHP等等也不過如此--難的是長期堅持實踐和不遺餘力的博覽 群書; 8.看再多的書是學不全腳本的,要多實踐 9.把時髦的技術掛在嘴邊,還不如把過時的技術記在心裡; 10.學習腳本最好的方法之一就是多練習; 11.在任何時刻都不要認為自己手中的書已經足夠了; 12.看得懂的書,請仔細看;看不懂的書,請硬著頭皮看; 13.別指望看第一遍書就能記住和掌握什麼--請看第二遍、第三遍; 14.請把書上的例子親手到電腦上實踐,即使配套光碟中有源文件; 15.把在書中看到的有意義的例子擴充;並將其切實的運用到自己的工作中; 16.不要漏掉書中任何一個練習--請全部做完並記錄下思路; 17.當你用腳本到一半卻發現自己用的方法很拙劣時,請不要馬上停手;請盡快將余 下的部分粗略的完成以保證這個代碼的完整性,然後分析自己的錯誤並重新編寫和工 作。 18.別心急,寫腳本確實不容易;水平是在不斷的實踐中完善和發展的; 19.每學到一個腳本難點的時候,嘗試著對別人講解這個知識點並讓他理解----你能 講清楚才說明你真的理解了; 20.記錄下在和別人交流時發現的自己忽視或不理解的知識點; 21.保存好你做過的所有的源文件----那是你最好的積累之一; 22.對於網路,還是希望大家能多利用一下,很多問題不是非要到論壇來問的,首先 你要學會自己找答案,比如google、網路都是很好的搜索引擎,你只要輸入關鍵字就 能找到很多相關資料,別老是等待別人給你希望,看的出你平時一定也很懶! 23.到一個論壇,你學會去看以前的帖子,不要什麼都不看就發帖子問,也許你的問 題早就有人問過了,你再問,別人已經不想再重復了,做為初學者,誰也不希望自己 的帖子沒人回的。 24.雖然不是打擊初學者,但是這句話還是要說:論壇論壇,就是大家討論的地方, 如果你總期望有高手總無償指點你,除非他是你親戚!!討論者,起碼是水平相當的 才有討論的說法,如果水平真差距太遠了,連基本操作都需要別人給解答,誰還跟你 討論呢。能找到很多相關資料,別老是等待別人給你希望,看的出你平時一定也很懶! 25.到一個論壇,你學會去看以前的帖子,不要什麼都不看就發帖子問,也許你的問 題早就有人問過了,你再問,別人已經不想再重復了,做為初學者,誰也不希望自己 的帖子沒人回的。 26.雖然不是打擊初學者,但是這句話還是要說:論壇論壇,就是大家討論的地方, 如果你總期望有高手總無償指點你,除非他是你親戚!!討論者,起碼是水平相當的 才有討論的說法,如果水平真差距太遠了,連基本操作都需要別人給解答,誰還跟你 討論呢。 別做浮躁的人 浮躁的人容易問:我到底該學什麼;----別問,學就對了; 浮躁的人容易問:JS有錢途嗎;----建議你去搶銀行; 浮躁的人容易說:我要中文版!我英文不行!----不行?學呀! 浮躁的人分兩種:只觀望而不學的人;只學而不堅持的人; 浮躁的人永遠不是一個
㈧ 學習C語言有感~
那個叫【批處理】程序,其實你上面提到的那個處理垃圾的程序不要以為真的很厲害,很神奇,當你學過dos的話,那個程序可以說是很簡單的東西;
也就是將那些以.tmp,.log等為後綴的文件和回收站,cookies里邊的文件del【刪除】罷了,/f是不顯示提示,/s是本用戶;echo是顯示;
不要小看C/C++,你可以學習MFC和win32編程,就會發現C++的強大之處,而且現在基本的驅動程序都是用c語言寫的,還有嵌入式程序開發,c語言也是首選語言,如今全國的商業銀行的櫃面程序,也是用linux環境的C語言寫的;
好好學習,不要以為如今學的簡單,其實以後你會發現,那些大的難的程序,都可以分為一個個簡單的程序。
㈨ 請教學習c語言的心得
C語言學習心得
前言
指針,一直被認為是C語言中的精華。只有掌握了指針,你才能說你學會了C語言。
相當初,我是把指針這一章足足看了三遍才算是「學了這一章」下面的文字是阿容
寫的,對我學習C語言的指針幫助很大。好東西不敢獨享,今天把它貼出來,希望
大家也會有所幫助。
第一章。指針的概念
指針是一個特殊的變數,它裡面存儲的數值被解釋成為內存里的一個地址。
要搞清一個指針需要搞清指針的四方面的內容:指針的類型,指針所指向的
類型,指針的值或者叫指針所指向的內存區,還有指針本身所佔據的內存區。讓
我們分別說明。
先聲明幾個指針放著做例子:
例一:
(1)int *ptr;
(2)char *ptr;
(3)int **ptr;
(4)int (*ptr)[3];
(5)int *(*ptr)[4];
如果看不懂後幾個例子的話,請參閱我前段時間貼出的文章<<如何理解c和c
++的復雜類型聲明>>。
1。 指針的類型。
從語法的角度看,你只要把指針聲明語句里的指針名字去掉,剩下的部分就
是這個指針的類型。這是指針本身所具有的類型。讓我們看看例一中各個指針的
類型:
(1)int *ptr; //指針的類型是int *
(2)char *ptr; //指針的類型是char *
(3)int **ptr; //指針的類型是 int **
(4)int (*ptr)[3]; //指針的類型是 int(*)[3]
(5)int *(*ptr)[4]; //指針的類型是 int *(*)[4]
怎麼樣?找出指針的類型的方法是不是很簡單?
2。指針所指向的類型。
當你通過指針來訪問指針所指向的內存區時,指針所指向的類型決定了編譯
器將把那片內存區里的內容當做什麼來看待。
從語法上看,你只須把指針聲明語句中的指針名字和名字左邊的指針聲明符
*去掉,剩下的就是指針所指向的類型。例如:
(1)int *ptr; //指針所指向的類型是int
(2)char *ptr; //指針所指向的的類型是char
(3)int **ptr; //指針所指向的的類型是 int *
(4)int (*ptr)[3]; //指針所指向的的類型是 int()[3]
(5)int *(*ptr)[4]; //指針所指向的的類型是 int *()[4]
在指針的算術運算中,指針所指向的類型有很大的作用。
指針的類型(即指針本身的類型)和指針所指向的類型是兩個概念。當你對C越
來越熟悉時,你會發現,把與指針攪和在一起的「類型」這個概念分成「指針的
類型」和「指針所指向的類型」兩個概念,是精通指針的關鍵點之一。我看了不
少書,發現有些寫得差的書中,就把指針的這兩個概念攪在一起了,所以看起書
來前後矛盾,越看越糊塗。
3。 指針的值,或者叫指針所指向的內存區或地址。
指針的值是指針本身存儲的數值,這個值將被編譯器當作一個地址,而不是
一個一般的數值。在32位程序里,所有類型的指針的值都是一個32位整數,因為
32位程序里內存地址全都是32位長。
指針所指向的內存區就是從指針的值所代表的那個內存地址開始,長度為si
zeof(指針所指向的類型)的一片內存區。以後,我們說一個指針的值是XX,就相
當於說該指針指向了以XX為首地址的一片內存區域;我們說一個指針指向了某塊
內存區域,就相當於說該指針的值是這塊內存區域的首地址。
指針所指向的內存區和指針所指向的類型是兩個完全不同的概念。在例一中
,指針所指向的類型已經有了,但由於指針還未初始化,所以它所指向的內存區
是不存在的,或者說是無意義的。
以後,每遇到一個指針,都應該問問:這個指針的類型是什麼?指針指向的
類型是什麼?該指針指向了哪裡?
4。 指針本身所佔據的內存區。
指針本身佔了多大的內存?你只要用函數sizeof(指針的類型)測一下就知道
了。在32位平台里,指針本身占據了4個位元組的長度。
指針本身占據的內存這個概念在判斷一個指針表達式是否是左值時很有
============================
7月11日
c語言心得一
2.數據輸出
c語言不提供輸入輸出語句,輸入輸出操作是由c的庫函數完成。但要包含頭文件stdio.h。
putchar( ) 向終端輸出一個字元
printf( )的格式字元:
① d格式符 用來輸出十進制整數
%d 按整型數據的實際長度輸出
%md 使輸出長度為m,如果數據長度小於m,則左補空格,如果大於m,則輸出實際長度
%ld 輸出長整型數據
② o格式符 以八進制形式輸出整數
③ x格式符 以十六進制形式輸出整數
④ u格式符 用來輸出unsigned型數據,以十進制形式輸出
⑤ c格式符 用來輸出一個字元
⑥ s格式符 輸出一個字元串
%s 輸出實際長度字元串
%ms 輸出的串佔m列,如果串長度小於m,左補空格,如果大於m,實際輸出
%-ms輸出的串佔m列,如果串長度小於m,右補空格,
%m.ns 輸出佔m列,但只取字元串中左端n個字元並靠右對齊
%-m.ns m、n含義同上,靠左對齊,如果n>m,則m自動取n值
⑦ f格式符 以小數形式輸出實數
%f 整數部分全部輸出,小數部分輸出6位
%m.nf 輸出數據共佔m列,其中有n位小數。如果數值長度小於m,左補空格
%-m.nf 同上,右補空格
⑧ e格式符 以指數形式輸出實數
%e 系統指定6位小數,5位指數(e+002 )
⑨ g格式符 輸出實數,根據數值大小,自動選f格式或e格式
3.數據輸入
getchar( ) 從終端輸入一個字元
scanf( 格式控制,地址列表) 標准C scanf中不使用%u,對於unsigned型數據,以%d或%o或%x輸入。%後的*,用來跳過它相應的數據。輸入數據時不能規定精度如scanf( "%7.2f", &a );是不合法的。
部分字元串處理函數
puts(字元數組) 將一個字元串輸出到終端。
gets(字元數組) 從終端輸入一個字元串到字元數組,並且得到一個函數值,為該字元數組的首地址
strcat(字元數組1,字元數組2) 連接兩個字元數組中的字元串,數組1必須足夠大。
Strcpy(字元數組1,字元串2) 將字元串2拷貝到字元數組1中。
Strcmp(字元串1,字元串2) 比較字元串,相等返回0,字元串1>字元串2,返回正數,小於返回負數。
Strlen(字元數組) 求字元串長度。
Strlwr( 字元串) 將字元串中的大寫字母轉換成小寫
Strupr( 字元串) 將字元串中的小寫字母轉換成大寫
以上是一些比較常用的字元串處理函數。
動態存儲變數與靜態存儲變數
從變數值存在的時間(生存期)角度來分,可分為靜態存儲變數和動態存儲變數。靜態存儲指在程序運行期間給變數分配固定的存儲空間,動態存儲指程序運行期間根據需要動態的給變數分配存儲空間。
C語言中,變數的存儲方法分為兩大類:靜態存儲類和動態存儲類,具體包括:自動的(auto),靜態的(static),寄存器的(register),外部的(extern)。
1) 局部變數的存儲方式
函數中的局部變數如不作專門說明,都之auto的,即動態存儲的,auto可以省略。局部變數也可以定義為static的,這時它在函數內值是不變的。靜態局部變數如不賦初值,編譯時系統自動賦值為0,動態局部變數如不賦初值,則它的值是個不確定的值。C規定,只有在定義全局變數和局部靜態變數時才能對數組賦初值。為提高執行效率,c允許將局部變數值放在寄存器中,這種變數叫register變數,要用register說明。但只有局部動態變數和形式參數可以作為register變數,其它不行。
2) 全局變數的存儲方式
全局變數在函數外部定義,編譯時分配在靜態存儲區,可以在程序中各個函數所引用。多個文件的情況如何引用全局變數呢?假如在一個文件定義全局變數,在別的文件引用,就要在此文件中用extern對全局變數說明,但如果全局變數定義時用static的話,此全局變數就只能在本文件中引用了,而不能被其它文件引用。
3) 存儲類別小結
從作用域角度分,有局部變數和全局變數
局部變數:自動變數,即動態局部變數(離開函數,值就消失)
靜態局部變數(離開函數,值仍保留)
寄存器變數(離開函數,值就消失)
(形參可定義為自動變數和寄存器變數)
全局變數:靜態全局變數(只限本文件引用)
全局變數(允許其它文件引用)
從存在的時間分,有靜態存儲和動態存儲
動態存儲:自動變數(本函數內有效)
寄存器變數(本函數內有效)
形參
靜態存儲:靜態局部變數(函數內有效)
靜態全局變數(本文件內有效)
全局變數(其它文件可引用)
從變數值存放的位置分
靜態存儲區:靜態局部變數
靜態全局變數
全局變數
動態存儲區:自動變數和形參
寄存器內:寄存器變數
7. 內部函數和外部函數
內部函數:只能被本文件中的其它函數調用,定義時前加static,內部函數又稱靜態函數。
外部函數:可以被其它文件調用,定義時前加extern,如果省略,則隱含為外部函數,在需要調用此函數的文件中,一般要用extern說明。
c編譯系統在對程序進行通常的編譯之前,先進行預處理。c提供的預處理功能主要有以下三種:1)宏定義 2)文件包含 3)條件編譯
1. 宏定義
不帶參數的宏定義
用一個指定的標識符來代表一個字元串,形式:#define 標識符 字元串
幾點說明:
1) 宏名一般用大寫
2) 宏定義不作語法檢查,只有在編譯被宏展開後的源程序時才會報錯
3) 宏定義不是c語句,不在行末加分號
4) 宏名有效范圍為定義到本源文件結束
5) 可以用#undef命令終止宏定義的作用域
6) 在宏定義時,可以引用已定義的宏名
帶參數的宏定義
定義形式:#define 宏名(參數表) 字元串
這和函數有些類似,但他們是不同的:
1) 函數調用時,先求實參表達式值,再代入形參,而宏只是簡單替換,並不求值
2) 函數調用是在程序運行時分配內存的,而宏展開時並不分配內存,也沒有返回值的概念
3) 對函數中的實參和形參都要定義類型,而且要求一致,宏名無類型,其參數也沒有類型。
4) 函數只有一個返回值,而宏可以得到幾個結果
5) 宏替換不佔運行時間,只佔編譯時間,而函數調用占運行時間
2. 文件包含處理
#include "文件1" 就是將文件1的全部內容復制插入到#include位置,作為一個源文件進行編譯。
在#include命令中,文件名可以用" "也可以用< >,假如現在file1.c中包含file2.h文件," "表示系統先在file1.c所在目錄中找file2.h,如果找不到,再按系統指定的標准方式檢索目錄,< >表示系統直接按指定的標准方式檢索目錄。所以用" "保險一點。
3. 條件編譯
條件編譯指不對整個程序都編譯,而是編譯滿足條件的那部分。條件編譯有以下幾種形式:
1)#ifdef 標識符
程序段1
#else
程序段2
#endif
它的作用:當標識符在前面已經被定義過(一般用#define),則對程序段1編譯,否則對程序段2編譯。
2)#ifndef 標識符
程序段1
#else
程序段2
#endif
它的作用和#ifdef相反,當標識符沒被定義過,對程序段1編譯,否則對程序段2編譯。
3)#if 表達式
程序段1
#else
程序段2
#endif
它的作用:當表達式值為真(非0)時,對程序段1編譯,否則對程序段2編譯。
http://spaces.msn.com/lxj5816778/Blog/cns!1pmxrkmy9J0DF4J21zFuHFzQ!134.entry
㈩ 討論學習C語言演算法的心得
關鍵是:存在 對比 客觀 簡化 實踐
存在:演算法中存在什麼,目的是什麼,怎麼實現的,必要的話可以了解一下何人發明的,因為經典演算法的設計者本身都是著作等身的,由此你可以通過「存在」了解一個事實:演算法不是孤立的,是新和舊之間的更替。
對比:對比類似和不同演算法,同在哪裡,不同在哪裡,以及這些差異導致了什麼結果,過程有什麼差異,這個過程為什麼會導致那個結果。
客觀:不憑空臆測,演算法本身有什麼思想以及借用了什麼數學思想實現不能扭曲,以及何種狀態適合這樣的演算法。
簡化:當你深刻了解演算法的本質(通過推導、證明和實際運用和改進),就不可避免的要把不同演算法有機的結合在一起,不是線性的也不是單純的組合,而是從內涵和外延的角度站在不同的立場把演算法劃分成不同的層次,每個層次什麼時候運用。
簡化操作往往要運用一些更加直觀的快速的方法:聯想。
關於聯想,通常,你需要在思考線性表的時候想到一串隔開的紙帶,當細化到鏈表還是順序表時,需要加以限制為是否可隨機存取還是順序存取。
演算法本身都可以通過數據結構表現得很清晰,這時候運用演算法的時候,就可以脫離實際的ADT載體。
分類討論以及回溯通常要結合樹去分析,就一目瞭然。
字元串處理以及跟優先順序和記憶索引等問題通常要結合棧結構去設計演算法。
路徑問題結合圖結構設計演算法。
當然,要加深對C語言演算法的設計能力,需要從最根源出發:實踐。
有專門的機構提供了實踐平台,檢驗你設計的演算法是否高效。
可以去搜索ACM POJ ZOJ 等關鍵字,找到相關的演算法在線競賽網站,從最基本的題開始訓練。
另外,好的書籍是成功的一半:
《演算法導論》 (雖然名為導論,但是演算法著作中最權威也最有深度的一本書)
《數據結構(C語言)》(嚴蔚敏的著作,一般重點高校使用,雖然比較抽象,但比較簡化)
《演算法與數據結構(C語言)》(電子科技出版社,對演算法的實際實現講的比較透徹)
Finally,you need 'coding' and programming again and again.