當前位置:首頁 » 編程語言 » c語言陷阱與技巧第七節
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言陷阱與技巧第七節

發布時間: 2022-11-22 12:56:05

A. c語言學不會怎麼辦

C語言學不會怎麼辦?我大一的時候也需要學C語言,C語言學習方法有很多,下面是我的建議。
1.首先應該記住基礎知識點,如數組,結構體,指針等相關內容,如果在編程過程中遇到想不起來的知識點,一定要及時去翻書或者上網搜索。

_

B. 零基礎如何學習C語言

如何學習 C 語言?

在教學過程中,有些人會覺得C語言。學習比較困難,主要是有幾個原因,一個是它C 語言的語法知識太多有點太過於瑣碎,碎了。第二個就是他C 語言反復的算數類編程練習,有些人會不感興趣,然後就不願意寫程序就覺得入門很困難。

總結:其實最主要的是要勤加練習,勤能補拙,當年基礎知識掌握後你就可以試著開發一個小程序的開發了自己人生第一個程序後,你就會油然而生,一種自豪感,這樣的話就會增加你對編程工能力的提高以及感興趣程度。所以興趣是第一老師,如果你不愛玩游戲,沒有好奇心的話,你最好還是要考慮一下對是否學習編程

C. 如何學好C語言

就把譚浩強那本書高透了 基礎打好了就好說了
比如最基礎的 數組 符號 遞歸 循環 等最基礎的東西打牢.

D. C語言學習技巧

1、學習C語言,要從入門到精通,需要讀哪些書(從簡單的到難的排序,越詳細越好,最好都能注釋下選擇這本書的理由)?

入門階段:還是老譚那本。
理由:雖然不能說它寫得有多好,但是你現在要做的是入門,要快速的掌握c的基本語法,這本書很好理解,能夠讓你在最短的時間內大致掌握這門語言的概更。

第二階段:《c程序設計語言》(The C Programming Language)和《C語言解惑》(The C puzzle book)
理由:《the c programming language》號稱c語言聖經。其實它也只是一本介紹基礎語法的書,不做入門教程是因為對於初學者來說,它難度稍大,之所以推薦,是因為它能讓你---系統而嚴密的---把C語言知識構架整理一遍。《c語言解惑》,系統的整理了c語法中容易讓你產生迷惑或容易犯錯的地方(如a+++++b等),這時候你才算真正開始學習c語言了.(以上兩本現在出重印了,應該在書店可以買到)

第三階段:《C陷阱與缺陷》(C Traps and Pitfalls)和《高質量c/c++編程指南》
理由:《c陷阱與缺陷》是讓對c的理解有質變得一本書,如如何理解(*(void(*)())0)()等問題,我的感覺是看完這本書讓我真正從小菜鳥變成了老菜鳥。《高質量...》,終於有一本國產的了,呵呵,我認為這本書是把你從土匪變成正規軍的最好指南,該書涉及編程風格、效率、重載、健壯性等一些列之前很難注意的問題。(以上兩本《c陷阱...》已絕版,不過網上可以下載到中英文版,《高質量...》本身就是網路書,很容易找到)

其它推薦書:《c專家編程》《c和指針》

E. c語言入門教學

樓主,你可以去編程入門網,那裡有挺多知識點的,很多語言都有,很適合初學者,你也可以去CSDN,那裡有很多源代碼提供下載,也有論壇,呵呵,你也不要忽視網路貼吧,知道,貼吧是學習很多課本沒有東西的地方,知道,你需要看解決答案,這樣很有收獲,你也可以去中國編程網,不過,我覺得一樓也是有道理的,看看書掌握知識點,網上我覺得主要還是提高的地方哦……呵呵……關於怎麼學,我是這么過來的,每看一節書,做一節課後習題,其實初學主要還是學習語法和演算法(解決問題的方法),多上機自己寫程序,寫不出來看答案的演算法,自己再寫一邊,關鍵這個階段還是積累為主,基本知識學好了,可以學深入編程,不過你需要有熟悉的語法,可以寫一些小程序:學生成績管理系統等等,就過關了,然後可以學習鏈表,圖像編程,等等高級編程……呵呵……努力一定有回報的……加油吧…

F. C語言學習路線

