亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

計算機等級

計算機c語言學(xué)習(xí)技巧

時間:2024-09-27 11:06:58 計算機等級 我要投稿
  • 相關(guān)推薦

2017年計算機c語言學(xué)習(xí)技巧

  C 語言可以像匯編語言一樣對位、字節(jié)和地址進行操作,而這三者是計算機最基本的工作單元。下面是小編整理的關(guān)于計算機c語言學(xué)習(xí)技巧,歡迎參考!

2017年計算機c語言學(xué)習(xí)技巧

  C語言學(xué)習(xí)心得

  許多人第一次接觸C語言都會覺得C語言難懂和不容易使用,其實就我個人的看法,C語言其實是很基礎(chǔ)的匯編語言,除了一些必須要記憶的關(guān)鍵字、語法和庫函數(shù),其余的都是需要靠自己的邏輯思維通過這些關(guān)鍵字、語法和庫函數(shù)來組織或構(gòu)成一個完整的函數(shù),所以C語言大多數(shù)的學(xué)習(xí)時間都是在鍛煉我們的抽象邏輯思維能力。只有當(dāng)你具有了抽象邏輯思維能力和弄清楚了關(guān)鍵字、語法和庫函數(shù)的相關(guān)知識后,編寫C語言就不是難事了。

  通過C語言初步的學(xué)習(xí)后都很容易弄懂關(guān)鍵字、語法和庫函數(shù)的相關(guān)知識,但是由于大部分人因為以前沒有接觸過電腦或電腦語言的相關(guān)知識所以缺乏抽象邏輯思維能力,不知道如何將所學(xué)到C語言的知識如何組織和構(gòu)成一個完整的函數(shù),那么如何來有效的鍛煉自己的抽象邏輯思維能力呢?

  在這里是我個人的一套自學(xué)心得,通過學(xué)習(xí)后所掌握的知識使用上課老師所提到的案例或找一段簡單的完整的案例,然后將案例讀懂,也就是把它轉(zhuǎn)換成我們?nèi)粘K芙邮艿淖匀徽Z言(在這里不妨把你所能理解的自然語言寫下來)。例如下面這段代碼是手工輸入兩個整數(shù)數(shù)字并計算兩個數(shù)字之間從最小的數(shù)字開始到最大的數(shù)結(jié)束其中所有奇數(shù)相加的和:

  void main()

  {

  首先INT是表示整數(shù)形數(shù)據(jù)的定義,那么接下來有兩個未知的整數(shù)和一個已知的整數(shù)0;這里出現(xiàn)的3個整數(shù)數(shù)字用C語言里的變量來替代它們,這時第一個數(shù)字就用取名為NUM1的變量,第二個數(shù)字就用取名為NUM2的變量,第三個數(shù)字就用取名為X的變量并且用賦值符號來為它賦予0這個值。

  int num1,num2,x=0;

  由于知道了有兩個未知的整數(shù),所以要通過鍵盤輸入使這兩個未知的整數(shù)變成已知的整數(shù)并且儲存在前面所提到的變量中。

  scanf("%d%d ",&num1,&num2) ;

  得到數(shù)字后下面就開始進行一系列的運算和判斷,如果NUM1小于NUM2的話最小的數(shù)字就是NUM1最大的數(shù)字就是NUM2,如果NUM1這個變量不小于NUM2的話就跳過這個{}所包含的內(nèi)容。開始進行循環(huán)。

  if(num1  {

  NUM1到NUM2之間的數(shù)字個數(shù)不是固定的,不能得到固定的循環(huán)起始點,所以這里的循環(huán)起始點就不輸入代碼中,但是通過題目中的提示知道NUM1這個變量如果大于NUM2的話循環(huán)就終止了,而NUM1這個變量還需每循環(huán)一次就必須改變其值。由于NUM1到NUM2之間的數(shù)字列如1-9每個數(shù)字跟其右邊的數(shù)字都是存在加1的關(guān)系,所以這里就可以把NUM1這個值用做循環(huán)的“計數(shù)器”每循環(huán)一次就讓NUM1加1,讓其跟NUM2做比較是否結(jié)束循環(huán)。

  如何學(xué)好C語言

  1、基礎(chǔ)

  先從“單詞”談起,在英語中就是由26個英文字母以及26個英文字母構(gòu)成的單詞組成,學(xué)習(xí)語言我們首先應(yīng)該記憶的就是“單詞”,26個英文字母A,B,C,……然后就是令人頭痛的英文單詞,記憶的過程是痛苦的至少我學(xué)英語時最惱火的地方就是反復(fù)記憶老是忘記的單詞,類似的在C語言中我們可以作這樣的類比,C語言的單詞是由26個英文字母、數(shù)字(0,1,2……9)、運算符以及其他特殊符號組成,所以相比而言學(xué)習(xí)C語言是多么的幸福。

  “語法”,在英語中是如常見構(gòu)詞法、時態(tài)、常用句型、特殊用法、固定用法等等(呵呵,不是語言專家如有興趣可以參考英語語法書籍),僅拿構(gòu)詞法來說動詞后面加er就變成名詞(work-worker),名詞后面加y就變成形容詞(wind-windy)等十多種變換還要記憶些特殊變換,復(fù)雜且繁瑣,假如算上時態(tài)、句型等那就更復(fù)雜了。在C語言中也同樣也存在有語法,比如標(biāo)識符、常量、表達式、數(shù)據(jù)定義、函數(shù)定義、變量初始化、語句構(gòu)成、預(yù)處理命令等大致8種語法,如標(biāo)識符[2]可由字母、數(shù)字以及下劃線組成,且必須以字母或下劃線開頭,區(qū)分大小寫,另外在不同的編譯器中字符數(shù)目有不同的規(guī)定,一般為7個字符。不過這里有些可能會被忽略的就是書寫格式,在C語言中書寫格式也是需要被注意的,因為格式也可以當(dāng)作C語言的語法項目,如語句是以分號‘;’作為結(jié)束的標(biāo)志的而不是以換行作為結(jié)束標(biāo)志,其實英語也有要求比如什么時候該使用句號什么時候該使用逗號等等只不過我們?nèi)粘R蟛⒉蛔⒁猓乙部梢钥吹亩圆惶^真。

  綜上所述我們要學(xué)好一門程序設(shè)計語言首先就要象學(xué)習(xí)英語一樣先熟記至少要熟悉這門語言的“單詞”和“語法”然后才能談得上使用,俗話說“萬丈高樓平地起”,學(xué)好C語言的必要前提就是先打下堅實的C語言基礎(chǔ),所以潭先生的書作為一本很好的教材,我建議是不能丟的,而且還要反復(fù)看,至少剛開始我學(xué)習(xí)的時候上機機會不多,就是反復(fù)看懂看明白這本書,有些東西該記的還是要記尤其是一些重要的語法比如標(biāo)識符、數(shù)據(jù)類型、語句的特點、函數(shù)的棧式結(jié)構(gòu),指針的意義等等。

  最后始終記住這點在沒有實踐之前,先打下堅實的理論基礎(chǔ)吧,畢竟理論是實踐的先行,理論可以更好的指導(dǎo)實踐。即使再低點的要求至少要先熟悉理論吧,畢竟“摸著石頭過河”感覺還是盲目以及痛苦的。

  2、重點

  “語義”即語句的意思、含義。同人類語言一樣,程序設(shè)計語言最重要的目的還是“交流”,所以寫一段沒有任何作用的代碼就如同說一句沒有任何意思的話是沒有意義的,在這一點上兩者是共同的,至于在其他某些方面兩者也有驚人的相似之處,試舉一例吧,比如說可以有不同的表達表示同一個意思,如微型計算機同個人計算機就是同一個意思,在C語言中比如要讓變量i自增1,可以有i=i+1或者i+=1等等。不過與人類語言相比,程序設(shè)計語言畢竟是與計算機交流,交流對象計算機與人類的不同也決定了程序設(shè)計語言與人類語言還是有所區(qū)別,甚至可以說是存在巨大的“鴻溝”,這也就是學(xué)習(xí)程序設(shè)計語言的重點。

  與人類相區(qū)別,計算機最大的不同之處在于沒有“自己”的“思維”,沒有象人類那樣豐富的感情,所以在交流過程中對于人類的跳躍性的思維,對于人類的“幽默”無法理解也沒有絲毫的興趣。比如說對與同樣一句話“Do it”,在不同的場景不同的說話語氣,對10個人來說就會有10種不同的回答,有的人可能會認為這是合理的要求,有的人可能會認為這可能是個玩笑而不與理睬,有的人則可能認為語氣要求有些過分而感到非常憤怒……,但對所有的計算機來說則是嚴(yán)格執(zhí)行。不過也正是由于計算機“機械”“笨著”的可愛而深得人們的喜愛并被廣泛使用,因為對我們來說,計算機就象一個忠實的士兵一樣在執(zhí)行我們的命令并且作為指揮者,當(dāng)然我們希望計算機在合適的時間干切當(dāng)?shù)氖虑。而要達到這個目的,很湊巧有點類似于社會的“權(quán)利與義務(wù)”法則一樣,我們也有自己的義務(wù)那就是下達明確而又正確的“命令”。

  首先明確,即我們要在與計算機交流時“語義”必須明確,否則計算機將無所適從,因此作為交流工具的程序設(shè)計語言的“語義”也必須是能夠明確無二義的。當(dāng)然程序設(shè)計語言的設(shè)計者已經(jīng)注意到這一點,在設(shè)計時就回避了這個問題,所以我們——程序設(shè)計語言的使用者——程序員也就無須過多關(guān)注這點,也就是說使用何種程序設(shè)計語言(C,Basic,Pascal等)并不是我們要關(guān)注的重點。

  其次正確,包括正確的輸入以及正確的邏輯。由于計算機 “忠實”得有點“盲目”以至于對事情的對錯毫無判斷力,就象一把槍一樣,在警察手里它就是正義的化身,而在土匪手里就成了惡魔的代言人,因此要時刻記住計算機是沒有錯的,“錯誤”掌握在我們自己手里,這也就決定了我們在編程時是不是應(yīng)該投入更多的精力來糾正我們自己所犯下的錯誤上面來?除此之外,我們智慧的結(jié)晶——程序,在我們的上帝——顧客,在程序的使用者看來就象個黑匣子,他們只管輸入哪怕是錯誤的輸入?yún)s同樣期待能得到正確的結(jié)果,而對于上帝我們除了祈禱和期望之外還能有什么選擇?因此對于輸入的不可預(yù)期的程序源數(shù)據(jù),我們是不是也應(yīng)該花更多的時間進行處理呢?

  先小結(jié)下,由于我們在編程時需要對于輸入的不可預(yù)期的程序源數(shù)據(jù)以及提高我們自己的邏輯正確性花費更多的時間,因此這也就是我們編程訓(xùn)練所應(yīng)該關(guān)注的重點,而不是關(guān)注于何種實際的程序設(shè)計語言。

  為了加深印象,下面我們舉個實際的例子來說明這點。先看題目要求“輸入一行字符串(全字母或空格),統(tǒng)計其中的單詞數(shù)量,單詞之間用空格分開”,應(yīng)該說這是個簡單的題目,有些人可能一看到這個題目很快就給出了自己的答案。如有些人會想單詞是以空格分開的,我們統(tǒng)計其中空格的數(shù)量再加上最后一個單詞不就是單詞的個數(shù)嗎,因此便很快給出如下答案。

  /*Program1*/

  #include

  main()

  {

  char string[81];

  int i,num = 0;

  char c;

  gets(string);

  for(i = 0;(c=string[i])!='\0';i++)

  if(c == ' ')

  num++;

  printf("There are %d words in the line.\n",num+1);

  }

  編譯運行,然后輸入“I am a student”,得出正確答案“There are 4 words in the line.”在輸入幾個類似的測試用例,都得出正確答案,最后確信無誤便自信滿滿的交出自己的答卷。應(yīng)該說正確的輸入情況下,這個程序毫無疑問是能夠正確運行的,但這種正確性是非常脆弱的,你不能指望用戶和你一樣聰明并且不犯錯誤,何況即使是神仙那也有打盹的時候。假如用戶輸入“ I am a student”,“ I am a student”, “ I am a student ”……這種情況下,你是不是應(yīng)該重新修正你的思路呢?現(xiàn)在我這樣考慮一個單詞應(yīng)該是字母后面緊接著一個空格或者結(jié)束符號,所以重新寫下如下程序。

  /* Program 2*/

  #include

  main()

  {

  char string[81];

  int i,num = 0;

  char c;

  gets(string);

  for(i = 0;(c = string[i])!='\0';i++)

  if(c != ' ' &&(string[i+1] ==' '|| string[i+1]== '\0'))

  num++;

  printf("There are %d words in the line.\n",num);

  }

  運行一遍,發(fā)現(xiàn)結(jié)果是正確的,單詞之間不管你是有幾個空格,不管是兩個也好,三個也好都能夠正確運行,但是回過頭來我們看下這個程序是不是還有些可以改進的地方呢?我們再看如下一個程序

  /* Program 3[3]*/

  #include

  main()

  {

  char string[81];

  int i,num = 0,word = 0;/*word標(biāo)志位*/

  char c;

  gets(string);

  for(i = 0;(c = string[i])!='\0';i++)

  if(c == ' ') word = 0;

  else if(word == 0)

  {

  word = 1;

  num++;

  }

  printf("There are %d words in the line.\n",num);

  }

  輸入測試用例也能夠完全正確,看看源程序,其中增加了一個標(biāo)志位便把所有的情況給考慮進去了,相比前一個程序,程序2就是直白的描述了解題的思路,而程序3看起來好象不好理解但似乎更能滿足我們作為“天才程序員”的欲望,這也就是編程時使用的一些小技巧。

  總體比較三個程序,可以說類似程序1的錯誤——邏輯錯誤是我們程序員比較容易犯的,也是在編程調(diào)試過程中最費時間的,至于語法錯誤編譯器可以很快的給我們找出錯誤的地方程序2邏輯正確但相比程序1思路要更難想到,程序3思路不但正確而且還在編程的過程中使用了一些編程技巧,所有這些開闊的邏輯思路(解決問題),快速的調(diào)試方法及過程(發(fā)現(xiàn)錯誤),累積的編程技巧(讓程序讓“好看”)都需要我們在編程實踐中去獲得,這是寶貴的經(jīng)驗也我們作為程序員最珍貴的地方,而且最重要的這些經(jīng)驗是屬于我們自己的,獨一無二的。

  3、兩者之間的關(guān)系

  綜合上面的敘述,我們把編程看成程序設(shè)計語言的“單詞”“語法”“明確的語義”“正確的語義”四個部分,可以看出前面三個部分是幾乎所有的程序設(shè)計語言自身所具有的,“單詞”“語法”不同的程序設(shè)計語言有所不同,但如果你仔細觀察所有的程序設(shè)計語言,可以分成幾類,而且有很多地方也有相通的地方,有點象一通百通的味道,這也就是為什么很多有經(jīng)驗的程序員可以在很短的時間就能熟悉其他語言的原因。至于“明確的語義”這是所有的程序設(shè)計語言都應(yīng)該具備的,只是表述的方法由于程序設(shè)計的“單詞”“語法”不同表述不同而已,但讓計算機明白該做什么這點是相同的。最后“正確的語義”包括開闊的,正確的邏輯思路以及發(fā)現(xiàn)并糾正錯誤的能力則是屬于我們自己的,這也是我們區(qū)別于其他人的地方,這些都需要在經(jīng)常性的編程實踐中去積累去開闊,所以是我們所應(yīng)該關(guān)注的重中之重。

  跟許多前輩一樣,我是建議初學(xué)編程者先熟練掌握一門語言的,至于怎么學(xué)習(xí),我想書本是綱領(lǐng),我們首先要熟悉一門語言的粗枝大葉,在編程的過程中不至于老是去翻書查找一門語言的基本語法,比如說函數(shù)的傳遞方式,函數(shù)調(diào)用的一些特點,這樣不僅非常浪費時間而且一直困擾于語法中使得自己有種身緣“廬山”中的那種非常迷茫的感覺。就象施工一樣,建造一個茅屋可能沒有圖紙,抱著邊建邊看的態(tài)度興許能完成(事實上你自己腦海里至少也有個大致的樣子),但要建造一座大廈,沒有圖紙,困難可想而知。當(dāng)然光有圖紙還是不夠的,我們可能在施工的過程中發(fā)現(xiàn)一些問題,這樣我們在慢慢修改原來的方案或者原先有些地方描述不清楚通過具體施工確認我們的想法。因此編程實踐同樣不可少,編程實踐不僅可以“讓語義正確”即開闊編程思路,發(fā)現(xiàn)錯誤(調(diào)試),累計編程技巧,而且可以在編程過程中熟悉這門語言,熟悉這門語言的細節(jié)部分,但也請記住這些細節(jié)雖然重要,但也僅僅是細節(jié)。當(dāng)然光看書,光有理論那也是不行的,有“綱領(lǐng)”而沒有“章程”,有“綱領(lǐng)”而沒有實施那同樣也是沒用的,畢竟實踐是檢驗真理的唯一標(biāo)準(zhǔn),實踐過程中給理論修枝剪葉。

  總得來說熟悉一門程序設(shè)計語言的語法是編程實踐的先行,而編程實踐是可以更好促進對程序設(shè)計語言基本語法知識的理解和熟悉,而積累的寶貴的編程經(jīng)驗則我們自己最珍貴的地方,最獨一無二的地方,是所有程序設(shè)計語言所沒有的。

  4、寫在最后面的話

  寫到這里,我想現(xiàn)在應(yīng)該是回答第一個問題的時候了,有人說我學(xué)了這么長時間的C語言還是沒編過一個漂亮花哨的程序,編出來的都是丑陋的而且看起來沒什么價值的程序,一點自豪感都沒有便喪失了對編程的興趣,為什么前面我一直強調(diào)一門語言豐富的編程經(jīng)驗是你最珍貴的地方呢?原因就在于編程不僅僅是把我們的想法把我們的思路用程序設(shè)計語言寫下來就夠了,要得到實際運用還需要與計算機的其他知識如網(wǎng)絡(luò),低層硬件,圖形圖象,開發(fā)環(huán)境等,甚至還有其他學(xué)科知識比如自動控制,通訊等相結(jié)合,而這些知識需要我們在以后的學(xué)習(xí)過程中學(xué)習(xí),比如一些后續(xù)課程,數(shù)據(jù)結(jié)構(gòu)與算法,操作系統(tǒng),數(shù)據(jù)庫,計算機網(wǎng)絡(luò),軟件工程等等,如果有興趣你也可以在以后的課程中專門學(xué)習(xí)視窗程序的編程,或者也可以學(xué)習(xí)自己做個網(wǎng)站,那時侯就真的是有自豪感并且貨真價實的了。當(dāng)然那時侯可能你會有另外的想法比如說做嵌入式程序員,網(wǎng)絡(luò)程序員,甚至去搞算法研究等等了。不管你選擇做什么,書本知識都是大家所共有的,是全人類的財富,而自身的知識,尤其是經(jīng)驗卻實實在在是你自己的,最后我還想強調(diào)一遍,這是我們最珍貴的地方。

【計算機c語言學(xué)習(xí)技巧】相關(guān)文章:

計算機C語言試題及答案07-17

2017年c語言二級考試技巧07-17

2017計算機二c語言題庫試題及答案10-29

計算機二級《C語言》模擬試題及答案10-24

計算機二級C語言基本考點匯總07-31

計算機二級C語言題庫2016最新08-21

計算機二級C語言真題及答案07-11

C/C架構(gòu)移動學(xué)習(xí)系統(tǒng)設(shè)計06-15

計算機二級考試C語言知識點09-30

國家計算機二級c語言題庫及答案09-05