重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
第一課C語言程序設計基礎
我們提供的服務有:成都網站建設、網站建設、微信公眾號開發、網站優化、網站認證、漯河ssl等。為數千家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的漯河網站制作公司
本課主要知識點:
1.知識點:C程序基礎
l C語言是一種結構化程序設計語言。三種基本結構:順序、選擇、循環。
例1:(2010-09-11)以下關于結構化程序設計的敘述中正確的是(C)
A)一個結構化程序必須同時由順序、分支、循環三種結構組成
B) 結構化程序使用goto語句會很便捷
C) 在C語言中,程序的模塊化是利用函數實現的
D)由三種基本結構構成的程序只能解決小規模的問題
例2:(2011-03-26)計算機高級語言程序的運行方法有編譯執行和解釋執行兩種,以下敘述中正確的是(A)
A)C語言程序僅可以編譯執行
B)C語言程序僅可以解釋執行
C)C語言程序既可以編譯執行又可以解釋執行
D)以上說法都不對
【解析】計算機不能直接理解高級語言,只能直接理解機器語言,所以必須要把高級語言翻譯成機器語言,計算機才能執行高級語言編寫的程序。翻譯的方式有兩種,一個是編譯,一個是解釋。C語言程序僅可以編譯。
例3:(2011-03-26)以下敘述中錯誤的是( D)
A)C語言的可執行程序是由一系列機器指令構成的
B)用C語言編寫的源程序不能直接在計算機上運行
C)通過編譯得到的二進制目標程序需要連接才可以運行
D)在沒有安裝C語言集成開發環境的機器上不能運行C源程序生成的.exe文件
【解析】C程序開發過程:編輯—(.c)編譯—(.obj)鏈接—可執行文件(.exe)
2.知識點:C語言程序的構成
l C程序是由函數構成的,一個C程序有且僅有一個main函數。一個函數由兩部分組成:函數的首部和函數體。函數體包括聲明部分和執行部分。一個C程序總是從main函數開始執行(即程序的入口),由main函數結束,(即程序的出口)。
例1:(2010-03-12)以下敘述正確的是(B)
A)C語言程序是由過程和函數組成的
B) C語言函數可以嵌套調用,例如:fun(fun(x))
C) C語言函數不可以單獨編譯
D)C語言中除了main函數,其他函數不可作為單獨文件形式存在
例2:(2011-09-11)以下敘述中錯誤的是 (C)
A.C語言編寫的函數源程序,其文件名后綴可以是C
B.C語言編寫的函數都可以作為一個獨立的源程序文件
C.C語言編寫的每個函數都可以進行獨立的編譯并執行
D.一個C語言程序只能有一個主函數
3.知識點:標識符
l 命名規則:
①標識符中只能包含字母(a-z,A-Z),數字(0-9),下劃線(_)。
②第一個字符必須是字母或下劃線。
分類
③用戶自定義的標識符 ⅰ格式合法,ⅱ不能使用關鍵字,ⅲ見名知意
例1:(2010-03-13)以下C語言用戶標識符中,不合法的是(D)
A)_1 B)AaBc C)a_b D)a-b
4.知識點:數據類型
例1:(2010-03-16)以下關于C語言數據類型使用的敘述中錯誤的是(D)
A)若要準確無誤差的表示自然數,應使用整數類型
B)若要保存帶有多位小數的數據,應使用雙精度類型
C)若要處理如“人員信息”等含有不同類型的相關數據,應自定義結構體類型
D)若只處理“真”和“假”兩種邏輯值,應使用邏輯類型
【解析】結構數據類型是根據已定義的一個或多個數據類型用構造的方法來定義的,一個結構類型的值可以分解成若干個“成員”或“元素”,每個“成員”都是一個基本數據類型或又是一個構造類型,C項正確。C語言沒有邏輯類型,故D項錯誤
推薦:
1.C語言編程寶典
2.C In China
3.百度C語言吧
4.編程中國
5.C語言之家
6.C語言基地
c語言基地 有名校教師 視頻 教學
我認為要學好C語言首先必須了解等級考試C語言的大綱和內容,以及各種輔助材料的用途,這是學好C的基礎。從以前的經驗以及考網上的一些信息可知,要自學C語言必須準備以下資料:
1、 教材:大家現在都公認是清華大學譚浩強主編的那本,當然有其他的也可以,如高校出版社的。
2、 習題集:我認為清華大學的《C語言樣題匯編》不錯。書后面附有答案。
3、 上機練習:我認為南開大學的那個可以,最好是在考前從頭到尾做一遍。答案可以去考網下載區下載。
4、 大綱:這個肯定要的,可以在考網二級版那里去下,然后打印出來。
5、 自學計劃:為了做到有計劃有目的地學習C語言,大家可以根據自己的學習(或工作)情況,制定一個自學計劃,循序漸進地學習。
6、 模擬盤:為了更好地熟悉考場環境,下一個模擬盤是必不可少的,可以在。下載,注意,在下載時要把鎖匙盤一起下回來,否則不能進入考試環境。
7、 教學光盤:如果能買到C語言的教學光盤,那當然更好,這樣可以更直觀地學習C語言了。
下面從微觀上針對C語言的幾個重點和難點,逐個談談具體的自學方法。
二 如何學習C語言的運算符和運算順序
C語言的運算功能十分豐富,運算種類遠多于其它程序設計語言。因此,當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。
初學者往往對此感到非常困難,覺得C語言學習太繁雜,其實只要我們對此合理進行分類,找出它們與我們在數學中所學到運算之間的不同點之后,記住這些運算也就不困難了,有些運算符在理解后更會牢記心中,將來用起來得心應手,而有些可暫時放棄不記,等用到時再記不遲。
下面是所有的運算符按優先級不同分類列表:(對不起,因為表格顯示不正常,已被我刪除大家可以看書上的)
表中列出15種優先級的運算符,從高到低,優先級為1 ~ 15,最后邊一欄是結合規則,除第2、3級和第14級為從右至左結合外,其它都是從左至右結合,它決定同級運算符的運算順序。
下面我們通過幾個例子來說明:
(1) 3*20/4%10 這個表達式中出現3種運算符,是同級運算符,運算順序按從左至右結合,因此先計算3 * 20=60,然后被4除,結果為15,最后是%(求余數)運算,所以表達式的最終結果為15%10 = 5
(2)a = 3;b = 5;c =++ a* b ;d =a + +* b;
例子中的“;”是C語言的語句分隔符,執行順序為從左到右,第1條語句執行后a的值為3,第2條語句執行后b的值為5,第3條語句中有兩個運算符前置+ +和*,按表中所列順序,+ +先執行,*后執行,所以+ + a執行后,a的值為4,由于+ +為前置運算,所以a的值4參與運算,C的值為20,最后執行第4條語句,由于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。
三、如何學習C語言的四種程序結構
(1)順序結構
這種結構的程序比較簡單,就是按照語句的排列順序依次執行的機制。順序結構的執行順序是自上而下,依次執行,因此編寫程序也必須遵守這一規定,否則你的程序執行結果就不對。
例如;a = 3,b = 5,現交換a,b的值,正確的程序為:
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。而大多數情況下順序結構都是作為程序的一部分,與其它結構一起構成一個復雜的程序,例如分支結構中的塊體、循環結構中的循環體等。
C語言自學方法(2)
(2) 分支結構
分支結構與順序結構不同,其執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。分支結構的程序設計方法的關鍵在于構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的分支語句。
分支結構適合于帶有邏輯條件判斷的計算,設計這類程序時往往都要先繪制其程序流程圖,然后根據程序流程寫出源程序,這樣做把程序設計分析與語言分開,使得問題簡單化,易于理解。程序流程圖是根據解題分析所繪制的程序執行流程圖。
學習分支結構不要被分支嵌套所迷惑,只要弄清基本的分支結構,嵌套結構也就不難了。嵌套只不過是分支塊體中又包括分支語句而已,不是新知識,只要你基礎知識扎實,分支嵌套也難不住你,下面我們重點討論幾種基本的分支結構的學習方法。
①If(條件)
{
塊
}
這種分支結構中的塊可以是一條語句,此時“{
}”可以省略,也可以是多條語句。它有兩條分支路徑可選,一條是條件為真,執行塊,另一條是條件不滿足,跳過塊。
如,計算x的絕對值,根據絕對值定義,我們知道,當x=0時,其絕對值不變,而x0時其絕對值是為x的反號,因此程序段為:if(x0)
x=-x;
②if(條件)
else
這是典型的分支結構,如果條件成立,執行塊1,否則執行塊2,塊1和塊2都有1條或若干條語句構成。
如:求ax^2+bx+c=0的根
分析:因為當b^2-4ac=0時,方程有兩個實根,否則(b^2-4ac0)有兩個共軛復根。其程序段如下:
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) ;
else if(條件2)
else if(條件3)
……
else if(條件n)
else
④switch語句:
switch
語句也是多分支選擇語句,又稱為多路開關語句,到底執行哪一塊,取決于開關設置,也就是表達式的值與常量表達式相匹配的那一路,它不同if—else 語句,它的所有分支都是并列的,程序執行時,由第一分支開始查找,如果相匹配,執行其后的塊,接著執行第2分支,第3分支……的塊,直到遇到break語句;如果不匹配,查找下一個分支是否匹配。
(3)循環結構:
循環結構可以減少源程序重復書寫的工作量,用來描述重復執行某段算法的問題,這是程序設計中最能發揮計算機特長的程序結構,C語言中提供四種循環,即goto循環、while循環、do –while循環和for循環。
四種循環可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提昌用goto循環,所以下面我們重點講解另外的三種循環。
常用的三種循環結構學習的重點在于弄清它們相同與不同之處,以便在不同場合下使用,大家好好看一下書中三種循環的格式和執行順序,如何替換使用,如把while循環的例題,用for語句重新編寫一個程序,這樣能更好地理解它們的作用。
注意:在while和do—while循環體內和for
循環中的第3語句中,應包含趨于結束的語句(如I++,I--),否則就可能成了一個死循環,這也是初學者的一個常見錯誤。
下面我們來討論下這三種循環的異同之處:
用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程序=主函(main)+若干個函數。
在程序設計中,常將一些常用的功能模塊寫成函數,也可以將大程序段分割成若干函數,前者目的在于減少重復編寫程序段的工作量,后者目的在于縮短模塊長度,以便程序閱讀方便。
一個源程序文件由一個或多個函數組成,它是一個編譯單位,而一個C程序由一個或多個源程序文件組成。對較大的程序,往往分成多個文件,這樣可以分別編寫、分別編譯,提高高調試效率,一個源程序文件可以被多個C程序公用。
C程序的的執行是從main()函數開始,調用其它函數后流程回到main函數,在main中結束整個函數運行,main函數的稱是系統規定的,用戶可以修改其內容即函數體,但不能修改其名稱和參數,一個C程序必須有一個main函數,也只能有一個main函數。
所有函數都是平行的,即在定義函數時是互相獨立的一個函數度不從屬于另一個函數,即函數不能嵌套定義,但可以互相調用,但不能調用main函數。
函數分成兩類,即標準函數和用戶自定義函數,標準函數又稱庫函數,由系統提供,用戶可直接調用,C語言提供了豐富的庫函數,請考生在編寫C程序時查閱教材后的函數說明,這可節省你的編程工作量;用戶自定義函數由編程者自己編寫.
回答者:阿拉蕾啊呀 - 試用期 一級 7-23 11:13
提問者對于答案的評價:
太好了,非常感謝!
評價已經被關閉 目前有 1 個人評價
好
100% (1) 不好
0% (0)
對最佳答案的評論
19798802 C語言新手群快加入吧!!!!!!1
評論者: 549045259 - 見習魔法師 二級
浮躁的人容易問:我到底該學什么;----別問,學就對了;浮躁的人容易說:我要中文版!我英文不行!----不行?學呀!浮躁的人分兩種:只觀望而不學的人;只學而不堅持的人;浮躁的人永遠不是一個高手。
評論者: hnytgl - 試用期 一級
其他回答共 4 條
1.讀代碼!
2.改代碼!
3.寫代碼!
回答者:liuding1213 - 見習魔法師 二級 7-18 21:10
找一本經典教材,例如譚浩強的《C語言陳序設計》。
找一本習題集,要有全部詳細解釋的那種,最好有實例的代碼答案。
花一個月把課本看完,務求理解。不理解的地方也不要死摳,做上標記等以后再解決。然后開始做題,不要因為題目簡單就放過,往往簡單背后蘊藏大的發現。也可以快速看完書,然后復習,每復習完一章后把習題集上的題目好好做一遍。
做題時最好在計算機上把不明白的地方親自實踐一下,然后在筆記本上寫下自己的感想和心得。考試前翻一翻筆記即可。
千里之行始于足下,行動吧!
推薦下載:1、C語言學習系統 V3.2 介紹:C語言是一門非常有用高級語言,是您踏上計算機學習之路的必修課,幾乎所有的計算機考試都要用到C語言,C語言以其強大的功能一直獨領編程語言的先鋒。C語言學習系統是一款C語言輔助學習軟件,其功能強大,界面友好,能讓您在短時間內學懂,學通C語言。C語言學習系統主要功能如下:1、“基礎知識”:收錄了18大類70多個知識點,通過詳盡的解釋說明,學習C語言的基礎知識。2、“函數說明”:收錄了近400個函數,并包括詳細使用說明和使用實例,并提供“按順序查看”和“按類別查看”兩種瀏覽方式。還可以用“按函數名”和“按功能”兩種方式搜索函數。3、“編程實例”:收錄了50個編程實例,配有詳細的實例代碼,使您能快速的進階C語言學習。4、“習題練習”:精心收錄了近500道C語言習題,并配有詳細的解釋說明,使您在C語言學習之路上事關功倍。5、“測試” :按時間按題量測試自己的學習效果。 6、“二級模擬“:收錄了四套200道二級模擬題,使您輕松通過國家計算機等級考試二級C語言。7、“我的題庫”:方便用戶對題目的管理,用戶可以添加自己的注釋。
需要
重磅通知:C Primer Plus 第6版 中文版的配套習題解答書出版啦!
?
人郵異步社區
官方微信:異步社區,人民郵電出版社創辦的IT專業圖書社區
來自專欄異步圖書
《C Primer Plus 第6版 中文版》的《C Primer Plus 第6版 中文版習題解答》隆重出版。北京師范大學名師詳細剖析所有題目,全面提升C編程能力的優選編程練習冊。學習C Primer Plus的不再愁自己啃習慣集了。
本在在對《C Primer Plus 第6版》中文版每章內容做了簡單總結和梳理的基礎上,對所有復習題和編程練習做了詳細的解答。每章首先提供了思維導圖,方便讀者快速查詢常用的知識點,然后簡明扼要地概括和提煉了每章的難點和重點知識。本書既可作為學習筆記,也可以作為知識點速查手冊,旨在給讀者提供一些參考。
習題解答截圖展示:
本書的復習題部分通過詳細的分析和解答,不僅給出了題目的答案,還強調如何利用C語言的基本原理和基本方法分析、解決問題的過程。在編程練習中,首先按照程序開發的基本流程,通過分析題目要求的基本功能,設計相關的程序流程和基本算法,隨后實現代碼。其目的是通過對題目的分析和實現,不斷鍛煉和培養讀者分析、設計程序的基本能力。本書提供了所有編程練習的完整代碼,并且在代碼中添加了詳細的注釋幫助讀者理解程序意圖。
程序設計中的任何一個問題都會有很多種解決方案,本書提供的只是其中一種基本的解決方案。本書盡量提供一種簡單的、易于讀者理解的解決方案,以盡量清晰、可讀的形式呈現給讀者,并不能保證其在算法上最優,代碼實現上也遠不夠簡潔、優美。讀者可以在本書提供的解決方案和代碼的基礎上,不斷優化和改進,實現更優的算法。
選擇C語言的理由
在過去40多年里,C語言已成為最重要、最流行的編程語言之一。它的成長歸功于使用過的人都對它很滿意。過去20多年里,雖然許多人都從C語言轉而使用其他編程語言(如,C++、Objective C、Java等),但是C語言仍憑借自身實力在眾多語言中脫穎而出。在學習C語言的過程中,會發現它的許多優點(見圖1.1)。下面,我們來看看其中較為突出的幾點。
圖1.1 C語言的優點
1.2.1 設計特性
C是一門流行的語言,融合了計算機科學理論和實踐的控制特性。C語言的設計理念讓用戶能輕松地完成自頂向下的規劃、結構化編程和模塊化設計。因此,用C語言編寫的程序更易懂、更可靠。
1.2.2 高效性
C是高效的語言。在設計上,它充分利用了當前計算機的優勢,因此C程序相對更緊湊,而且運行速度很快。實際上,C語言具有通常是匯編語言才具有的微調控制能力(匯編語言是為特殊的中央處理單元設計的一系列內部指令,使用助記符來表示;不同的CPU系列使用不同的匯編語言),可以根據具體情況微調程序以獲得最大運行速度或最有效地使用內存。
1.2.3 可移植性
C是可移植的語言。這意味著,在一種系統中編寫的C程序稍作修改或不修改就能在其他系統運行。如需修改,也只需簡單更改主程序頭文件中的少許項即可。大部分語言都希望成為可移植語言,但是,如果經歷過把IBM PC BASIC程序轉換成蘋果BASIC(兩者是近親),或者在UNIX系統中運行IBM大型機的FORTRAN程序的人都知道,移植是最麻煩的事。C語言是可移植方面的佼佼者。從8位微處理器到克雷超級計算機,許多計算機體系結構都可以使用C編譯器(C編譯器是把C代碼轉換成計算機內部指令的程序)。但是要注意,程序中針對特殊硬件設備(如,顯示監視器)或操作系統特殊功能(如,Windows 8或OS X)編寫的部分,通常是不可移植的。
由于C語言與UNIX關系密切,UNIX系統通常會將C編譯器作為軟件包的一部分。安裝Linux時,通常也會安裝C編譯器。供個人計算機使用的C編譯器很多,運行各種版本的Windows和Macintosh(即,Mac)的PC都能找到合適的C編譯器。因此,無論是使用家庭計算機、專業工作站,還是大型機,都能找到針對特定系統的C編譯器。
1.2.4 強大而靈活
C語言功能強大且靈活(計算機領域經常使用這兩個詞)。例如,功能強大且靈活的UNIX操作系統,大部分是用C語言寫的;其他語言(如,FORTRAN、Perl、Python、Pascal、LISP、Logo、BASIC)的許多編譯器和解釋器都是用C語言編寫的。因此,在UNIX機上使用FORTRAN時,最終是由C程序生成最后的可執行程序。C程序可以用于解決物理學和工程學的問題,甚至可用于制作電影的動畫特效。
1.2.5 面向程序員
C語言是為了滿足程序員的需求而設計的,程序員利用C可以訪問硬件、操控內存中的位。C語言有豐富的運算符,能讓程序員簡潔地表達自己的意圖。C語言不像Pascal甚至是C++那么嚴格。這樣的靈活性既是優點也是缺點。優點是,許多任務用C來處理都非常簡潔(如,轉換數據的格式);缺點是,你可能會犯一些莫名其妙的錯誤,這些錯誤不可能在其他語言中出現。C語言在提供更多自由的同時,也讓使用者承擔了更大的責任。
另外,大多數C實現都有一個大型的庫,包含眾多有用的C函數。這些函數用于處理程序員經常需要解決的問題。
1.2.6 缺點
人無完人,金無足赤。C語言也有一些缺點。例如,前面提到的,要享受用C語言自由編程的樂趣,就必須承擔更多的責任。特別是,C語言使用指針,而涉及指針的編程錯誤往往難以察覺。有句話說的好:想擁有自由就必須時刻保持警惕。
C語言緊湊簡潔,結合了大量的運算符。正因如此,我們也可以編寫出讓人極其費解的代碼。雖然沒必要強迫自己編寫晦澀的代碼,但是有興趣寫寫也無妨。試問,除C語言外還為哪種語言舉辦過年度混亂代碼大賽[1]?
瑕不掩瑜,C語言的優點比缺點多很多。我們不想在這里多費筆墨,還是來聊聊C語言的其他話題。
C Primer Plus 第6版 中文版習題解答
史蒂芬·普拉達(Stephen Prata),曹良亮 編
《C Primer Plus 第6版 中文版習題解答》【摘要 書評 試讀】- 京東圖書
本書共分為17章,每一章的主題與《C Primer Plus(第6版)中文版》完全一致。每章開篇采用思維導圖的方式列出本章的知識點,然后對每章的重點內容進行了梳理總結,最后則對每章中的復習題和編程練習進行了分析并給出了解答思路,確保讀者在徹底夯實理論知識的同時,進一步提升實際編程能力。
作為《C Primer Plus(第6版)中文版》的配套參考書,本書特別適合需要系統學習C語言的初學者閱讀,也適合打算鞏固C語言知識或者希望進一步提高編程技術的程序員閱讀。
簡要目錄
第1章 初識C語言
第2章 C語言概述
第3章 數據和C
第4章 字符串與格式化輸入/輸出
第5章 運算符、表達式和語句
第6章 C控制語句——循環
第7章 C控制語句—分支和跳轉
第8章 字符輸入/輸出和輸入驗證
第9章 函數
第10章 數組和指針
第11章 字符串和字符串函數
第12章 存儲類別、鏈接和內存管理
第13章 文件輸入/輸出
第14章 結構和其他數據形式
第15章 位操作
第16章 C預處理器和C庫
第17章 高級數據表示