一,UNIX下C語言的學習路線。
工具篇
「公欲善其事,必先利其器」。編程是一門實踐性很強的工作,在以後的學習或工作中,將常常會與以下工具打交道, 下面列出學習C語言編程常常用到的軟體和工具。
(一)操作系統
在UNIX或Linux系統中學習C很方便,所以在開始的學習旅程前請先選擇一個UNIX或Linux操作系統。
目前可供個人免費使用的UNIX或Linux系統有FreeBSD、RedHat Linux、SUSE Linux等,而且在安裝包中還提供很多實用的工具,如:gcc, make等。
如果您一直使用Windows,身邊又沒有多餘的機器安裝UNIX,則可以使用VMware,通過VMware安裝虛擬系統。
(二)編譯工具
目前絕大多數Unix或Lnux系統都提供CC或GCC編譯器,最簡單的cc命令格式如下:
cc -o hello hello.c
在unix shell環境中敲入上面的代碼會將hello.c程序編譯成可執行文件hello。
make 工具如 GNU make、System V make 和 Berkeley make 是用來組織應用程序編譯過程的基本工具,但是每個 make 工具之間又有所不同。
大部分UNIX和Linux程序都是通過運行make來編譯的。make工具會讀取一個包含指令的文件(這個文件的名字通常都是 makefile 或 Makefile,不過後文中統一稱之為 「makefile」),並執行各種操作來編譯程序。
(三)調試工具
最簡單的調試工具:為程序添加列印語句
在對程序的運行機制有了一定的了解後,可以實用一些工具幫助進行調試,當然得學習一下這些工具得使用,如:dbx,gdb等。
還有一些內存工具可以幫查找內存泄漏或緩沖區溢出等一些問題,如:memwatch,yamd等
(四) 其他工具
1. vi或vim
Unix下文本編輯器。主要靠一堆命令來編輯文本文件,學Unix編程最好熟悉並熟練使用vi編輯器。
當然在實際工作中,可能需要一個集成編碼環境或一個功能強大的圖形化編輯工具。
2.netterm
最著名的網路終端軟體之一,可以使用它方便的連接到主機系統中。
3.Secure shell
一個支持ssh協議得客戶端工具,多數情況下用來連接linux系統。
書籍篇
「書是人類進步得階梯」。學習一門新的知識,當然要選擇幾本適合自己得書籍,下面介紹一些我自己學習C語言使用過的書籍:
1.《C primer plus》
推薦理由:適合作為入門書和基本函數查詢得參考資料。本書最新版為第五版,以ANSI C99為標准詳細介紹了C語言。
2.《The C programming_Language》
推薦理由:C語言之父得作品權威性毋庸置疑。雖然書籍出版時間比較老,好像也沒更新,不過仍不失為經典書籍,網上有這本書得英文電子版提供下載。
3.《C 專家編程》
推薦理由:本書可以幫助有一定經驗的C程序員成為C編程方面的專家,最關鍵的是本書寓教於樂,充分享受編程的樂趣。
4.《C缺陷與陷阱》
推薦理由:書中所揭示的知識能幫助繞過C語言自身得陷阱和缺陷,減少代碼中許多常見的Bug。
5.《unix環境高級編程》
推薦理由:既然是UNIX環境下C編程,就不得不說說UNIX編程書籍。Stevens先生的《unix環境高級編程》是竭力推薦的,也是案頭必備(如果對網路編程有興趣的,可以學習一下Stevens先生的《UNIX網路編程》兩卷,如果覺得還不過癮,可以再看看《TCP/IP詳解》三卷)。
6.《計算機編程藝術》
推薦理由:演算法大師得嘔心瀝血之作。計劃出版五卷書,目前好像已出版3卷。對演算法有興趣得可以研究一下。
過程篇
1.學習C語法
語法的學習對於一個具有編程底子的來說,就很輕鬆了;即使以前沒有學習過其他編程語言,我相信有2個星期,也能輕松搞定。
需要注意的是,不要太糾纏於語言的細節,比如:運算符優先順序與結合性的問題等。
2.學習C標准庫
ANSI C庫把函數分為不同的組,每個組都具有與之相關的頭文件。C語言標准庫相對於其他語言,比如C++,Java來說是非常短小精悍的,但首先應著重對以下庫進行學習:
ctype.h:字元處理
math.h:數學庫
stdio.h:標准I/O庫
stdlib.h:通用工具庫
string.h:字元串處理
time.h:時間和日期
如果想了解完成的ANSI C庫,可以購買相關的書籍,這些書籍一般會詳細介紹每個函數的用戶和一些注意點;
3.攻克C的難點
C語言聲明:
C語言的聲明確實覺得恐怖,比較晦澀難懂,而且聲明的形式和使用的形式還類似。比如如下的聲明恐怕就連很多熟悉C多年的程序員也不是一眼就能看出來的:
char * const * (*next)();
那麼有沒有一種好的記憶方法或規則來搞清楚呢,好像沒有,如果有的話也不是這樣折磨人了。不過可以看看《C專家編程》第三章的內容,或許會有所收獲。
也只能多學多練了,所謂熟能生巧嘛,希望這個問題不要在你的心靈上留下陰影。
數組與指針:
數組與指針的關系,在標准中並沒有作很詳細的規定,而且好多C入門的書籍在這個問題上並沒有給出很詳細的說明,所以會給人造成很多誤解。
對於這個問題,可以參考《C缺陷與陷阱》4.5節和《C專家編程》第4,9,10章,相信這裡面的內容搞透徹,以後就不會再被這個問題搞迷惑。
指針與內存:
如果以後編寫規模較大的程序,可能發現這個問題可能會是最大的煩惱,而且可能會是消耗最多調試時間的事項。
C版本的問題:
得特別小心該問題,最好不要的程序中混合使用不同版本C的特性,否則會帶來很迷惑的問題。如果一定要用,最好清楚自己在做什麼。
4. UNIX環境編程
學習了以上內容之後,就可以進行unix環境編程了。不過可能需要對操作系統理論有一點點的了解,這樣學起來會比較輕松一些。
Unix環境編程,應該著重IO和進程兩大塊內容。《Unix環境高級編程》中對Unix環境編程有著非常詳細且深入的論述,而且書中有大量實用性例子程序,不過可能得花上幾個月得時間,好好啃一啃了。
在扎實掌握以上內容,不代表得C語言學習支路已經完成,相反,才剛剛開始。以後需要用學到得知識去解決大量不同實際問題,在不斷得實踐過程中,會近一步加深對C的理解。有了以上基礎之後,會發現,在實踐過程中需要的其他知識,會非常快速的掌握。
二,Windows程序員的學習路線
1.當然要熟悉下C語言了 入門可以選用潭浩強的 《C程序設計》(當然最好能讀C Programming Language)特別要對其中的指針,結構體等東西一定要搞清楚了(要學好的很好至少要花費一個月時間) 為什麼要從C開始呢:<1> C好學 <2> 大多數的操作系統核心部分是用C開發的 <3> C的效率高且語言成熟
2.在1的基礎之上一定要認真學習一下數據結構 對C++程序員來說良好的數據結構可以讓一個程序員很輕松的完成程序設計 糟糕的數據結構可以把一個程序員累死 推薦書籍:嚴蔚敏的《數據結構(C語言版)》或北京大學的一本中C++版的數據結構 書中說到的每個主體在程序設計中都會用到 認真學好會對的以後的C++程序設計有太多的好處 (3個月時間)
3.學好了2之後可以學習下《C++ PROGRAM DESIGN》這本書初步介紹了C++和如何使用C++寫出Windows下的程序(要學好至少要花費3個月時間)
4.在3的基礎之上可以讀一本叫《Windows 95 程序設計》(它的最新版本是Programming Windows)這是一相Windows程序設計的領域的不朽之作(3個月時間) 通過2和3的學習已經成為了一個可以設計Windows程序的程序員了 要想更好的設計Windows程序設計 一定要藉助框架結構不可 為什麼:框架結構可以加快我們程序設計的速度 雖然使用框架使得我們的程序的效率低了那麼一點 但隨著當今計算機的運算能力的提升,不會感覺到這一點點的性能損失的反而會因為你使用的框架結構而使你的程序設計加快了速度 使用框架結構才算一個真正的VC++程序員
5.在4的基礎之上可以看一些簡單的MFC程序設計的書比如《Visual C++入門教程》之類的圖書 這可以使你能寫出一些帶有通用控制項的MFC程序 (1個月時間)
6.在5的基礎之上已經可以很快開發一個軟體了 但不了解MFC框架運行機制是很不好的 了解MFC的運行機制可以使以後的MFC程序設計工作做的更好 推薦書籍侯傑的《深入淺出MFC》 但這本書真的不適合初學者當你有了一定的開發經驗以後這本書對來說確實很好 若很熟悉Windows下的SDK程序設計並打算或已經開始使用MFC進行軟體開發 那這本書對來說再好不過了 (2個月時間)
7.在6的基礎之上可以看下這本書《VC++技術內幕》由潘愛民譯的 推薦看原著(3個月)
8.在以上基礎之上為了更好的使用VC++這個工具 推薦看一下《VC++6.0寶典》(3個月) 從開發工具的角度講這本書寫的很好
9.為了更好的工作可以參考一下VC++程序設計百例
10.之後可以看一下《Windows核心編程》 這本書很好的講解了Windows的編程 對你寫系統程序很有好處的 推薦看原版
11.只了解其形不算真正的了解 之後還要認真的讀一下Windows的內核源碼 相信WRK 很容易找到的 可以配合《深入解析Windows操作系統》《Windows內核原理與實現》和《Windows內核情景分析》
12.其它一些東東《COM原理》(潘愛民) OpenGL D3D VC的資料庫編程 圖形圖像 音視頻處理和網路都要有所了解和會使用
13.要做到一個好的程序員一定要對驅動程序有所了解所以寫一個文件驅動之類的東東是很有必要的
14.經過以上各步的學習完全成為一個優秀的Windows程序員了(前提是每一步要學好)
15.漏了一些重要的東東 編譯原理 匯編及 組成原理 和設計模式等也是很重要的東東 只有學好了這些才能明白語言為什麼要這樣組織才能高效。

