999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

如何學(xué)好C語言

2011-12-29 00:00:00王鵬沈艷秋
考試周刊 2011年44期


  摘 要: C語言由于其簡潔緊湊、靈活方便、運算符豐富等優(yōu)點,現(xiàn)已經(jīng)成為計算機、電子信息、自動化等眾多工科專業(yè)學(xué)生的專業(yè)必修基礎(chǔ)課。此外,C語言是一門結(jié)構(gòu)化程序設(shè)計語言,有利于學(xué)生掌握程序設(shè)計的思想。因此,C語言已成為目前高校學(xué)生掌握程序設(shè)計的一門基礎(chǔ)性語言。本文以C語言程序設(shè)計為主線,由淺入深地介紹了如何從學(xué)習(xí)C語言到學(xué)好C語言。
  關(guān)鍵詞: C程序設(shè)計 運算符 預(yù)算順序 算法 結(jié)構(gòu)
  
  一、引言
  現(xiàn)在許多院校的計算機專業(yè)開設(shè)了C語言課程,將其作為學(xué)生學(xué)習(xí)程序設(shè)計技術(shù)的入門課程,這與C語言的特點是分不開的。C語言不但可以編寫系統(tǒng)軟件,而且可以根據(jù)用戶的需要編寫出滿足用戶要求的應(yīng)用軟件,尤其是C語言具有很好的對計算機的硬件編程能力。同時,C語言具有邏輯性強、處理問題周密、嚴(yán)謹(jǐn)?shù)奶攸c,是集知識和技能于一體,實踐性很強的課程。學(xué)生通過學(xué)習(xí)C語言可掌握程序設(shè)計的一些基本方法和技巧。然而C語言的數(shù)據(jù)類型較多、表達式豐富、語法結(jié)構(gòu)較復(fù)雜,是一門教師難教、學(xué)生難學(xué)的課程。
  《C程序設(shè)計》的內(nèi)容很豐富,按照我們現(xiàn)在的教學(xué)大綱,教學(xué)的主要內(nèi)容是基礎(chǔ)知識、四種結(jié)構(gòu)的程序設(shè)計、函數(shù)與數(shù)組的應(yīng)用和一些簡單的算法。在學(xué)習(xí)時,同學(xué)們應(yīng)該把主要精力放在這些部分,多進行練習(xí)和上機調(diào)試。當(dāng)然,在初學(xué)C語言時,可能會遇到有些問題理解不透,或者表達方式與以往數(shù)學(xué)學(xué)習(xí)中不同(如運算符等),這就要求不要氣餒,不明白的地方多問多想,鼓足勇氣進行學(xué)習(xí),待學(xué)完后面的章節(jié)知識,前面的問題也就迎刃而解了。學(xué)習(xí)C語言始終要記住“曙光在前頭”和“千金難買回頭看”。學(xué)習(xí)后面的知識,不要忘了回頭弄清遺留下的問題和加深理解前面的知識。這是我們學(xué)生最不易做到的,然而卻又是最重要的。學(xué)習(xí)C語言就是要經(jīng)過幾個反復(fù),才能前后貫穿,積累應(yīng)該掌握的C語言知識。那么,我們到底該如何學(xué)好《C程序設(shè)計》呢?
  二、奠定基礎(chǔ)——了解、學(xué)好運算符和運算順序
  C語言的運算非常靈活,功能十分豐富,運算種類遠(yuǎn)多于其他程序設(shè)計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單。但初學(xué)者往往會覺得這種表達式難讀,關(guān)鍵原因就是對運算符和運算順序理解不透不全。當(dāng)多種不同運算組成一個運算表達式,即一個運算式中出現(xiàn)多種運算符時,運算的優(yōu)先順序和結(jié)合規(guī)則顯得十分重要。在學(xué)習(xí)中,只要我們對此合理進行分類,找出它們與我們在數(shù)學(xué)中所學(xué)到運算之間的不同點之后,記住這些運算也就不困難了,有些運算符在理解后更會牢記心中,將來用起來會得心應(yīng)手,而有些可暫時放棄不理,等用到時再記不遲。對于運算符的優(yōu)先級也是必須明確的。《C程序設(shè)計》運算符可分為15種優(yōu)先級,從高到低,優(yōu)先級為1—15,且除第2、3級和第14級為從右至左結(jié)合外,其他都是從左至右結(jié)合,它決定著同級運算符的運算順序。這里就給大家介紹一個優(yōu)先級口訣:
  括號成員第一
  全體單目第二
  乘除余三、加減四
  移位五、關(guān)系六
  等于(與)不等排第七
  位與異位和位或
  “三分天下”八九十
  邏輯或跟與
  十二和十一
  條件高于賦值
  逗號運算級最低。[1]
  下面我們來舉個例子:
  a=3;b=5;c=++a*b;d=a++*b;
  對于c=++a*b來說,按表中所列順序,++先執(zhí)行,*后執(zhí)行,所以++a執(zhí)行后,a的值為4,由于++為前置運算,所以a的值4參與運算,C的值計算式為4*5=20而不是3*5=15了。而對于d=a++*b來說,由于a++為后置運算,所以a值為4參與運算,使得d的值仍為20,而a參與運算后其值加1,值為5。這個例子執(zhí)行后,a的值為5,b的值為5,c的值為20,d的值也是20。
  三、砌磚壘墻——了解、學(xué)好四種程序結(jié)構(gòu)
  (1)順序結(jié)構(gòu)
  順序結(jié)構(gòu)的程序設(shè)計是最簡單的,只要按照解決問題的順序?qū)懗鱿鄳?yīng)的語句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。例如:a=3,b=5,現(xiàn)交換a,b的值。這個問題就好像交換兩個杯子的水,這當(dāng)然要用到第三個杯子,假如第三個杯子是c,那么正確的程序為:c=a;a=b;b=c;執(zhí)行結(jié)果是a=5,b=c=3。
  (2)分支結(jié)構(gòu)
  順序結(jié)構(gòu)的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。對于要先做判斷再選擇的問題就要使用分支結(jié)構(gòu)。分支結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語句出現(xiàn)的物理順序。分支結(jié)構(gòu)的程序設(shè)計方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)姆种дZ句。分支結(jié)構(gòu)適合于帶有邏輯或關(guān)系比較等條件判斷的計算,設(shè)計這類程序時往往都要先繪制其程序流程圖,然后根據(jù)程序流程寫出源程序,這樣做把程序設(shè)計分析與語言分開,使得問題簡單化,易于理解。程序流程圖是根據(jù)解題分析所繪制的程序執(zhí)行流程圖。學(xué)習(xí)分支結(jié)構(gòu)不要被分支嵌套所迷惑,只要正確繪制出流程圖,弄清各分支所要執(zhí)行的功能,嵌套結(jié)構(gòu)也就不難了。嵌套只不過是分支中又包括分支語句而已,不是新知識,只要對雙分支的理解清楚,分支嵌套是不難的。那么就先來簡單介紹一下二分支選擇結(jié)構(gòu)。C語言的if語句有兩種基本形式,即獨立的if結(jié)構(gòu)和if-else結(jié)構(gòu)。[2]其語法形式如下:
  1)獨立的if結(jié)構(gòu)
  if(表達式)
  語句
  2)if-else結(jié)構(gòu)
  if(表達式)
  語句1
  else
  語句2
  再來看一下分支嵌套的語法形式
  if(表達式1)
  if(表達式2)語句1
  else語句2
  else語句3
  (3)循環(huán)結(jié)構(gòu)
  循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書寫的工作量,用來描述重復(fù)執(zhí)行某段算法的問題,這是程序設(shè)計中最能發(fā)揮計算機特長的程序結(jié)構(gòu)。C語言中提供四種循環(huán),即goto循環(huán)、while循環(huán)、do-while循環(huán)和for循環(huán)。[3]四種循環(huán)可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環(huán),因為強制改變程序的順序經(jīng)常會給程序的運行帶來不可預(yù)料的錯誤,在學(xué)習(xí)中我們主要學(xué)習(xí)while、do...while、for三種循環(huán)。常用的三種循環(huán)結(jié)構(gòu)學(xué)習(xí)的重點在于弄清它們相同與不同之處,以便在不同場合下使用,這就要清楚三種循環(huán)的格式和執(zhí)行順序,將每種循環(huán)的流程圖理解透徹后就會明白如何替換使用,如把while循環(huán)的例題,用for語句重新編寫一個程序,這樣能更好地理解它們的作用。特別要注意在循環(huán)體內(nèi)應(yīng)包含趨于結(jié)束的語句(即循環(huán)變量值的改變),否則就可能成了一個死循環(huán),這是初學(xué)者的一個常見錯誤。對于它們的異同點,我們也應(yīng)該了解,明確:用while和do...while循環(huán)時,循環(huán)變量的初始化的操作應(yīng)在循環(huán)體之前,而for循環(huán)一般在語句1中進行的;while循環(huán)和for循環(huán)都是先判斷表達式,后執(zhí)行循環(huán)體,而do...while循環(huán)是先執(zhí)行循環(huán)體后判斷表達式,也就是說do...while的循環(huán)體最少被執(zhí)行一次,而while循環(huán)和for就可能一次都不執(zhí)行。另外還要注意的是這三種循環(huán)都可以用break語句跳出循環(huán),用continue語句結(jié)束本次循環(huán),而goto語句與if構(gòu)成的循環(huán),是不能用break和continue語句進行控制的。[4]在這里介紹一下三種常見循環(huán)的一般格式:
  1)while循環(huán):
  while(表達式)
  循環(huán)體
  2)do-while循環(huán):
  do
  循環(huán)體
  
  while(表達式)
  3)for循環(huán):
  for(表達式1;表達式2;表達式3)
  循環(huán)體語句(組)
  (4)模塊化程序結(jié)構(gòu)
  C語言的模塊化程序結(jié)構(gòu)用函數(shù)來實現(xiàn),即將復(fù)雜的C程序分為若干模塊,每個模塊都編寫成一個C函數(shù),然后通過主函數(shù)調(diào)用函數(shù)及函數(shù)調(diào)用函數(shù)來實現(xiàn)一大型問題的C程序編寫。因此常說:C程序=主函數(shù)+子函數(shù)。因此,對函數(shù)的定義、調(diào)用、值的返回等中要尤其注重理解和應(yīng)用,并通過上機調(diào)試加以鞏固。[5]
  其實,順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)并不是彼此孤立的,在循環(huán)中可以有分支、順序結(jié)構(gòu),分支中也可以有循環(huán)、順序結(jié)構(gòu),但是不管哪種結(jié)構(gòu),我們均可廣義地把它們看成一個語句。在實際編程過程中常將這三種結(jié)構(gòu)相互結(jié)合以實現(xiàn)各種算法,設(shè)計出相應(yīng)程序,但是要編程的問題較大,編寫出的程序就往往很長、結(jié)構(gòu)重復(fù)多,造成可讀性差,難以理解,解決這個問題的方法是將C程序設(shè)計成模塊化結(jié)構(gòu)。[6]
  四、修飾——掌握一些簡單的算法
  所謂算法,就是解決某類問題的方法。確切地說,就是對某一類特定的問題,給出解決該問題的一系列(有窮的)操作,而每一操作都有其確切的意義,并在有限時間內(nèi)可以計算出結(jié)果。一個算法有多少個輸入量,它是問題給出的初始數(shù)據(jù),經(jīng)過算法的實現(xiàn),它有一個或多個輸出量,這就是算法對輸入運算的結(jié)果,即問題的解答。《C程序設(shè)計》教學(xué)大綱,只要求我們掌握一些簡單的算法,在掌握這些基本算法后,要完成對問題的分析就容易了。[7]如兩個數(shù)的交換、三個數(shù)的比較、選擇法排序和冒泡法排序,這就要求我們要清楚這些算法的內(nèi)在含義,其中選擇法排序和冒泡法排序稍難,但只要明白排序的具體過程,對代碼的理解就不難了。如要將兩個變量X、Y的值交換。
  用自然語言描述如下:
  步驟1,將X值存入中間變量Z中:X→Z。
  步驟2,將Y值存入變量X中:Y→X。
  步驟3,將中間變量Z值存入Y中:Z→Y。
  用偽代碼可表示如下:
  BEGIN
  x→z
  y→x
  z→y
  END
  當(dāng)然還可以用流程圖表示,這里就不列舉了。
  五、結(jié)語
  在大學(xué)里,許多學(xué)C語言的人,都有著不同的目的。有的人是認(rèn)真對待每一門所學(xué)的課程,包括C語言,有的人是對程序設(shè)計有著濃厚的興趣,還有的人只是為了獲得學(xué)分而學(xué)習(xí)C語言。這樣,一部分人會覺得C語言容易學(xué),一部分人又會覺得C語言難學(xué),還有一部分人會覺得C語言容易學(xué),但是不會編寫程序。這樣就導(dǎo)致了學(xué)習(xí)C語言效果的差異。其實,學(xué)習(xí)C語言并不是進行一種職業(yè)培訓(xùn),而是一種綜合思維的訓(xùn)練。我們應(yīng)當(dāng)正確認(rèn)識什么是程序,并學(xué)會一種思考問題的方法,初步掌握用C語言來進行程序設(shè)計。
  
  參考文獻:
  [1]田祥宏,榮政.C語言程序設(shè)計.西安電子科技大學(xué)出版社,2007.
  [2]李麗娟.C程序設(shè)計基礎(chǔ)教程.
  [3]Stephen Prata著.云巔工作室譯.C Primer Plus.
  [4]Kenneth A.Reek著.徐波譯.C和指針POINTERS ON C.
  [5][Bryant02]Bryant、O’Hallaron.深入理解計算機系統(tǒng)(Computer Systems:A Programmer’s Perspective).
  [6][Deitel94]H.M.Deitel.C程序設(shè)計教程(C How to Program).

