1. c語言,高級編程
呵呵,這位兄台很像我前幾個月的樣子。學c以前覺得c應該什麼都能實現。可是能學完發現自己離windows還有很遠的距離。不過我現在不這么想了。開發平台不是問題所在。其實就像上面那位兄台所說得C只是一個工具。學會了c就相當於會用了一個工具。而真正的學習才剛陵明剛開始。一個計算機的體系是與很多東西組成的。想寫出很好程序就要知道怎麼用好自己的這支筆。下面是我對計算機體系的一點淺顯的認識:
1、計算機組前銀成原理。這個就不多說了,學編成的連我們的勞動對象都不清楚那還玩什麼啊?
2、數據結構和演算法。其實所謂的程序就是對數據進行處理,而處理的數據當然要有存儲的方式,而應對這些數據存儲的方式應運而生了演算法。也就是處理問題的方法。這是真正編程的靈魂。十分重要。
3、操作系統。學完了上說的那些東西你還會認為操作系統很神秘。那我們就來親手掀開他神秘的面紗,知道操作系統都為我們做了些什麼是一件很令人愉快的事。
4、編譯原理。這門課有點難度,不過也很重要,其中有很多思維方式需要掌握,不多說了,看了就知道了。尺悔告
懂了上面我說的這些東西,我想你對計算機程序設計會有一種新的認識。可千萬不要被嚇倒了哦。每個出色的程序員都是這么混出來的。為成為一名優秀的程序員而努力吧!
2. c語言心得體會
c語言心得體會範文7篇
在平日里,心中難免會有一些新的想法,可用寫心得體會的方式將其記錄下來,這樣我們可以養成良好的總結方法。那麼心得體會該怎麼寫?想必這讓大家都很苦惱吧,以下是我幫大家整理的c語言心得體會範文,供大家參考借鑒,希望可以幫助到有需要的朋友。
c語言心得體會範文1
在初學C語言的一個學期後,我們進行了C語言實訓階段,嘗試編寫一個比較復雜的程序系統。在為期一周的時間中,我們同組的同學共同的感受是:C語言實訓和平時上課所接觸的程序是有很大不同的,所經受的考驗和克服的困難是平時所無法比擬的。好在同組的搭檔們精誠合作,分工明確,有問題共同解決,攻克了C語言實訓的復雜程序。在這里,我作為其中的參與者,感觸良多。
在這次實訓中,我對對C語言有了一個更深的了解認識,也對這個學期學的知識得到鞏固,還嘗試運行編程,每次運行程序成功,讓我對下面的項目就充滿信心。通過自己與同學合作編寫程序,最終把最初的理論知識轉化基本技能。這次的實訓,使我對C語言的學習產生濃厚的興趣。
還是這次實訓,最令人激動的就是合作做項目,雖然那隻是一個很小很小的項目。每天大家來得很早,大家在一起學習,取長補短,我們很好的在實訓中長知識,提高我們的學習熱情。實訓中深切體會到了老師認真負責的偉大的精神和熱情為同學指導的促學方式,雖然對有些時候老師沒給我們指出解決問題的方法有些小抱怨,但是到了結束時才知道,這種教學讓我們自己學會了自學,學會了去看懂別人的代碼。更多是老師給的感動,每天在我們來之前就到了教室,在講課中海給我們分享他在公司上班的一些心得和體會,還有那些我們應該注意的事項,這些是平時上課時無法學到的,是更深層次的巨大收獲。
通過這次實訓,也使我們發現了許多問題。
在實訓中,我們認識到自己還有很多的知識沒學好,基礎知識沒理清,而且許多東西還要去翻書,去上網搜索。而且遇到一些小錯誤運行不出來,就會煩躁不安,覺得有些自暴自棄或者抱怨項目的變態,以後要克服,盡量保持一顆良好的心態,學好C語言,也學好用C語言編寫一個按要求的系統。
還有就是對於未來,近程就是下學期,我覺得我還有許多方面需要提高。
首先我要繼續學習好C語言的基礎知識,然後能在電腦上熟練的運用。然後每天都能寫一些程序,上網時候多看一些優秀的教程和優秀的代碼。遇到問題時多和同學討論,並且多弄出幾套方案,多鍛煉自己結局問題的能力和與同學合作的能力。
總之,這一切都成為我記憶裡面的一個篇章,更是在C語言編程上的一個里程碑。
c語言心得體會範文2
通過一學期對C語言的學習,我感覺學習C語言是有一定難度卻又是非常有趣的科目。也是很有幫助的,特別是對將要面對的計算機二級考試。這段時間的學習我知道了C語言的基本特點有以下幾點:
1.語言簡潔,使用靈活方便。
2.運算符豐富,表達能力強。
3.數計類型豐富。
4.目標程序質量高,具有面向硬體系統的特點。
5.具有結構化的控制語句和模塊化的程序結構。
6.具有編譯預處理功能。
7.程序設計自由度大,可移植性好。
這段時間學習使我掌握了:
一、我學習了C語言的數據類型、常量與符號常量、變數、C語言的運
算符和表達式、賦值運算符和賦值表達式、自增自減運算符以及逗號表達式等。
二、這章介紹了結構化程序的三種基本結構、C語句概述、數據輸出包
括字元輸出函數putchar和格式輸出函數printf、數據輸入包括字元輸入函數getchar和格式輸入函數scanf,還有一些簡單的C語程序設計舉列等。
前幾天一直在看C++語法,所以對一些比較實際的例子總感到比較抽象,但是那也是一個必需階段,可能大家和我的學習方式不一樣,但從剛接觸程序到現在來看,發現這樣學習語言的方法挺不錯的。
經過第一階段對語法的學習,我覺得實例階段應該是一個過渡階段吧,通過前一階段對語法的學習之後,可能有很多概念我們都比較模糊,或者說很多東西太抽象了,這就為我們第二個階段的學習做好了實例化的准備,可以這樣說吧,第一個階段就我們為我們的學習一樣東西而構建的一個類,裡面講了我們應該在這裡面要做什麼?第二階,也就是本階段,我們就應該去把前一段的東西具體化(實例化先前創建的類),那怎麼個具體化呢,呵呵!說白了,去練習一些小例子,從網上下載的電子書上有很多這方面的例子的,如果有自己去書店買書的話,裡面也應該提供了不少,裡面的例子,我是每次都打了一遍,也許有的人不會親自去用手打一遍,什麼等,當然這樣也行,但我個人認為,對於初學者來說,最好還是自己動手打一遍比較好,畢竟這些東西對我們來說,都比較陌生,如果每個字都自己打完的話,有些代碼你不想記住也難了,在這里,我們得弄懂練習的每一個例子,如果能把一些例子稍稍修改,弄懂裡面精髓的東西,讓自己知道為什麼這樣做,那麼是最好不過的了,我平時練習時,這一步是少不了的,都習慣了,所以也就成了條件反射,想不這樣都不行。最後,我們就應該匯一下總,把前面做過的例子里所用的技術理一下,再做一個比較大的例子,盡量把到目前為止所懂的知識全部應用到裡面去,只是盡量,當然有些東西是不能集成到一起的,也是是代碼之間的排斥性。
這是個人的一點學習心得,希望能更好的運用到學習中去。C語言是一門很有用的、對於我們的就業很實際的語言,學習好C語言是一項必須而實際的任務。我們必須要好好掌握。
c語言心得體會範文3
三周的課程設計已經結束了。
回想學習C語言 的過程中,既有快樂又有煩惱。
從領到書的那一刻,我就很郁悶,《C 語言程序設計》到底事學什麼的,有什麼用。剛開始上課時,還在迷茫這門課程是用來做什麼的。不過,這些感受都是在對這門課程不了解的情況下產生的。後來慢慢的接觸多了,聽老師講的多了,了解多了,漸漸的產生了興趣。尤其是學到語句和函數時,上機操作程序,經過編譯,調試和運行後,出現界面,當時覺得很好奇,想真正的學好這門課程。通過半個學期的學習,我掌握了基本知識。
下學期開始時,被通知要進行三周的課程設計。當時有點懵,感覺學的東西很少,很零散,不知該怎麼練到一起,就要課程設計,是不是太難為我們了。
第一天基本上都是在看書,把基本知識再熟悉一邊。到了下午的時候,老師發過來三道練習題,從這幾道練習題上我得到了不少啟發,然後我們組把整個程序的思路理清了,開始著手寫程序。
第一周結束的時候,我感覺自己收獲挺大的,從一開始的迷茫,不知道從何下手到把程序中的幾個模塊編寫出來,心裡挺開心的。但是,到了第二周,我們由不得不再次陷入困境。在整個程序的編寫過程中。最難的就是修改和刪除這兩個模塊,這也是我們第二周要解決的重點問題。
開始編寫修改和刪除時,很頭疼,去向其他人尋求幫助,在別人的幫助和提示下,我編完了修改程序,但編譯時老出錯,修改後的內容將文本內的信息全部覆蓋了。困難之時,我們組的其他人,幫助了我,完成了修改和刪除。這樣的話,整個程序基本上全部完成了,就剩下完善工作了。我們組寫了兩個程序,最後,兩個程序相互組合,互補,大功告成
雖然設計時完成了,但是我覺得其中還是由一些不足之處:
1. 警告句。程序中缺少一些警告句,例如:「是否真的刪除(y/n)?」。
2. 重名的情況。由於考慮的不周全,沒有設計遇到重名的情況該怎麼處理。
3. 選擇單一。我們設計的程序中,只設計了按名字選擇,進行操作,忽略了重名的情況。
整個程序完成了,還有很多不完善的地方,希望自己以後辦事的時候要認真,仔細,考慮周全。
短短的三周課程設計結束了,但是這段時間里,我又學到了更多C 知識,如:對象數組,string類,文件流等,同時我也被提醒以後辦事的時候要認真,仔細,考慮周全。,也看到了團隊精神和互幫互助的重要性。這一點會讓我終生受益。通過三周的課程設計,我覺得自己肚子里的墨水多了,收獲也挺大的,這三周過的挺充實!
c語言心得體會範文4
在初學C語言的一個學期後,我們進行了C語言階段,嘗試編寫各種類型的程序。在為期一個周時間中,我的感受是:C語言實訓和平時上課所接觸的成有很多不同,所經受的考驗和克服的困難和平時的相差不大,遇到不會做的題同學互相討論,互相幫助,共同解決,攻克了C語言的復雜程序,我感觸良多。
在這次實訓中,我對C語言有了一個更深的認識了解,也對這學期的知識得到鞏固,還嘗試了運行編程,每次運行程序成功,讓我對下面的項目充滿了信心通過自己的努力最終把最初的理論知識轉化成基本技能,這次的實訓,是我對C語言的學習產生了農活的興趣。
還是這次實訓,最令人激動的就是同學遇到問題互相幫助雖然只是一個很小得實訓,但同學們的滿腔人情卻是值得驕傲的,我們在實訓中取長補短在實訓中長知識,提高了我們學習,雖然對有些時候老師沒給我們指出解決問題的方法有一些小抱怨,但到了結束是才知道,這種教學讓我們自己學會了自學,學會了去看懂別人的代碼。更多的是老師的感動,每天在我們來之前家到了機房,給我們我分享他學C語言的感受,還提醒我們注意在編程時與遇到的事項,,這些是我們平時上課無發了解到的知識是我們更深層次的極大收獲。
通過實訓我們也發現了許多問題,在試訓中我認識到自己還有很多知識沒學好,最基本的'知識點沒有理清楚,而且許多東西要經過翻書,上網查閱,搜索,遇到一小點錯誤運行不出來,就會煩躁不安,覺得有些自暴自棄或這抱怨題目有些變態,以後要克服,盡量保持一顆藍好的心態,學好C語言,用C語言來編寫一個按要求的系統。
對於未來,近程下個學期,我覺得我還有許多方面需要提高。
首先我要繼續學習好C語言的基礎知識,然後能在電腦上熟練的運用。能寫出一些程序,上網的時候多看一些優秀的教程和優秀的代碼,遇到問題是多和同學討論,並且多弄出幾套方案,多練習自己結局問題的能力和與同學合作的能力。
總之,這一切都成為我記憶裡面的一個篇章,更是C語言編程上的一個里程碑。
c語言心得體會範文5
在科技高度發展的今天,計算機在人們之中的作用越來越突出。而c語言作為一種計算機的語言,我們學習它,有助於我們更好的了解計算機,與計算機進行交流,因此,c語言的學習對我們尤其重要。
在這個星期里,我們專業的學生在專業老師的帶領下進行了c語言程序實踐學習。在這之前,我們已經對c語言這門課程學習了一個學期,對其有了一定的了解,但是也僅僅是停留在了解的范圍,對裡面的好多東西還是很陌生,更多的在運用起來的時候還是感到很棘手,畢竟,萬事開頭難嘛。
由於時間的關系,我們的這次實踐課程老師並沒有給我們詳細的介紹,只是給我們簡單的介紹了幾個比較重要的實際操作。包括了程序模塊處理。簡單界面程序。高級界面程序。程序的添加修改。用程序做一元線性回歸處理以及用c語言程序來畫粒度分布圖等這幾樣比較重要的時間操作。
上機實驗是學習程序設計語言必不可少的實踐環節,特別是c語言靈活、簡潔,更需要通過編程的實踐來真正掌握它。對於程序設計語言的學習目的,可以概括為學習語法規定、掌握程序設計方法、提高程序開發能力,這些都必須通過充分的實際上機操作才能完成。
學習c程序設計語言除了課堂講授以外,必須保證有不少於課堂講授學時的上機時間。因為學時所限,課程不能安排過多的統一上機實驗,所以希望學生有效地利用課程上機實驗的機會,盡快掌握用c語言開發程序的能力,為今後的繼續學習打下一個良好的基礎。為此,我們結合課堂講授的內容和進度,安排了12次上機實驗。課程上機實驗的目的,不僅僅是驗證教材和講課的內容、檢查自己所編的程序是否正確,課程安排的上機實驗的目的可以概括為如下幾個方面:
1.加深對課堂講授內容的理解
課堂上要講授許多關於c語言的語法規則,聽起來十分枯燥無味,也不容易記住,死記硬背是不可取的。然而要使用c語言這個工具解決實際問題,又必須掌握它。通過多次上機練習,對於語法知識有了感性的認識,加深對它的理解,在理解的基礎上就會自然而然地掌握c語言的語法規定。對於一些內容自己認為在課堂上聽懂了,但上機實踐中會發現原來理解的偏差,
這是由於大部分學生是初次接觸程序設計,缺乏程序設計的實踐所致。
學習c語言不能停留在學習它的語法規則,而是利用學到的知識編寫c語言程序,解決實際問題。即把c語言作為工具,描述解決實際問題的步驟,由計算機幫助我們解題。只有通過上機才能檢驗自己是否掌握c語言、自己編寫的程序是否能夠正確地解題。
通過上機實驗來驗證自己編制的程序是否正確,恐怕是大多數同學在完成老師作業時的心態。但是在程序設計領域里這是一定要克服的傳統的、錯誤的想法。因為在這種思想支配下,可能你會想辦法去"掩蓋"程序中的錯誤,而不是盡可能多地發現程序中存在的問題。自己編好程序上機調試運行時,可能有很多你想不到的情況發生,通過解決這些問題,可以逐步提高自己對c語言的理解和程序開發能力。
2.熟悉程序開發環境、學習計算機系統的操作方法
一個c語言程序從編輯、編譯、連接到運行,都要在一定的外部操作環境下才能進行。所謂"環境"就是所用的計算機系統硬體、軟體條件,只有學會使用這些環境,才能進行程序開發工作。通過上機實驗,熟練地掌握c語言開發環境,為以後真正編寫計算機程序解決實際問題打下基礎。同時,在今後遇到其它開發環境時就會觸類旁通,很快掌握新系統的使用。
3.學習上機調試程序
完成程序的編寫,決不意味著萬事大吉。你認為萬無一失的程序,實際上機運行時可能不斷出現麻煩。如編譯程序檢測出一大堆錯誤。有時程序本身不存在語法錯誤,也能夠順利運行,但是運行結果顯然是錯誤的。開發環境所提供的編譯系統無法發現這種程序邏輯錯誤,只能靠自己的上機經驗分析判斷錯誤所在。程序的調試是一個技巧性很強的工作,對於初學者來說,盡快掌握程序調試方法是非常重要的。有時候一個消耗你幾個小時時間的小小錯誤,調試高手一眼就看出錯誤所在。
通過這次為數不多的幾天計算機實踐學習,我們了解了一些關於c語言的知識,理解鞏固了我們c語言的理論知識,著對我們將來到社會工作將會有莫大的幫助。同時它讓我知道,只要你努力,任何東西都不會太難。
c語言心得體會範文6
1、引言
《C語言程序設計》是各大高校理工類專業的一門重要的必修課程,由於C語言使用靈活,數據類型繁多,結構復雜,因此學生在學習該課程時都或多或少的感覺頭疼,學習不得要領。這就要求教師在教學中需要貫穿先進的教學理念,採用適合的教學方法。本文針對C語言教學中存在的問題,結合多年的教學經驗,提出幾點教學方法和體會。
2、C語言教學中存在的問題
2.1學生學習熱情不高
C語言課程的開設對象一般為大一學生,想讓他們馬上接受程序設計的思想幾乎是不可能的。另外他們從高年級同學那裡得知C語言學習難度大,就會產生學習C語言這門課程的懼怕心理。還有一部分學生認為學習C語言對自身的專業沒有什麼用處,因此產生了厭學的情緒。
2.2傳統教學方式存在弊端
以教師為中心的灌輸式教學方法忽視了學生的「學」,學生處於被動接受狀態,缺少教師和學生的互動,學生學習的主動性、積極性難以發揮。雖然近年來C語言程序設計課程多媒體課件教學得到廣泛普及,在某種程度上激發了學生的學習興趣,但仍然沒有脫離傳統教學方式,缺少教學目標的針對性,由「照本宣科」變為「照片(幻燈片)宣科」,沒有從根本上解決師生交互匱乏的現實[1]。
2.3學生學習方法不得當
由於大一學生還不是很適應大學的學習方式,很多時候還沿用高中時候學數學、英語等科目的方法來學習C語言,一些學生只重視理論知識,以為光靠背一背、做做題就能學好,忽視了實踐環節的重要性,從而導致了一部分學生學不得法,效率極低。
3、幾點教學體會
針對上述存在的問題,分別提出幾點體會,可以歸納為:「一個目標」、「兩個關鍵」、「三步實踐」。
3.1樹立一個目標
這是針對學生的學習態度提出的。做一件事情如果沒有一個明確的目標。就很難提起興趣,遇到困難也很容易放棄,當然也無法做好。學習C語言也不例外。如果想激發學生的學習興趣,讓學生喜歡學、主動學,就必須讓學生明確為什麼要學習C語言,明確一個學習的目標。事實上,學習C語言對於任何專業的學生都有莫大的好處,可以鍛煉邏輯思維能力,對以後的專業課的學習有很好的輔助作用,也會對以後學習其他編程語言打下良好的基礎,正所謂」萬變不離其宗」,如果真正掌握精了程序設計思想,具備了真正解決實際問題的能力,語言再更新可程序設計的本質不會變[2]。當然,從更實用的角度來看,可以把「通過國家二級考試」作為一個為之努力實現的目標,不僅對以後就業很有幫助,讓學習有了興趣和動力,有了克服困難的決心,取得事半功倍的效果。
c語言心得體會範文7
在初學C語言的一個學期後,我們進行了C語言實訓階段,嘗試自己編寫一個比較復雜的程序系統。在為期兩周的時間中,我們同組的同學共同的感受是:C語言實訓和平時上課所接觸的程序是有很大不同的,所經受的考驗和克服的困難是平時所無法比擬的。好在同組的搭檔們精誠合作,分工明確,有問題共同解決,攻克了C語言實訓的復雜程序。在這里,我作為其中的參與者,自然感觸良多。
剛開始接觸到C的時候,我已經學過一些有關VB的內容,這個在演算法和思維上稍微有點幫助。回想本學期的學習,首先,最基本的,是C的數據格式,讓我們知道整數,浮點數以及字元常量在C中的運用。然後,在學會了數據轉化,以及熟練的可以對各種數據處理之後,我開始進行有關數據結構,像數組,結構體等的學習,因為有的東西從現有的知識來看都是非常簡單的,還沒有聯繫到指針等等一些復雜的概念。可是,僅僅學會這些是遠遠不夠的,C語言中,還有很多更加經典、重要、實用的知識。
說說函數。雖說很多程序語言都有函數這一內容,但我覺得C語言的函數是最有魅力的了。學習函數的方法是比較簡單的,只有兩個字「牢記」,即:牢記函數的功能,牢記函數的用途以及如何輸入輸出。函數從本質上講是一段通用程序,用它可以幫助我們節約很多編程的時間,學習C語言的「高人」都說,一個聰明的編程者在編寫程序前往往總是先找自己所編寫的程序中有多少是可以用函數來代替的。比如,大家可以作一個比較字元串的實驗,用C語言中的strcmp()函數只要一句話,而自己編寫的話,30句都很難實現,可想而知函數的實用和快捷。在我們C語言實訓的代碼中,函數更是得到了充分的應用,可以說,實訓題目的復雜代碼,就是用無數個函數的調用和嵌套積累出來的。
要注意的是,有的同學剛剛開始的時候,都是被一些大的程序激勵的,所以當開始的時候看到繁瑣的數據轉化和簡單的演算法,都覺得很無聊,都想自己做幾個自己滿意的程序來看看,雖然這種想法很好,但是,我們說,沒有基礎,純粹是搬照一些現成設計方法,是不足取的。要知道,程序設計講究的是個人的思維的,假如剛開始就被一些現成的思想束縛住,以後就會覺得很無趣。
我們知道,指針其實是C語言的靈魂,許多的數據結構在我們學到這里之前都可以說是精通了。所以我們的任務就是,讓數據結構在指針中運行。當然,剛剛開始接觸到這些新的東西,是一件非常痛苦的事情,所以我們一定要用非常形象的思維去看待指針,不能太固化。所以,新的東西,比如結構體在指針中的表現方法,數組及多維數組在結構體中的運用,都一點一點的加了進來,同時豐滿了我們對原來C的數據機構,數據表示的理解。當我們完成了這三步的學習,我們已經可以自豪的說,我們的基礎都扎實了,可以進一步的學習有關演算法,設計概念等等深層次的東西了。
但是,指針,結構體,這些太抽象的東西,在學習C語言的時候我們就有點「似懂非懂」,可是在眼下的C語言實訓中,像這么重要的C語言知識,一定要達到能熟練掌握,實際運用的程度。在實訓的大程序中,結構體在指針中的表現方法,數組及在結構體中的運用等具體的技術環節,都得到了體現,不會指針,我們的工作是沒法展開的。所以,在實訓期間,大家在鞏固基本知識的基礎上,逐塊攻克實訓課題,克服了困難,自信心得到了提高。
最後,談談我們組的程序軟體。商店商品管理系統,是一個比較利於應用,解決實際問題,方便實際管理的程序。設計代碼比較復雜,結構比較嚴謹。在程序編寫的1周左右的時間里,組員們遇到了上述的困難,包括程序設計構思,甚至是指針等某些知識點的欠缺,導致的工作中出現的困難。但是,當大家一起團結協作,解決了這些困難之後,發現自己也可以編寫復雜的、應用性的程序了,更發現自己對C語言這門學科的興趣也提高了。
當然,我們編寫的商店商品管理系統,還存在很多疏漏和不合理之處。比如,程序復雜冗長,如果時間充裕,我們將在不改變程序運行結果的基礎上,簡化程序,使每一句更加精闢,總體上更加簡化。另外,在程序的外觀上,我們由於時間問題,沒有做更多的修飾,運行起來顯得比較死板、枯燥乏味。如果增添一些色彩和其他效果,我們的程序也許會更加完美。
3. C語言學習
教了多年《C程序設計》課程,大多學生覺的這門課程難學。其實,按照我們現在的教學大綱和教學要求,只要同學們掌握一些方法,克服心理上畏難、不輕言放棄,是完全可以學好的。
《C程序設計》的內容很豐富,按照我們現在的教學大綱,教學的主要內容是基礎知識、四種結構的的程序設計、函數與數組的應用和一些簡單的演算法。在學習時,同學們應該把主要精力放在這些部分,通過實踐(練習和上機調試等熟練掌握。當然,在初學C語言時,可能會遇到有些問題理解不透,或者表達方式與以往數學學習中不同(如運算符等),這就要求不氣餒,不明白的地方多問多想,鼓足勇氣進行學習,待學完後面的章節知識,前面的問題也就迎刃而解了,這一方面我感覺是我們同學最欠缺,大多學不好的就是因為一開始遇到困難就放棄,曾經和好多同學談他的問題,回答是聽不懂、不想聽、放棄這樣三個過程,我反問,這節課你聽過課嗎?回答又是沒有,根本就沒聽過課,怎麼說自己聽不懂呢?相應的根本就沒學習,又談何學的好?
學習C語言始終要記住「曙光在前頭」和「千金難買回頭看」,「千金難買回頭看」是學習知識的重要方法,就是說,學習後面的知識,不要忘了回頭弄清遺留下的問題和加深理解前面的知識,這是我們學生最不易做到的,然而卻又是最重要的。比如:在C語言中最典型的是關於結構化程序設計構思,不管是那種教材,一開始就強調這種方法,這時也許你不能充分體會,但是學到函數時,再回頭來仔細體會,溫故知新,理解它就沒有那麼難了。學習C語言就是要經過幾個反復,才能前後貫穿,積累應該掌握的C知識。
那麼,我們如何學好《C程序設計》呢?
一.學好C語言的運算符和運算順序
這是學好《C程序設計》的基礎,C語言的運算非常靈活,功能十分豐富,運算種類遠多於其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。在學習中,只要我們對此合理進行分類,找出它們與我們在數學中所學到運算之間的不同點之後,記住這些運算也就不困難了,有些運算符在理解後更會牢記心中,將來用起來得心應手,而有些可暫時放棄不記,等用到時再記不遲。
先要明確運算符按優先順序不同分類,《C程序設計》運算符可分為15種優先順序,從高到低,優先順序為1 ~ 15,除第2、3級和第14級為從右至左結合外,其它都是從左至右結合,它決定同級運算符的運算順序。下面我們通過幾個例子來說明:
(1) 5*8/4%10 這個表達式中出現3種運算符,是同級運算符,運算順序按從左至右結合,因此先計算5 *8=40,然後被4除,結果為10,最後是%(求余數)運算,所以表達式的最終結果為10%10 = 0;
(2)a = 3;b = 5;c =++ a* b ;d =a + +* b;
對於c=++a*b來說,按表中所列順序,+ +先執行,*後執行,所以+ + a執行後,a的值為4,由於+ +為前置運算,所以a的值4參與運算,C的值計算式為4*5=20而不是3*5=15了;而對於d=a++*b來說,由於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。
(4)a=5;b=6;c=a>b?a:b;
例中的a>b?a:b是一個三目運算,它的功能是先做關系運算a>b部分,若結果為真,則取問號後a的值,否則取冒號後b的值,因此c的值應該為6,這個運算可以用來代替if…else…語句的簡單應用。
二.學好C語言的四種程序結構
(1)順序結構
順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。
例如;a = 3,b = 5,現交換a,b的值,這個問題就好象交換兩個杯子水,這當然要用到第三個杯子,假如第三個杯子是c,那麼正確的程序為: 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。不過大多數情況下順序結構都是作為程序的一部分,與其它結構一起構成一個復雜的程序,例如分支結構中的復合語句、循環結構中的循環體等。
(2) 分支結構
順序結構的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。對於要先做判斷再選擇的問題就要使用分支結構。分支結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。分支結構的程序設計方法的關鍵在於構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的分支語句。分支結構適合於帶有邏輯或關系比較等條件判斷的計算,設計這類程序時往往都要先繪制其程序流程圖,然後根據程序流程寫出源程序,這樣做把程序設計分析與語言分開,使得問題簡單化,易於理解。程序流程圖是根據解題分析所繪制的程序執行流程圖。
學習分支結構不要被分支嵌套所迷惑,只要正確繪制出流程圖,弄清各分支所要執行的功能,嵌套結構也就不難了。嵌套只不過是分支中又包括分支語句而已,不是新知識,只要對雙分支的理解清楚,分支嵌套是不難的。下面我介紹幾種基本的分支結構。
①if(條件)
{
分支體
}
這種分支結構中的分支體可以是一條語句,此時「{ }」可以省略,也可以是多條語句即復合語句。它有兩條分支路徑可選,一是當條件為真,執行分支體,否則跳過分支體,這時分支體就不會執行。如:要計算x的絕對值,根據絕對值定義,我們知道,當x>=0時,其絕對值不變,而x<0時其絕對值是為x的反號,因此程序段為:if(x<0) x=-x;
②if(條件)
{分支1}
else
{分支2}
這是典型的分支結構,如果條件成立,執行分支1,否則執行分支2,分支1和分支2都可以是1條或若干條語句構成。如:求ax^2+bx+c=0的根
分析:因為當b^2-4ac>=0時,方程有兩個實根,否則(b^2-4ac<0)有兩個共軛復根。其程序段如下:
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) {分支1};
else if(條件2) {分支2}
else if(條件3) {分支3}
……
else if(條件n) {分支n}
else {分支n+1}
嵌套分支語句雖可解決多個入口和出口的問題,但超過3重嵌套後,語句結構變得非常復雜,對於程序的閱讀和理解都極為不便,建議嵌套在3重以內,超過3重可以用下面的語句。
④switch開關語句:該語句也是多分支選擇語句,到底執行哪一塊,取決於開關設置,也就是表達式的值與常量表達式相匹配的那一路,它不同if…else 語句,它的所有分支都是並列的,程序執行時,由第一分支開始查找,如果相匹配,執行其後的塊,接著執行第2分支,第3分支……的塊,直到遇到break語句;如果不匹配,查找下一個分支是否匹配。這個語句在應用時要特別注意開關條件的合理設置以及break語句的合理應用。
(3)循環結構:
循環結構可以減少源程序重復書寫的工作量,用來描述重復執行某段演算法的問題,這是程序設計中最能發揮計算機特長的程序結構,C語言中提供四種循環,即goto循環、while循環、do –while循環和for循環。四種循環可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環,因為強制改變程序的順序經常會給程序的運行帶來不可預料的錯誤,在學習中我們主要學習while、do…while、for三種循環。常用的三種循環結構學習的重點在於弄清它們相同與不同之處,以便在不同場合下使用,這就要清楚三種循環的格式和執行順序,將每種循環的流程圖理解透徹後就會明白如何替換使用,如把while循環的例題,用for語句重新編寫一個程序,這樣能更好地理解它們的作用。特別要注意在循環體內應包含趨於結束的語句(即循環變數值的改變),否則就可能成了一個死循環,這是初學者的一個常見錯誤。
在學完這三個循環後,應明確它們的異同點:用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程序=主函數+子函數。 因些,對函數的定義、調用、值的返回等中要尤其注重理解和應用,並通過上機調試加以鞏固。
三.掌握一些簡單的演算法
編程其實一大部分工作就是分析問題,找到解決問題的方法,再以相應的編程語言寫出代碼。這就要求掌握演算法,根據我們的《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)與a[1]交換,此時a[1]中存放了10個中最小的數。第二輪將a[2]與a[3]~a[10]比較,將剩下9個數中的最小者a與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>a[j]
{temp=a;
a=a[j];
a[j]=temp;
}
結語:當我們把握好上述幾方面後,只要同學們能克服畏難、厭學、上課能專心聽講,做好練習與上機調試,其實C語言並不難學。
參考資料:http://www.kudonet.cn/forum/ultimatebb.cgi?ubb=get_topic;f=15;t=000968
4. 求一份單片機C語言編程的32個關鍵字和9種控制語句的主要作用表
auto
:聲明自動變數
short
:聲明短整型變數或函數
int:
聲明整型變數或函數
long
:聲明長整型變數或函數
float:聲明浮點型變數或函數
double
:聲明雙精度變數或函數
char
:聲明字元型變數或函數
struct:聲明結構體變數或函數
union:聲明共用數據類型
enum
:聲明枚舉類型
typedef:用以給數據類型取別名
const
:聲明只讀變數
unsigned:聲明無符號類型變數或函數
signed:聲明有符號類型變數或函數
extern:聲明變數是在其他文件中聲明
register:聲明寄存器變數
static
:聲明靜態變數
volatile:說明變數在程序執行中可被隱含地改變
void
:聲明函數無返回值或無參數,聲明無類型指針
if:條件語句
else
:條件語句否定分支(與
if
連用)
switch
:用於開關語句
case:開關語句分支
for:一種循環語句
do
:循環語句的循環體
while
:循環語句的循環條件
goto:無條件跳轉語句
continue:結束當前循環,開始下一輪循環
break:跳出當前循環
default:開關語句中的「其他」分支
sizeof:計算數據類型長度
return
:子程序返回語句(可以帶參數,也可不帶參數)循環條件
5. C語言關鍵詞學習總結
C語言關鍵詞學習總結
一、static關鍵字
1、局部變數
生命周期:原先存在棧中,生命周期語句執行完畢便結束了。現在存放到靜態數據區,生命周期持續到整個程序執行結束。
作用域:並沒有改變作用域,還是僅限於該語句塊。並且只在初次運行的時候進行初始化,下次調用時它的值是上一次函數調用結束之後的值。每次調用後值會被保存。
2、全局變數
對干一個全部變數,既可以在本源文件中被訪問到,也可以在同一個工程的其它源文件中被訪問(只需用extern進行聲明即可)。如果加上static,限制該全局變數的作用域范圍,由原來的整個工程可見變為本世蔽源文件可見。
二、const關鍵字
1、用const修飾一般變數
用const修飾的變數必須在聲明時進行初始化(用來修飾函數的形參除外)。
2、const與指針搭配使用
用const修飾的變數必須在聲明時進行初始化(用來修飾函數的形參除外)。
兩個基礎概念: 指針常量和常量指針。
指針常量:即指針本身的值是不可改變的,而指針指廳返宴向的變數的值是可以改變的;
常量指針:即指針指向的變數的值是不可改變的,而指針本身的值是可以改變的。
三、register關鍵字用法
register: 這個關鍵字請求編譯器盡可能的將變數存在CPU 內部寄存器中而不是通過內存定址訪問以提高效率。注意是盡可能,不是絕對。寄存器其實就是一塊一塊小的存儲空間,只不過其存取速度要比內存快得多。數據扮銀從內存里拿出來先放到寄存器,然後CPU 再從寄存器里讀取數據來處理,處理完後同樣把數據通過寄存器存放到內存里,CPU 不直接和內存打交道。
四、auto關鍵字
用於聲明變數的生存期為自動,所有的變數默認就是auto的。
五、inline內聯函數
調用函數時需要一定的時間和空間的開銷。C++提供一種提高效率的方法,即在編譯時將函數調用處用函數體替換,類似於C語言中的宏展開。這種在函數調用處直接嵌入函數體的函數稱為內聯函數(inlinefunction),又稱內嵌函數或內置函數。
優點:內聯函數可以有效避免函數調用的開銷,程序執行效率更高。
缺點:如果被聲明為內聯函數的函數體非常大,則編譯器編譯後程序的可執行碼將會變得很大。
6. C語言編程的常用語句及其作用
C語言控制語句①條件語句:if—else語句
②開關語句:switch語句
⑧當循環語句:while語句
④直到循環語句:do—while語句
⑤計數循環語句:for·語句
⑥中止本次循環語句:continue語句
⑦中止整個循環語句:break語句
⑧函數返回語句:return語句
⑨無條件轉移語句:goto語句 C語言的關鍵字共有32個,根據關鍵字的作用,可分其為數據類型關鍵字、控制語句關鍵字、存儲類型關鍵字和其它關鍵字四類。
1 數據類型關鍵字(12個): (1) char :聲明字元型變數或函數
(2) double :聲明雙精度變數或函數
(3) enum :聲明枚舉類型
(4) float:聲明浮點型變數或函數
(5) int: 聲明整型變數或函數
(6) long :聲明長整型變數或函數
(7) short :聲明短整型變數或函數
(8) signed:聲明有符號類型變數或函數
(9) struct:聲明結構體變數或函數
(10) union:聲明共用體(聯合)數據類型
(11) unsigned:聲明無符號類型變數或函數
(12) void :聲明函數無返回值或無參數,聲明無類型指針(基本上就這三個作用)
2控制語句關鍵字(12個): A循環語句
(1) for:一種循環語句(可意會不可言傳)
(2) do :循環語句的循環體
(3) while :循環語句的循環條件
(4) break:跳出當前循環
(5) continue:結束當前循環,開始下一輪循環
B條件語句
(1)if: 條件語句
(2)else :條件語句否定分支(與 if 連用)
(3)goto:無條件跳轉語句
C開關語句
(1)switch :用於開關語句
(2)case:開關語句分支
(3)default:開關語句中的「其他」分支
D返回語句
return :子程序返回語句(可以帶參數,也看不帶參數)
3 存儲類型關鍵字(4個) (1)auto :聲明自動變數 一般不使用
(2)extern:聲明變數是在其他文件正聲明(也可以看做是引用變數)
(3)register:聲明積存器變數
(4)static :聲明靜態變數 4 其它關鍵字(4個): (1)const :聲明只讀變數
(2)sizeof:計算數據類型長度
(3)typedef:用以給數據類型取別名(當然還有其他作用
(4)volatile:說明變數在程序執行中可被隱含地改變
7. 編程學習
Java語言適合初學者學習,
Java語言由語法規則和類庫兩部分組成,其中語法規則確定了Java程序的書寫規范,學習好語法規則是Java語言,也是所有編程語言的基本功。本文主要向大家簡單介紹一下Java的語法規則。 Java語言與C/C++語言有著緊密的聯系,Java中的許多術語來自於C++,起語法也來自於C++。因此Java的語法和c++的語法計劃一模一樣。下面簡單介紹一下Java的具體語法。
一、Java的詞法
1、標識符
標識符是類、變數和方法等的名字,作用是讓編譯器能夠識別它們。在Java語言中,標識符可以包含數字、字母、下劃線(_)和美圓符號($),但是不能以數字作為開頭。與C/C++語言不同的是,Java語言還可以將一些非拉丁字母包含在標識符中,這是因為Java語言使用的是Unicode字元,所有的十六進制00C0以上的Unicode字元都可以用在標識符中。但是Java語言的關鍵字是不能用來作為標識符的。
我們在使用標識符的時候應該盡量表達所要表示的類、變數、方法等的含義。另外,標識符中可以使用下劃線,我們應該充分利用這一點以提高程序的可讀性。
2、關鍵字
以下是Java的全部關鍵字:
abstract double int strictfp**
boolean else interface super
break extends long switch
byte final native synchronized
case finally new this
catch float package throw
char for private throws
class goto* protected transient
const* if public try
continue implements return void
default import short volatile
do instanceof static while
* 尚未使用的關鍵字
** 為Java 2增加的關鍵字
3、注釋
Java有三種形式的注釋:
第一種是C語言的傳統注釋方式,即將「/*」和「*/」之間的文本都視為注釋,這種注釋可以跨越多行。
第二種是C++風格的注釋,即將「//」之後直到行尾的文本都視為注釋,這種注釋只能包含一行。
第三種是Java新增加的注釋方式,即將「/**」和「*/」之間的文本都視為注釋,這種注釋也可以誇耀多行。注意,這種注釋方式生成的注釋將作為Javadoc文檔保存。
二、操作符
1、算術操作符
操作符 用途 優先順序 結合性
++,-- 自動遞增,自動遞減 2(僅次於括弧) 從右到左
+,- 一元加,一元減 2 從右到左
*,/ 乘,除 3 從左到右
% 取余(求模) 3 從左到右
+,- 加,減 4 從左到右
2、布爾運算與關系運算符
操作符 用途 優先順序 結合性
>,<,>=,<= 測試相對大小 6 從左到右
== 測試相等性 7 從左到右
!= 測試不等性 7 從左到右
?: 根據第一個操作數返回後兩個操作數之一 13 從左到右
! 非 2 從右到左
& 布爾與 8 從左到右
^ 異或 9 從左到右
| 布爾或 10 從左到右
&& 條件與 11 從左到右
|| 條件或 12 從左到右
3、位操作符
操作符 用途 優先順序 結合性
~ 非(位求補) 2 從右到左
<<,>> 左移,右移 5 從左到右
>>> 當作無符號右移 5 從左到右
& 位和 8 從左到右
^ 位異或 9 從左到右
| 位或 10 從左到右
4、賦值操作符
操作符 用途 優先順序 結合性
= 賦值 14 從右到左
*= 操作同時賦值 14 從右到左
/= 操作同時賦值 14 從右到左
%= 操作滾老同時賦值 14 從右到左
+= 操作同時賦值 14 從右到左
-= 操作同時賦值 14 從右到左
>>= 操作同時賦值 14 從右到左
<<= 操作同時賦值 14 從右到左
>>>= 操作同時賦值 14 從右到左
^= 操作同時賦值 14 從右到左
|= 操作同時賦值 14 從右到左
&= 操作同時賦值 14 從右到左
5、特殊操作符
cast操作符將一種數據類型轉換成為另一種數據類型,cast應寫成把要校正操作大廳升數的類型伏肢名放在括弧中。
例如: int i; long l; l=7876547; i=(int)l; 如果給高精度的變數賦予一個低精度值,則不需校正。類型校正操作符的優先順序為2,結合性為從右到左結合。
將以上講到的操作符的優先順序總結如下:
優先順序 運算符 結合順序
1 []數組運算 .點運算符 ()調用方法 從左到右
2 ! ~ ++ -- +(一元加) -(一元減) ()強制類型轉換 new 從右到左
3 * / % 從左到右
4 +(二元加) -(二元減) 從左到右
5 >> << >>> 從左到右
6 < <= > >= instanceof 從左到右
7 == != 從左到右
8 & 從左到右
9 ^ 從左到右
10 | 從左到右
11 && 從左到右
12 || 從左到右
13 ?: 從左到右
14 = += -= *= /= %= &= |= ^= <<= >>= >>>= 從右到左
三、常量
1、整型常量
在Java語言中,整型常量有三種形式,它們分別是:十進制、八進制、十六進制。
需要注意的是十進制數不能以0開頭,這是因為八進制的數是以0開頭的,而十六進制數以0x或0X開頭。
2、浮點型常量
浮點數只能表示十進制數。浮點數有兩種表示方法,即標准表示法和科學記數法。浮點數又分為單精度數和雙精度數。
3、布爾型常量
布爾型常量有兩個值:ture(或TURE)和false(或FALSE)它們分別表示真和假,這兩個值用來表示事物的狀態,它們必居其一。通過測量布爾值可以判斷是否執行某個步驟。
4、字元型常量
字元型常量是一個單一的字元,其形式是由兩個單引號引起來的一個字元。但是兩個單引號引起來的不能是單引號和反斜杠,即『』和『\』是不正確的寫法。
大家一定要記住,Java語言中的字元是16位的Unicode字元,這與C/C++等語言是不一樣的。
同C/C++語言一樣,Java語言也有轉意序列。Java中的轉意序列的功能見下表:
轉義序列 標准形式 功能描述
\ 繼續
\n NL 回車換行
\t HT 水平製表符
\b BS 後退一格
\r CR 回車不換行
\f FF 換頁
\ 單引號
\\ \ 反斜杠
\" " 雙引號
\ddd 0ddd 八進制模式
\xddd 0xddd 十六進制模式
\udddd 0xdddd Unicode雙位元組字元
字元串常量
字元串常量是由雙引號引起來的一系列字元,與C/C++語言中不同的是,Java語言中的字元串不是通過字元數組來實現的,而是通過字元串類(即String類)來實現的。
四、變數和數據類型
在Java中,數據的類型可以分為四種:基本數據類型、數組類型、類和介面類型。任何數據都一定是上述數據類型的一種。
其中基本數據類型可以分為四大類:布爾型、字元型、整數型和浮點型。這些類型的數據與前面介紹的常量的類型基本相同,在此不再多說。下面將整數型和浮點型變數的取值范圍列出:
表一、
類型 寬度 取值范圍
byte 8位 -256到256
short 16位 -32768到32767
int 32位 -2147483648到2147483647
long 64位 -9223372036854775808到9223372036854775807
表二、
進制 整數 長整數
十進制 最大正整數 2147483647(2的31次方減1) 923372036854775807L(2的63次方減1)
八進制 最大正整數 077777777777(2的31次方減1) 07777777777777777777L(2的63次方減1)
最小負整數 020000000000(-2的31次方) 04000000000000000000L(-2的63次方)
十六進制 最大正整數 0x7fffffff(2的31次方減1) 0x7fffffffffffffffL(2的63次方減1)
最小負整數 0x80000000(-2的31次方) 0x8000000000000000L(-2的63次方)
浮點數能表示的數值從小到大分別是:負無窮大、負有限值、負零、正零、正有限值及正無窮大。其中正零和負零在進行數值比較的時候是相等的,但仍有辦法分辨這兩個值,例如在進行1.0/0.0的時候會得到正無窮大的結果。其它非零非無窮大的有限值是以s*m*(2^e)來表示的,s和m的取值范圍見下表:
表三、
類型 s m e
float +1或-1 小於2的24次方的正整數 149到104的整數
double +1或-1 小於2的53次方的正整數 1045到1000的整數
表四、float 最大值 3640282347e+38f
非零最小值 1.40239846e-45f
double 最大值 1.79769313486231570e+308
非零最小值 4.940656458412465334e-324
另外浮點數還有一些特殊值,見下表:float 最大值 Float.MAX_VALUE
最小值 Float.MIN_VALUE
正無窮大 Float.POSITIVE_INFINITY
負無窮大 Float.NEGATIVE_INFINITY
NaN Float.NaN
double 最大值 Double.MAX_VALUE
最小值 Double.MIN_VALUE
正無窮大 Double.POSITIVE_INFINITY
負無窮大 Double.NEGATIVE_INFINITY
NaN Double.NaN
與C/C++語言中不同的是,在Java語言中,所有的基本數據類型都有預設值,就是說當我們聲明一個變數時,即使我們沒有對它賦值,它的值也是一定的,而不像在C/C++中那樣是不可預測的。具體個類型的預設值見下表:
基本數據類型 預設值
Boolean false
Char \u000
Byte (byte)0
Short (short)0
Int 0
Long 0L
Float 0.0L
Double 0.0d
五、Java與C/C++的比較
由於Java的語法直接來源於C/C++,所以Java的程序控制語句與C/C++一模一樣,在此不再多說。以下重點介紹一下Java與C/C++的不同。
指針
大家在使用C語言編程的時候想必都曾經因為指針的復雜計算而煩惱,在C/C++語言編程過程中,指針可能引起許多錯誤,這些復雜的指針演算法所產生的錯誤常常讓人迷惑不解,導致C/C++程序員在此浪費了大量的時間。考慮到這種原因,Java中取消了指針。指針的功能由參考(reference)所取代,這使得Java中對復雜數據結構的實現更加容易,因為用對象和對象數組實現復雜的數據結構更可靠。
函數
在Java中沒有C/C++中應用廣泛的函數,C/C++中通過函數實現的功能在Java中都是通過類和方法來實現的。
繼承
C++支持多重繼承,這是一個從多個父類中派生一個類的有效辦法,但這種派生很復雜,也很容易產生問題。因此,Java中沒有採用多重繼承,但Java的Objective C協議介面能完成C++中多重繼承的所有功能。
goto語句
大家知道,在使用高級語言編程時過多的使用goto語句會使程序變得十分混亂,因此Java中也沒有使用goto語句。但是不可否認,當程序比較容易控制的時候,適當使用goto語句能使程序的運行更快捷,因此Java中使用了多重break和continue語句(允許break和continue語句使用標簽)實現C++種goto語句的功能。
聯合和結構
在C++中有三種數據結構:聯合、結構和類;Java中只有類,它可以實現上述三者的功能。
字元串
在C/C++中,字元串是通過字元數組實現的,但是由於數組的空間不是動態分配的,這容易出現越界錯誤,例如:常有預先設定的字元數組不能容納後輸入的字元串。在Java中,字元串是一類特定的對象,這使得字元串更具有一致性和可預見性。
Typedef、Define和預處理器
Java中不需要#define語句、預處理器或者typedef,但需要頭文件。在Java中一個類的信息必須包含在一個文件中,而C/C++中有關類的信息可能分散在多個文件中。
數據類型的自動強制轉換
在Java中強制一種類型的數據元素變成一種不太精確的數據類型需要編程人員採用預測方法。
8. 如何正確的學習C語言
1.先學習C語言的基礎知識。現在正在學C語言的在校學生可以直接進入第2步學習。
2.按照《C語言程序設計入門學習六步曲》進行上機練習。
3.在上機練習時要養成良好的編程風格。點擊查看C語言的編程風格
4.積極參加C、C++興趣小組,養成和老師與同學交流習慣,從而相互收益。有時別人不經意的一句話可能使你茅塞頓開--「一句話點醒夢中人」。
5.及時總結自己的學習經驗,養成寫C語言日記的習慣。軟體有編程日記功能。
6.從網上或教材上找一個自己感興趣的題目(選題時根據自己的能力,可先易後難,培養自己的成就感,如果有了成就感,即使再苦再累還是感覺C語言學習是一件快樂的事,同學們喜歡打游戲,經常通宵達旦地玩游戲也樂而不疲就是這個道理)進行實戰訓練,提高自己的C語言綜合應用能力。
7. 由於C語言靈活、強大,初學者要全面地掌握它是不可能的,因此在學習C語言的過程中,不要在細枝末節上浪費精力(比如++、--用於表達式的計算,實際上是沒有意義的),但一定要熟練掌握C語言的流程式控制制語句、數組、函數、指針等基礎知識的應用,為學習面向對象程序設計打下堅實的基礎。如果這些知識你學不好,要後續學習好C++、可視化的程序設計Visual C++或C++Builder就像空中樓閣,是不現實的。
C語言程序設計入門學習六步曲
筆者在從事教學的過程中,聽到同學抱怨最多的一句話是:老師,上課我也能聽懂,書上的例題也能看明白,可是到自己動手做編程時,卻不知道如何下手。發生這種現象的原因有三個:
一、所謂的看懂聽明白,只是很膚淺的語法知識,而我們編寫的程序或軟體是要根據要解決問題的實際需要控製程序的流程,如果你沒有深刻地理解C語言的語句的執行過程(或流程),你怎麼會編寫程序解決這些實際問題呢?
二、用C語言編程解決實際問題,所需要的不僅僅是C語言的編程知識,還需要相關的專業知識。例如,如果你不知道長方形的面積公式,即使C語言學得再好你也編不出求長方形的面積的程序來。
三、C語言程序設計是一門實踐性很強的課程,「紙上談兵」式的光學不練是學不好C語言的。例如,大家都看過精彩自行車雜技表演,假如,你從來沒有騎過自行車,光聽教練講解相關的知識、規則、技巧,不要說上台表演、就是上路你恐怕都不行。
出現問題原因清楚了,那麼如何學習呢?請你看
在程序開發的過程中,上機調試程序是一個不可缺少的重要環節。「三分編程七分調試」,說明程序調試的工作量要比編程大得多。這里以如何上機調試C程序來說明C語言的學習方法。
第一步、驗證性練習
在這一步要求按照教材上的程序實例進行原樣輸入,運行一下程序是否正確。在這一步基本掌握C語言編程軟體的使用方法(包括新建、打開、保存、關閉C程序,熟練地輸入、編輯C程序;初步記憶新學章節的知識點、養成良好的C語言編程風格)。
初學者最容易犯的錯誤是:
1、沒有區分開教材上的數字1和字母l,字母o和數字0的區別,造成變數未定義的錯誤。另一個易錯點是將英文狀態下的逗號,分號;括弧()雙引號""輸入出入成中文狀態下的逗號,分號;括弧(),雙引號「」造成非法字元錯誤。
2、C語言初學者易犯語法錯誤:使用未定義的變數、標示符(變數、常量、數組、函數等)不區分大小寫、漏掉「;」、「」、「(」與「)」不匹、控制語句(選擇、分支、循環)的格式不正確、調用庫函數卻沒有包含相應的頭文件、調用未C聲明的自定義函數、調用函數時實參與形參不匹配、數組的邊界超界等。
3、修改C語言語法錯誤時要注意以下兩點:
(1)、由於C語言語法比較自由、靈活,因此錯誤信息定位不是特別精確。例如,當提示第10行發生錯誤時,如果在第10行沒有發現錯誤,從第10行開始往前查找錯誤並修改之。
(2)、一條語句錯誤可能會產生若干條錯誤信息只要修改了這條錯誤,其他錯誤會隨之消失。特別提示:一般情況下,第一條錯誤信息最能反映錯誤的位置和類型,所以調試程序時務必根據第一條錯誤信息進行修改,修改後,立即運行程序,如果還有很多錯誤,要一個一個地修改,即,每修改一處錯誤要運行一次程序。
第二步、照葫蘆畫瓢
在第一步輸入的C程序的基礎上進行試驗性的修改,運行一下程序看一看程序結果發生了什麼變化,分析結果變化的原因,加深新學知識點的理解。事實上這和第一步時同步進行的,實現「輸入」加深知識的記憶,「修改」加深對知識的理解。記憶和理解是相輔相成的,相互促進。
例如:將最簡單的Hello World!程序
#include "stdio.h"
int main()
{
printf("Hello World!\n");
return 0;
}
中的
printf("Hello World!\n");
中的Hello World!改成你的姓名,運行一下程序,看有什麼變化?
再如求1+2+3...+100的和的程序
#include <stdio.h>
main()
{
int i,sum=0;
for(i=1;i<=100;i++)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
}
第1次將for(i=1;i<=100;i++)中的100改成50,運行一下程序,看有什麼變化?
第2次將for(i=1;i<=100;i++)中的i++改成i=i+2,運行一下程序,看有什麼變化?
找出程序結果變化的原因,就加深了對C語句的理解。
第三步、不看教材看是否能將前兩步的程序進行正確地輸入並運行。
在這一步要求不看教材,即使程序不能運行,看能否將其改正,使其能正確運行。目的是對前兩步的記憶、理解進一步強化。
第四步、增強程序的調試能力
在教材中每章都有C語言初學者易犯的錯誤,按照易出錯的類型,將教材中的正確的程序改成錯誤的程序,運行一下程序,看出現的錯誤信息提示,並記下錯誤信息,再將程序改成正確的,運行一下程序。這樣反復修改,就能夠學習C語言程序發生錯誤的原因和修改錯誤的能力。
注意:每次只改錯一個地方,目的是顯示發生該錯誤的真正原因,避免一次改動多個地方,搞清發生錯誤的真正原因,切記!!!!
注意:上機調試程序時要帶一個記錄本,記下英文錯誤提示信息和解決該錯誤問題的方法,積累程序調試經驗,避免在編程犯同樣的錯誤,切記!!!!。
例如,將Hello World程序中語句
printf("Hello World!\n");
中的;改成中文的分號;
運行一下程序,看有什麼結果?
調試程序是一種實踐性很強的事,光紙上談兵是是沒用的,就像游泳運動員只聽教練講解示範,而不親自下水練習,是永遠學不會游泳的。
即使在優秀的程序員編寫程序也會犯錯誤的,可能事最低級的語法錯誤,但他能快速發現錯誤並改正錯誤,而我們C語言初學者面對錯誤提示,不知道發生了什麼錯誤,如何改正,這就事差別。
第五步、研究典型的C語言程序,提高程序設計能力
C語言初學者遇到最多的困惑是:上課也能聽懂,書上的例題也能看明白,可是到自己動手做編程時,卻不知道如何下手。發生這種現象的原因是:所謂的看懂聽明白,只是很膚淺的語法知識,而沒有深刻地理解C語言的語句的執行過程(或流程)。
計算機是按照人的指令(編寫的程序)去執行的,如果不知道這些C語句在計算機中是如何執行的,你怎麼回靈活運用這些知識去解決實際問題呢?
解決問題的方法是要先理解C語言各種語句的流程(即計算機是如何執行這些語句的過程),然後研讀現成C語言經典程序,看懂別人事如何解決問題的,以提高自己的程序設計能力。
第六步、研究課程設計源成序,提高C語言的綜合應用能力.
C語言好學嗎?
C語言好學嗎?初學者常常問這個問題。答案很簡單,對C語言感興趣,有強烈的學習慾望,就容易學。如果不感興趣,再簡單的知識也學不會。試想一下,現在有幾個學校教學生打游戲呢?答案是否定的,可是很多學生都會打游戲,有時達到廢寢忘食的地步,打游戲來樂而不疲,而且還經常交流打游戲的心得體會,這就是興趣的魅力所在。
如果你對C語言感興趣,為什麼不把學習打游戲的經驗用到學習C語言呢?如果這樣的話,C語言還難學嗎?
最後送C語言初學者一句話來共勉:首先要相信自己是有能力學好C語言的,然後不惜一切代價把這種能力表現出來,你就成功了。做任何事,何嘗不是這樣呢?
9. 單片機c語言編程
單片機的外部結構:
DIP40雙列直插;
P0,P1,P2,P3四個8位準雙向I/O引腳;(作為I/O輸入時,要先輸出高電平)
電源VCC(PIN40)和地線GND(PIN20);
高電平復位RESET(PIN9);(10uF電容接VCC與RESET,即可實現上電復位)
內置振盪電路,外部只要接晶體至X1(PIN18)和X0(PIN19);(頻率為主頻的12倍)
程序配置EA(PIN31)接高電平VCC;(運行單片機內部ROM中的程序)
P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1
單片機內部I/O部件:(所為學習單片機,實際上就是編程式控制制以下I/O部件,完成指定任務)
四個8位通用I/O埠,對應引腳P0、P1、P2和P3;
兩個16位定時計數器;(TMOD,TCON,TL0,TH0,TL1,TH1)
一個串列通信介面;(SCON,SBUF)
一個中斷控制器;(IE,IP)
針對AT89C52單片機,頭文件AT89x52.h給出了SFR特殊功能寄存器所有埠的定義。教科書的160頁給出了針對MCS51系列單片機的C語言擴展變數類型。
C語言編程基礎:
十六進製表示位元組0x5a:二進制為01011010B;0x6E為01101110。
如果將一個16位二進數賦給一個8位的位元組變數,則自動截斷為低8位,而丟掉高8位。
++var表示對變數var先增一;var—表示對變數後減一。
x |= 0x0f;表示為 x = x | 0x0f;
TMOD = ( TMOD & 0xf0 ) | 0x05;表示給變數TMOD的低四位賦值0x5,而不改變TMOD的高四位。
While( 1 ); 表示無限執行該語句,即死循環。語句後的分號表示空循環體,也就是{;}
在某引腳輸出高電平的編程方法:(比如P1.3(PIN4)引腳)
#include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P1.3
void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口
{
P1_3 = 1; //給P1_3賦值1,引腳P1.3就能輸出高電平VCC
While( 1 ); //死循環,相當 LOOP: goto LOOP;
}
注意:P0的每個引腳要輸出高電平時,必須外接上拉電阻(如4K7)至VCC電源。
在某引腳輸出低電平的編程方法:(比如P2.7引腳)
#include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P2.7
void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口。
{
P2_7 = 0; //給P2_7賦值0,引腳P2.7就能輸出低電平GND
While( 1 ); //死循環,相當 LOOP: goto LOOP;
}
在某引腳輸出方波編程方法:(比如P3.1引腳)
#include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P3.1
void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口
{
While( 1 ) //非零表示真,如果為真則執行下面循環體的語句
{
P3_1 = 1; //給P3_1賦值1,引腳P3.1就能輸出高電平VCC
P3_1 = 0; //給P3_1賦值0,引腳P3.1就能輸出低電平GND
} //由於一直為真,所以不斷輸出高、低、高、低……,從而形成方波
}
將某引腳的輸入電平取反後,從另一個引腳輸出:( 比如 P0.4 = NOT( P1.1) )
#include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P0.4和P1.1
void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口
{
P1_1 = 1; //初始化。P1.1作為輸入,必須輸出高電平
While( 1 ) //非零表示真,如果為真則執行下面循環體的語句
{
if( P1_1 == 1 ) //讀取P1.1,就是認為P1.1為輸入,如果P1.1輸入高電平VCC
{ P0_4 = 0; } //給P0_4賦值0,引腳P0.4就能輸出低電平GND
else //否則P1.1輸入為低電平GND
//{ P0_4 = 0; } //給P0_4賦值0,引腳P0.4就能輸出低電平GND
{ P0_4 = 1; } //給P0_4賦值1,引腳P0.4就能輸出高電平VCC
} //由於一直為真,所以不斷根據P1.1的輸入情況,改變P0.4的輸出電平
}
將某埠8個引腳輸入電平,低四位取反後,從另一個埠8個引腳輸出:( 比如 P2 = NOT( P3 ) )
#include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P2和P3
void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口
{
P3 = 0xff; //初始化。P3作為輸入,必須輸出高電平,同時給P3口的8個引腳輸出高電平
While( 1 ) //非零表示真,如果為真則執行下面循環體的語句
{ //取反的方法是異或1,而不取反的方法則是異或0
P2 = P3^0x0f //讀取P3,就是認為P3為輸入,低四位異或者1,即取反,然後輸出
} //由於一直為真,所以不斷將P3取反輸出到P2
}
注意:一個位元組的8位D7、D6至D0,分別輸出到P3.7、P3.6至P3.0,比如P3=0x0f,則P3.7、P3.6、P3.5、P3.4四個引腳都輸出低電平,而P3.3、P3.2、P3.1、P3.0四個引腳都輸出高電平。同樣,輸入一個埠P2,即是將P2.7、P2.6至P2.0,讀入到一個位元組的8位D7、D6至D0。
10. c語言的九種控制語句是什麼
如下,具體用法就不說了
1.if else (條件)
2.for (循環)
3.while (循環)
4.do while (循環)
5.continue (結束本次循環)
6.break (終止switch或循環語句)
7.switch (分支選擇)
8.goto (跳轉)
9.return (函數返回語句)