G. 計算機二級C語言備考技巧有哪些

1、筆試試卷分析


筆試試卷由選擇題和填空題組成。選擇題和填空題一般對基本知識和基本操作進行考查,它主要是測試我們對相關概念的掌握是否全面、理解是否准確、思路是否清晰。


(1)選擇題分析


選擇題為單選題,是客觀題,每道題的分值為2分,試題覆蓋面廣,一般情況下我們不可能做到對每個題目都有把握答對。考試時就需要我們學會放棄,對於不確定的題目不要在上面花費太多的時間,先記住,然後作答其他題目。等最後有空餘的時間再回過頭來仔細考慮這些題目。二級C語言筆試題目眾多,分值分散,我們一定要有全局觀,合理地安排考試時間。


選擇題一般分為:正面試題和反面試題。設問是正確觀點的題稱為正面試題,絕大多數選擇題為正面試題;設問是是錯誤觀點的題稱為反面試題。我們在解答選擇題時可以如下幾個答題方法來答題,這樣可以提高答題速度和准確率。


①順選法:如果對題中的4個選項,一看就能肯定其中的1個是正確的,就可以直接得出答案。對於一些比較容易看出正確選項的題,可以使用排除錯誤選項。


②排除法:排除法是將錯誤答案一一排除的方法。對題中的4個選項逐個去掉錯誤的選項。對於一些比較容易看出錯誤選項的題,可以使用排除錯誤選項。


③比較法:這種辦法是沒有辦法的辦法,如果有些題實在是沒有把握,那麼就只有比較四個選項中那個更接近題目要求了(這也稱之為“蒙猜法”)。


(2)填空題分析


填空填一般難度都比較大,一般需要我們准確地填入字元,往往需要非常精確,錯一個字也不得分。在分值方面,每題也是2分。在作答填空題時要注意以幾點:


①答案要寫得簡潔明了,盡量使用專業術語。


②認真填寫答案,字跡要工整、清楚,格式要規范、正確,在把答案往答題卡上填寫後盡量不要塗改。