主站蜘蛛池模板: 亚洲精品在线91| 国产成在线观看免费视频| 91无码视频在线观看| 尤物在线观看乱码| 喷潮白浆直流在线播放| 久久精品丝袜| 91久久国产综合精品女同我| 黄片一区二区三区| 国产麻豆精品久久一二三| 欧美在线视频a| 久久不卡国产精品无码| 国产精品无码久久久久AV| 国产女人在线| 日本三区视频| 91精品亚洲| 亚洲国产成熟视频在线多多| 少妇人妻无码首页| 狠狠v日韩v欧美v| 亚洲国产天堂久久综合226114| 亚洲精品无码抽插日韩| AV片亚洲国产男人的天堂| 国产成人艳妇AA视频在线| 伊人久久大香线蕉aⅴ色| 欧美成人午夜影院| 2021国产v亚洲v天堂无码| 亚洲Va中文字幕久久一区| 欧美高清视频一区二区三区| 日韩无码黄色网站| 一级片免费网站| 伊人福利视频| 人妻熟妇日韩AV在线播放| 国产成人综合久久| 国产一级裸网站| 波多野结衣一区二区三区四区视频| 色首页AV在线| 亚洲一区二区精品无码久久久| 91精品专区国产盗摄| 最新国产精品鲁鲁免费视频| 亚洲色无码专线精品观看| 亚洲一区二区约美女探花| a毛片在线免费观看| 天天色天天操综合网| 2021国产精品自拍| 欧美中文字幕第一页线路一| 色国产视频| 22sihu国产精品视频影视资讯| 日韩欧美视频第一区在线观看| 亚洲av中文无码乱人伦在线r| 国产精品亚洲αv天堂无码| 亚洲av无码牛牛影视在线二区| 亚洲爱婷婷色69堂| 免费无码一区二区| 亚洲视频无码| 国内精品视频在线| 国产白浆在线观看| 99精品高清在线播放| 国产精品林美惠子在线播放| 91久草视频| 欧美97色| 亚洲一区二区三区麻豆| 女高中生自慰污污网站| 亚洲嫩模喷白浆| 久久人体视频| 亚洲欧美天堂网| 97超级碰碰碰碰精品| 久久夜色精品国产嚕嚕亚洲av| 秋霞一区二区三区| 国产成人免费观看在线视频| 麻豆精选在线| 亚洲日本韩在线观看| 国产乱子伦手机在线| 热久久这里是精品6免费观看| 激情亚洲天堂| 中文字幕 91| 91久久夜色精品国产网站| 欧美国产日产一区二区| 毛片网站观看| 亚洲精品无码成人片在线观看| 国内熟女少妇一线天| 亚洲日本一本dvd高清| 国产情精品嫩草影院88av| 欧美中文字幕在线二区|