③注意,在答題卡上填寫答案時,一定要注意題目的序號,不要弄錯位置。


④對於有兩種答案的情況,只需填一種即可,多填並不多給分。


2、上機試題分析


一個C語言源程序總是在一定的硬體和軟體環境支持下進行編輯、編譯、連接和運行的,而這其中的每一步都直接影響程序調試的效率。所以初學者必須了解所使用的計算機系統的基本操作方法,學會使用該系統,了解在該系統上如何編輯、編譯、連接和運行一個C語言程序。


上機考試重點考察我們綜合運用基礎的操作能力和程序編寫能力,要求我們具有綜合運用基礎知識進行實際操作的能力。上機試題綜合性強、難度較大。上機考試的評分是以機評為主,人工復查為輔的.。機評不存在公正性的問題,卻存在呆板的問題,有時還可能因為出題者考慮不周出現錯評的情況。這就要求我們做題時要充分考慮到各種情況,盡可能的按規范編寫程序,否則有可能答對不得分。


掌握好上機考試的考試技巧,可以使我們的實際水平在考試時得到充分發揮,從而取得較為理想的成績。歷次考試均有考生因為忽略了考試技巧,加之較為緊張的考場氣氛影響了水平的發揮,致使考試成績大大低於實際水平。因此我們在考試前,要有充分的准備。總結起來有以下幾點供我們在復習和考試時借鑒:


(1)上機考試訓練時,一定不要死記硬背。以往有部分考生能夠順利通過筆試,卻不能通過上機考試,主要原因就是她們在平時訓練時死記硬背,而沒有真正的理解知識應用,到考試時,題目稍有變動就變的束手無策。所以我們一定要在熟記基本知識點的基礎上,加強上機訓練,做到真正理解、掌握解題方法和思路。


(2)一定要重視考試模擬軟體的使用。應使用考試模擬軟體進行實際的上機操作練習,尤其要做一些具有針對性的上機模擬題,以便熟悉考試題型,體驗真實的上機環境,減輕考試時的緊張程度。


(3)學會並習慣使用編程軟體的幫助系統。C語言編程軟體有非常全面的幫助系統,熟練掌握、使用幫助系統,可以使我們減少記憶量,解決解題中的陌生、疑難問題。


(4)熟悉考試場地及環境,尤其是要熟悉考場的硬體情況和所使用的相關軟體的情況。一般在正式考試前,考點會給我們提供一次模擬上機的機會,應盡可能地去參加。模擬考試時,不要把重點放在做題上,而應放在熟悉考試環境,相應軟體的使用方法,考試系統的使用等方面。


(5)在考試時不要急燥、慌張,而是要認真、冷靜地看清題目要求,在做完題後一定要保存文件,並運行程序檢測運行結果是否符合題目要求。在考完交卷前先關閉掉C語言編程軟體和其他打開的文件,再交卷,確保交卷過程中不出錯誤。


3、綜合應試技巧


(1)認真審題,先分析,後下筆。試題的考核是有針對性的,因此在答題時也要有針對性。解答前,除了要看清問題外,還要弄清楚題目考核的意圖。明白了問在那裡後,就可以開始考慮好如何答題了,然後依思路從容做答。


(2)對於十分了解或熟悉的問題,切忌粗心大意、得意忘形,一定要認真看題、分析,避免掉入陷阱,確定後再寫出答案。


(3)對於偶爾碰到或是雖然在復習中見過但已記不清的題目,也不要泄氣,將自己的判斷同書本知識聯系起來做答;對於完全陌生的問題,實在不知如何根據書本知識進行解答時,可以採用“蒙猜法”,用自己的思考和邏輯推斷作答。由於這這方法作出來的題沒有多大把握得分,因此不要花費太多時間去研究它。


總之,考試要取得好成績,取決於我們對C語言知識掌握的扎實程度。否則,即使有再好的技巧也無濟於事,只能碰運氣,這是不可能考出好成績的。當然,在有扎實的基礎上運用一些應試的技巧,能使考試起到事半功倍的效果。

H. 零基礎如何學習C語言

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

一、要讀就讀好書,否則不如不讀。所有初學者面臨的第一個問題便是:如何選擇教材。好的開始是成功的一半,選擇一本優秀的教材是事半功倍的關鍵因素。不幸的是,學校通常會幫你指定一本很差勁的C語言課本;而幸運的是,你還可以再次選擇。

切記一個原則,不要讀自己目前還看不懂的書,那是浪費生命。如果你看不懂,那你一定是缺失了某些必需基礎知識。此時,你要仔細分析自己需要補充哪些內容,然後再去書店尋找講述的這些內容的書籍。把基礎知識補充完畢再回頭來學習,才會真正的事半功倍。

二、Unix/Linux還是Windows,這是個很大的問題。不同的編程環境會造就出不同思維的程序員。Windows的程序員大多依賴集成開發環境,比如Visual Studio,而Unix程序員更加鍾愛Makefile與控制台。顯而易見,集成開發環境更容易上手,在Windows上學習C語言,只需要會按幾個基本的Visutal C++工具欄按鈕就可以開始寫Hello, World!了,而在Unix下,你需要一些控制台操作的基本知識。

建議初學者應該以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作為主要的學習環境,而且千萬不要在IDE的使用技巧上過多糾纏,因為今後你一定要轉向Unix環境的。Visual C++ 6.0使用很方便,調試也很直觀,但其默認的編譯器對C標準的支持並不好,而Dev C++使用gcc編譯器,對C99的標准都支持良好。

I. 百度知道是不是都能解決所有問題

這個不一定的,因為網路知道也是各個網友在上面提問問,熱心的來回答,一般的常見問題都有解答,而且一般也是個人的觀點,難的專業的問題很少有人能回答出來,所以不一定所有的問題都能解決,但是你可以在這里發動群眾的智慧幫你解決問題。

J. 學習C語言有哪些好的書籍推薦嗎

初學C語言程序設計的基本方法和技巧

C語言是一門應用最廣泛的基礎高級編程語言,有很多語言都是由它發展而來的,所以學習好C語言之後再學習任何一種編程語言都會輕松上手。

1 熟記基本知識點

學習C語言和學習任何一種語言的方法基本一樣。我們嬰兒期間咿呀學語時,從一個字開始學,然後兩個,接著更多,最後我們能成句,成段,到出口成章。學習C語言的時候也一樣,有些最基本的內容必須要記下來。
1.1 關鍵字
關鍵字是由C語言規定的具有特定意義的字元串。它們是寫C語言的基礎,如果關鍵字不記下來,那編程是寸步難行。
1.2 運算符
C語言中的運算符和表達式與我們數學上的運算符和表達式有相同的,也有不同的。我們在學習的時候就注意記住並弄清楚那些不同的地方。基本的語法表達式及執行過程。選擇結構中的if語句和switch語句。循環語句中的for語句、while語句和do-while語句。這部分就好比是你會了許多詞,然後得把這些片語成一些句子,語法的作用就是告訴你怎樣說好一句話,表達清楚的意思。
1.3 常用庫函數
在這里最重要有兩個函數:輸入函數scanf()和輸出函數printf()。一個程序如果沒有輸入,那無論運行多少次結果都一樣,那也就失去了寫程序的目的了。同樣一個程序如果沒有輸出,那運行程序有什麼意義呢?當然輸出的形式比較多。在初學C語言的時候主要是從屏幕上輸出結果。所以這兩個函數的使用方法也必須要掌握。這兩個函數已經定義在stdio.h這個頭文件中,不用我們自己寫,它們不是C語言中的語句,所以在使用這兩個函數時在源程序頂部一定要加上#include 。這是為了讓我們在執行程序的時候,讓計算機知道scanf()和printf()這兩個函數怎麼用。
掌握上面的必須要記下來的內容,相當於我們開始學說話時先聽別人說,我們自己跟著學一些最基本的日常語言。這時我們就可以從一些簡單的程序開始讀,能把每一個程序的運行結果能自己讀程序准確地執行出來,那樣我們就可以開始來編寫程序了。

2 掌握程序的基本結構

編寫程序一定要注意程序的結構性。學習寫程序,不能開始就寫代碼。許多人在動手寫程序的時候感到無從下筆。原因主要是:看到一個題目不知道如何去分析,它怎麼才能變成一個程序呢?這是初學者在編寫程序的主要問題。我在教學中採用了一種分步式的方法。
2.1 看到一個題目的時候先別想著編程序,用一個具體的實例想想不用程序你是如何解決這個問題的
例如輸入三個數,輸出最小值。我們用3,8,6三個數來考慮,我們一看就知道3是最小的。可是我們這一看中其實並不簡單,其中有判斷。我們先看第一個數3,然後已經記在我們頭腦中了,再看第二個數8,3比8小,那我們還是記住3,再比較第3個數6,最後確定3是最小的。我們現在就是要把我們頭腦中很快閃過的這些判斷過程想清楚。
2.2 我們要弄清楚一個程序由哪些部分組成
這就好比我們寫一篇文章也有一些結構。一個C程序也有其一般結構,我把它歸納成下面格式。
#include
main()
{
定義變數;int,float,char,double
輸入數據;鍵盤輸入scanf();
直接賦值;例如x=3;
處理數據;if-else;switch;for;while;do-while;
輸入數據;printf();
}
第一行代碼表示把標準的輸入輸出頭文件包含在這個程序中。第二行代碼是C程序的主函數,每個C程序中必須有且僅有一個main()函數。然後是函數的一對「{}」。
定義變數的意思好比買一塊地,有了這塊地就可以在上面蓋房、種莊稼之類的。但是為了便於統一管理,比如城市已經規劃好了,你在郊區買的地就只能種莊稼,在市中心買的,就只能蓋房,這就是變數類型的含義了。用上面求最小值的例子。我們在三個數中求最小值。這三個是什麼數,是整數還是小數?這就必須用變數類型來說明。對於上例應該定義三個整型變數用來存放三個整數,還要定義一個整型變數用來存放最小值。如:int a,b,c,min;這行代碼的作用其實是要了一塊內存,然後在這塊內存里存東西。因為我需要一個整數,所以就用int這個關鍵字來聲明(相當於用這塊地干什麼)。那麼變數a,b,c是什麼呢?你買了一塊地,總要知道這塊地在哪是吧?不然就白買了,變數就是這樣一個作用。我們需要把數據存在計算機中,什麼樣的數就定義什麼樣的類型,需要存幾個數就定義幾個變數。
輸入數據有兩種方法。第一種從鍵盤輸入,就需要用到scanf()這個函數;第二種是直接賦值。
處理數據是對於初學者來說最難的一部分,也就是把我們剛才分析過程轉換成語句。這需要學好C語言的三種程序結構。
(1)順序結構
順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。順序結構可以獨立使用構成一個簡單的完整程序,不過大多數情況下順序結構都是作為程序的一部分,與其它結構一起構成一個復雜的程序,例如分支結構中的復合語句、循環結構中的循環體等。
(2)選擇結構
對於要先做判斷再選擇的問題就要使用分支結構。選擇結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。選擇結構的程序設計方法的關鍵在於構造合適的分支條件和分析程序流程,根據條件的結果選擇對應的分支語句。選擇結構適合於帶有邏輯或關系比較等條件判斷的計算,設計這類程序時往往都要先繪制其程序流程圖,然後根據程序流程寫出源程序,這樣做把程序設計分析與語言分開,使得問題簡單化,易於理解。程序流程圖是根據解題分析所繪制的程序執行流程圖。
例如上例中,把我們頭腦中很快閃過的這些判斷過程畫成流程圖即圖1:

由上面的流程圖再寫出對應的語句就比較容易了。如下所示:
min=a;
if(min>b) min=b;
if(min>c) min=c;
學習分支結構不要被分支嵌套所迷惑,只要正確繪制出流程圖,弄清各分支所要執行的部分,嵌套結構也就不難了。嵌套只不過是分支中又包括分支語句而已,不是新知識,只要對雙分支的理解清楚,分支嵌套是不難的。下面我介紹幾種基本的分支結構。
①if(條件)
{ 分支體
}
這種分支結構中的分支體可以是一條語句,此時「」可以省略,也可以是多條語句即復合語句。它有兩條分支路徑可選,一是當條件為真,執行分支體,否則跳過分支體,這時分支體就不會執行。如:要計算x的絕對值,根據絕對值定義,我們知道,當x>=0時,其絕對值不變,而x<0時其絕對值是為x的反號,因此程序段為:if(x<0) x=-x;
②if(條件)

else

這是典型的分支結構,如果條件成立,執行分支1,否則執行分支2,分支1和分支2都可以是1條或若干條語句構成。如:求某年的年號是否是閏年。
分析:因為當某年號能被4整除但不能被4整除但不能被100整除,則這一年是閏年;或者這一年號能被400整除也是閏年。即year%4==0&&year%100!=0||year%400==0
其程序段如下:
if(year%4==0&&year%100!=0||year%400==0)
printf(「%d is leap year!」,year);
else
printf(「%d is not leap year!」,year);
}
③嵌套分支語句:其語句格式為:
if(條件1) ;
else if(條件2)
else if(條件3)
……
else if(條件n)
else
嵌套分支語句雖可解決多個入口和出口的問題,但超過3重嵌套後,語句結構變得非常復雜,對於程序的閱讀和理解都極為不便,建議嵌套在3重以內,超過3重可以用switch語句。
④switch開關語句:該語句也是多分支選擇語句,到底執行哪一塊,取決於開關設置,也就是表達式的值與常量表達式相匹配的那一路,它不同if…else 語句,它的所有分支都是並列的,程序執行時,由第一分支開始查找,如果相匹配,執行其後的塊,接著執行第2分支,第3分支……的塊,直到遇到break語句;如果不匹配,查找下一個分支是否匹配。這個語句在應用時要特別注意開關條件的合理設置以及break語句的合理應用。
(3)循環結構
循環結構可以減少源程序重復書寫的工作量,用來描述重復執行某段演算法的問題,這是程序設計中最能發揮計算機特長的程序結構,C語言中提供三種循環,即while循環、do while循環和for循環。三種循環可以用來處理同一問題,一般情況下它們可以互相代替換,另外還有一種goto循環語句,因為強制改變程序的順序經常會給程序的運行帶來不可預料的錯誤,所以不提倡使用。
常用的三種循環結構學習的重點在於弄清它們相同與不同之處,以便在不同場合下使用,這就要清楚三種循環的格式和執行順序,將每種循環的流程圖理解透徹後就會明白如何替換使用,就能更好地理解它們的作用。在分析循環結構的語句時要開清楚,什麼時候開始循環(即循環的初始值);什麼時候結束循環(即循環的終止條件);循環的時候都做哪些操作(即循環體的執行部分);特別要注意在循環體內應包含趨於結束的語句(即循環變數值的改變),否則就可能成了一個死循環,這是初學者的一個常見錯誤。
在學完這三個循環後,應明確它們的異同點:用while和do…while循環時,循環變數的初始化的操作應在循環體之前,而for循環一般在語句1中進行的;while 循環和for循環都是先判斷表達式,後執行循環體,而do…while循環是先執行循環體後判斷表達式,也就是說do…while的循環體最少被執行一次,而while 循環和for就可能一次都不執行。
順序結構、分支結構和循環結構並不彼此孤立的,在循環中可以有分支、順序結構,分支中也可以有循環、順序結構,其實不管哪種結構,我們均可廣義的把它們看成一個語句。在實際編程過程中常將這三種結構相互結合以實現各種演算法,設計出相應程序,但是要編程的問題較大,編寫出的程序就往往很長、結構重復多,造成可讀性差,難以理解,解決這個問題的方法是將C程序設計成模塊化結構。輸出數據是每一個程序必須包含的部分。在C程序中的輸出通常是從顯示屏上輸出最後的結果,使用printf()這個函數。

3 掌握一些簡單常用的演算法

編程其實一大部分工作就是分析問題,找到解決問題的方法,再以相應的編程語言寫出代碼。這就好比我們學習寫作文段落的時候都有一些經典的好詞好句,可以使文章添彩。同樣程序雖然可以實現各種功能,但最基本的一些演算法並不是特別多,我們掌握一些簡單的演算法,在掌握這些基本演算法後,根據不同的問題,再靈活應用。如百錢買百雞的問題,就是用100元錢買100隻雞,公雞5元一隻,母雞3元一隻,小雞1元三隻。這種問題用數學方法可以列出方程:
x+y+z=100
5*x+3*y+z/3=100
按數學方法三個未知數兩個方程無解,實際上是可以解的,如果把公雞,母雞和小雞可能的只數全部代入到方程中檢驗就可以得到最後結果。這種方法叫窮舉法。如果我們用手算那可能要花上半天的功夫,但讓計算機來算就只需要1秒種。使用演算法後分析和處理問題都會簡單很多。當我們能熟練地掌握了簡單演算法後就能實現一些比較復雜的編程問題了。
任何程序只要有思維,有想法,那麼實現程序時就不會覺得無從下手。而要學習這種思維方法就是多做題,多讀程序,學習別人好的思維方法,多想想一個程序還可不可以有另外一種方法來實現它。這樣久而久之,自然會形成一種自己的思維方法。因此我認為不管學什麼語言都是這樣。

4 培養良好的編程習慣

培養良好的編程習慣要從第一行代碼開始,這也是學好C語言的重要因素。例如編寫程序時用縮進的方式、寫注釋、程序寫到一定的階段時要做一下測試等。這些工作可以幫我們在調試程序時有很大的幫助。程序代碼實現後,錯誤是難免的,所以也要鍛煉自己的調試查錯能力,而良好的編程習慣可以使我們在調試時減小工作量和提高調試效率,也有助於形成自己的編程風格。

C語言教學探討
注重編程細節,培養編程技巧
C語言的規則頗多,編寫C程序得嚴格按照其規則進行程序設計,對初學者而言,常常馬虎大意,所編寫的程序不能正常編譯和執行結果,從而打消學生的學習積極性。因此在教學初期,教師必須強調C的許多細節問題,讓學生的這種不良習慣扼殺於「萌芽」狀態。如學生常常在寫程序時出現以下問題:
3.1 字母大小寫問題
C語言程序嚴格區分字母的大、小寫,此規則一定給學生講清楚,讓其記住那些特例。如用科學計數法表示浮點數中的「E」,弄清該計數法的規則,其中的字母「E」可以不區分大、小寫;再如表示16進制數的符號「0x」,其中字母「x」也可不區分大、小寫等等,在教學過程中,對該類問題進行總結、歸納讓學生一次就掌握並記住。
3.2 標點符號問題
學生在錄入程序時,往往忽略標點符號。問題主要表現在:
(1)忘記錄入標點,C語言中,一條語句的結束需要用符號「;」與另一語句隔開,對初學的學生,他們通常會忽略掉這個細節問題,這需要教師在講授中明確地指出,讓學生弄清楚。另外,強調不同標點符號的作用和區別,如「;」和「,」等等。
(2)標點錄入錯誤,在錄入程序時,很多學生錄入的標點是不正確的。如分號「;」和「;」是有區別的,前者為中文下的標點符號,而後者才是程序中需要的。必須給學生強調程序中所需要的標點符號都應該是英文狀態下的。
3.3 容易混淆的符號
字母符號「o」,「O」與數字元號「0」;字母符號「l」與數字元號「1」;字母符號「z」與數字元號「2」的區別等等。
對於少數學生,教師雖然強調了很多的細節,但還是不能接受,這便通過程序的調試來讓他們明白問題的嚴重性,通過他們自己對程序的調試來糾正問題的所在,這需要教師耐心地為學生指導。如程序xx.c:
#include <stdio.h>
void main()
{
int a=10
printf("a=%d\n",a);
}
編譯時出現以下問題:xx.c(5) : error C2146: syntax error : missing ';' before identifier 'printf',給學生講解提示,讓學生通過提示明白問題所在,即該程序第5行的printf語句前缺少「;」,這是學生自己通過實踐證明了問題的所在,使之深受體會。通過程序調試的方法不僅可以為學生解決錯誤,同時也增強了學生調試程序的能力,從而提高編程的經驗和技巧。
4 明確教學目標,任務驅動學習
教師深入分析教學大綱, 在全面了解學生的數學基礎知識狀況的前提下, 根據大綱制定好教學計劃,做好每次教學任務計劃,明確教學目標,選擇適當的練習作業,督促學生不斷深入學習。
在制定計劃的過程中要針對學生的數學知識基礎, 將教材中涉及到的學生未掌握的數學知識類例題進行更換, 避免因數學的方面的問題形成教學障礙, 在課時允許的條件下也可在教學前為學生補充一定的數學方面相關知識。
設計「循環」語句教案時,可以先給學生講清楚學習循環語句的用處及優點,介紹學習重點、難點,要求掌握一些程序設計的演算法,讓他們明確該語句的重要性。如實現求等差數列s=1+2+3+…+n的和時,主要介紹使用循環語句求解,並要求學生掌握其求解方法,並按照此方法推廣,以掌握演算法思想,然後再通過作業的任務編寫壘加演算法的相關程序,如求s=1!+2!+3!+…+n!等,學生通過自己的練習不斷總結編寫循環程序的經驗,體會循環的思想,使得他們對循環語句有更深的理解和認識,從而達到較好的教學效果。
5 改進教學方法,實現教學相長
傳統教學模式的教學方式是:用大量的時間講定義、語法、概念、語句,對學生的要求是注重接受、理解、記憶,講課方式是老師講、學生聽。學生掌握的知識比較抽象、機械、靜止、片面和孤立,他們不知道如何靈活地綜合運用這些知識去解決實際問題。基礎知識固然重要,但利用基礎知識解決實際問題能力的培養是高等教育更為重要的目的。如何使當前的大學生具備扎實基礎知識的同時,又具備解決實際問題、批判性思維和創造性思維,發展合作能力與自主學習能力,是目前急待解決的問題,也是人們進行教學改革的思路。
注重問題求解方法,掌握演算法思想。如實現求等差數列s=1+2+3+…+n的和時,該數列的求解方法有多種。除了使用循環語句求解外,還可以通過公式s=(1+n)*n/2進行求,也可以使用函數的遞歸調用進行求解。通過多種方法的介紹,不僅可以鞏固學生的基礎知識,又能培養學生的創造性思維。
在教學中一定要做到培養學生學習興趣,讓學生體驗成功樂趣,改變學習方式,促進教學互動。
6 知識轉變能力培養,注重實踐課教學
計算機科學是一門經驗學科與理論學科相結合的課程,在學習時,不僅要掌握理論知識,而且實踐操作的經驗的積累也非常重要。C語言變成實踐經驗的積累是不斷從編寫程序、調試程序和運行程序結果的過程中總結得出,由此,教師在講授C語言課程時,不能忽視實踐課的教學,尤其是學生上機輔導課的教學。
往往,很多教師認為,上機輔導課就是讓學生自由練習,及時為有疑問的學生解決問題。實際上這種教學輔導方式是不合理的,應該在以下方面進行改進:
1)學生上機應有明確的練習目標,提高編程效率
在每學期的教學調查中,同學們總會提到這樣的問題:上機課不知道該干什麼;寫程序無從下手;編程很難等。這就要求我們教師在上機課程中要有目的有意識的給同學安排上機的任務。應該從以下幾點來進行上機課程:
(1)結合上課的理論知識,確定上機課要完成的目標。
(2)引入相關的程序實例,逐步分析解決該程序的思路和相關的程序代碼。讓學生了解如何下手去編寫程序。
(3)根據引入的程序實例再擴展開,讓同學們自己動手完成相關的程序代碼。
(4)評講相關的程序代碼,並引出新的程序,讓學生自己獨立的完成。
(5)課程隨時的課堂答疑。
2)激發學生的學習興趣
學生學習的最關鍵的因素是興趣,一定要注意提高學生學習的興趣,如何提高是一個很關鍵的問題。首先要充分的肯定學生,即便是一點點值得肯定的地方也要肯定。其次多評價學生做的作業,讓學生有一定的滿足感。最後多讓枯燥的程序與實際的生活聯系起來。這樣就可以大大的提高學生的學習興趣。
7 小結
以上就是在學習和教授過程中,對C語言程序設計教學課程的心得體會,希望對廣大的同仁能有一定的參考價值

C語言快速學習技巧(原創)默認分類 2010-03-14 12:09:53 閱讀46 評論0 字型大小:大中小
從最基本的流程學起,從最基本的語句學起。在學習的過程中,特別注意每個函數的作用,多想想這個函數能怎樣用,用在哪裡,能起到什麼另外的效果!要學會活用!程序,對數學,特別是邏輯的要求把比較高。寫好程序,首先對整個程序的流程有縝密的思考,要求周到,准確,先思考,不要急著寫程序!!這一點請注意!也就是說先演算法,先研究程序的結構,是用什麼來實現的,循環?分支?等等。然後再用語言來實現!語言只是編寫程序的工具。所以學語言,先學會程序化的思想。在將演算法翻譯成語言的時候,再結合實際情況,逐步求精,有目的的修改,達到最優化。我們學院的C語言,很有特色,英文版,考試也是。我想說的就是,外文版的這本書,它在引領一個不懂編程的人,逐步養成程序、流程、邏輯的思想,是非常優秀的一本書。如果能字字句句閱讀,將會很清楚領會到程序的思想。然而,書太厚,生詞太多,時間太短。我的建議是,看某一本中文版的書,一本不夠,看兩本。先盡快學會程序的思想,也就是用程序來想問題,這樣,就會編程了。然後,考試前幾周,背一背生詞、關鍵詞,就可以考試了。如果你堅持要讀外文版,可以,但要跳讀!然後,還要看你是想只是應付期末考試,還是想學好編程。應付期末考,需要注意書中的重點,也就是考點,這樣就夠了。比如說字元型變數加指針,這樣就夠了,不需要更高級的指針的知識。而你如果想真正學好程序(我不說C語言是因為我說過C語言只是編寫程序的工具之一),肯定是要打好基礎的!任何一個細節,都是不能放過的!而且,這樣的人往往會很郁悶~因為我們程序真正要求的,考試一般不會涉及到,因為比較難!(不會指針的人,永遠不要說他會C語言!)而考試的內容,恰恰是最無聊的東西,比如格式化輸出printf函數的第一個參數,太繁了,記都記不住。如果學的深的話,只需要知道有這么一個函數,有這么一個功能。而要用的時候,查書就行。可是對考試來說,顯然不行。所以要看看你是哪一種~掌握一些簡單的演算法 編程其實一大部分工作就是分析問題,找到解決問題的方法,再以相應的編程語言寫出代碼。這就要求掌握演算法,根據我們的《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[i])與a[1]交換,此時a[1]中存放了10個中最小的數。第二輪將a[2]與a[3]~a[10]比較,將剩下9個數中的最小者a[i]與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[i]>a[j] 結語:當我們把握好上述幾方面後,只要同學們能克服畏難、厭學、上課能專心聽講,做好練習與上機調試,其實C語言並不難學.