c語言實踐報告總結範文2篇
【c語言實踐報告總結例一】
一、實習時間:20xx年x月x日—20xx年x月x日
二、實習地點:第一微機室
三、實習目的:
1、熟悉我們自己所用的計算機的C語言開發環境,並且能夠熟練掌握,達到錯誤能找到原因並且加以改正。
2、加深對課本理論知識的理解,進一步掌握書中重點、難點例項,鍛鍊自己的編寫程式能力和實際應用能力。
3、上機除錯程式的過程中,發現錯誤,解決錯誤,保證程式的正確執行,執行結果與給定結果完全相同。
4、學會用書中基本知識解決實際中的一些問題,將書本所學的內容與實際操作相結合,掌握把實際問題轉變為C語言描述的演算法的方法,明確思路。將自身的不足與缺陷改掉,養成良好編輯風格
5、培養我們的主觀能動性、溝通、表達能力和團隊合作意識,為我們以後的發展打下基礎。
四、實習內容及方法:
在本次實習中,我們採用了由淺及深、由易到難的實習方法,而且也是按照書本的教學程序內容進行的,同時採取了實際應用與理論相結合的方法,在機房裡面實習,一邊理解,思考做題的思路與解法,另一邊就可以馬上進行上機實際操作。這對於我們加深對C語言的理解、操作以及動手能力都有了很大的幫助與提高。
實訓的內容主要分為了七個版塊:
第一版塊:
1、Turbo C執行環境。
瞭解TC的基本環境,熟悉常用選單項和快捷鍵:在這一小節中,需要熟練的掌握並應用Turbo C的執行環境,和基本配置。Turbo C是在計算機上廣泛使用的一個C語言開發環境,它具有方便、直觀、易用的介面和豐富的函式庫。它把程式的編輯、編譯、連線和執行等操作去不都集中在一個介面上進行,使用非常方便。並且Turbo C不需要特別安裝,只需要將其複製到硬碟上就可以使用了。 為了方便管理使用者的程式檔案和維Turbo C2.0的執行環境,客戶應在機子
上建立自己的工作目錄,一邊用來存放自己所需要開發的源程式檔案。下面就是建立怎樣自己資料夾,在空白區域內輸入自己所建立的資料夾路徑即可。
2、C程式的編輯、編譯、連線和執行過程。
掌握C程式的執行步驟,初步瞭解C程式的特點。在Turbo C的執行中,快捷鍵使用非常方便,只需Ctrl+選單欄中選單名的首字母即可。
上面是一個程式編譯與連結的截圖。第一個Compile to OBJ將源程式編譯為OBJ檔案,Make EXE file 編譯連線一次進行,Link EXE file將OBJ檔案連線為EXE檔案。
3、VC6.0環境的熟悉,自己按照軟體並在軟體中能夠除錯簡單的C語言程式。
第二版塊:
1、C語言資料型別:整型、實型、字元型。
C語言的函式型別非常豐富,除了這幾類以外,還有實型、陣列、指標、結構體等,在這一小節中,主要了解關於資料型別的定義、用法以及他們的儲存型別,一邊與以後靈活運用。
C語言中還有常量與變數之分,常量是在程式執行過程中其值不變的量。二且在C語言中常量不需要型別說明就可以直接使用,常量的型別是由常量的本身隱含決定的。
2、運算子及表示式。
在C語言中,預算符非常豐富運算靈活,常用的有以下幾個:
(1)算術運算子:+、-、*、/、%(取餘)及++(自增)、--(自減)。
(在這裡需要注意的是:“/”運算子,在C語言中兩邊都是整數的話,運算結果只取整數部分;“%”他的兩邊都必須是整數才可以執行;“**、--”運用這個運算子時要注意“先用後加(減)、先加(減)後用”的問題)
(2)賦值運算子:=及複合賦值運算子(+=、-=、*=、/=、%=等)。
(在這裡需要注意的是“=、==”的區別,要明確用法及所用的地方,“=”它的作用是賦值,“==”它的作用是判斷相等)
(3)逗號運算子:,(對於逗號表示式索要注意的是要明確它所用的地方以及在使用時所要注意的細節)。
瞭解三種運算子的優先順序,掌握三種運算子及相應表示式的應用(詳見附錄)。
第三版塊:在這一節裡,我們實習了C語言的三大結構:
1、順序結構:
2、選擇結構:if„„else,switch語句。
在這裡許啊喲我們學習的很多,因為只要是程式,就脫離不了這個三大結構的範疇。在這個學習裡我編寫了
(1)、輸入某年某月某日,判斷這一天是這一年的第幾天?。
(2)、給一個不多於5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字。
(3)、某市不同車牌的計程車3公里的起步價和計費分別為:夏利7元,3公里以外,2.1元/公里;富康8元,3公里以外,2.4元/公里;桑塔納9元,3公里以外,2.7元/公里。程式設計:從鍵盤輸入乘車的車型及行車公里數,輸出應付工資。
源程式減附錄;
經過這幾個程式的練習,讓我聊股的掌握了選擇語句的用法以及精髓,同是這個用法和技巧已經深深的可在了我的腦海裡,還有同過這些個程式的編寫,讓我對以前有的絲絲而非的地放完全通透理解,獲益匪淺。
迴圈結構:while、do-while、for
在迴圈這一節裡,我們主要做了以下程式:
(1)、求200-300之間所有素數,每5個換行。
(2)、猜數字遊戲。規則為:輸入一個0-10之間的數字,有5次猜測機會。如果輸入0-4之間的數字,提示“太小了”;如果輸入5-7之間的數字,提示“接近了”;如果輸入9-15之間的數字,提示“太大了”;如果輸入8,提示“correct!”;如果次數超過5次,提示“沒有機會了,退出!”。
(3)、列印輸出如下圖形:(“◇”菱形)
(4)、有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?
提示:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去掉不滿足條件的排列。
(5)、列印輸出九九乘法表。
我以前就對迴圈這一節裡的內容就理解的比較好,現在做這些題很順利的就做下去了,但在做的同是也會出現以寫小的問題,但這個讓我也更深一步的理解了迴圈語句的用法、思路以及其中的精華。
總的對這一節來說,使自己更神一步的理解了選擇、過程中需要注意的一些細節問題。
第四版塊:
1、一、二維陣列的定義、引用及初始化。初始化:
一維陣列:初始化賦值的一般形式為: static 式]={值,值„„值}; 其中static表示是靜態儲存型別,態儲存陣列和外部儲存陣列才可作初始化賦值二維陣列:
a.可以只對部分元素賦初值,未賦初值的元素自動取b.如對全部元素賦初值,則第一維的長度可以不給出。2、一、二維陣列的應用。
在一維陣列的應用中,要與迴圈巢狀使用,用,但是在這裡,巢狀還要是迴圈的巢狀,因為只有這樣使用才可以使程式更加簡潔、簡便。就像第五題:有一個班4個學生,(1)求每一門課程的平均分; (2)求每一個學生的平均分;
思路:定義一個二維陣列,用二重迴圈輸入這個陣列,然後進行相加,在求平均直,最後在用二重迴圈進行輸出。
迴圈的用法以及在使用型別說明符 陣列名[常量表達 C語言規定只有靜0值。 門課。程式設計實現如下功能:
在這裡,進行了求平均值的過二維陣列要與也要與迴圈巢狀使5程。這裡進行了二重迴圈輸出。
第五版塊:
1、函式的定義和呼叫
函式可分為庫函式和使用者定義函式兩種。
(1)庫函式
庫函式只不需要使用者自己定義的,只需要在用的時候將其調用出來用就可以了,非常方便,並且C語言有這豐富的函式庫。
(2)使用者定義函式
使用者自己定義的函式,是屬於一個自定義範疇,自己定義的函式不僅要在程式中定義函式本身, 而且在主調函式模組中還必須對該被調函式進行型別說明,然後才能使用。
2、函式引數和函式值
(1)無 參函式
函式定義、函式說明及函式呼叫中均不帶引數。 主調函式和被調函式之間不進行引數傳送。 此類函式通常用來完成一組指定的功能,可以返回或不返回函式值。
(2)有參函式
也稱 為帶參函式。在函式定義及函式說明時都有引數, 稱為形式引數(簡稱為形參)。在函式呼叫時也必須給出引數, 稱為實際引數(簡稱為實參)。 進行函式呼叫時,主調函式將把實參的值傳送給形參,供被調函式使用。
(1)有返回值函式
此類函式被呼叫執行完後將向呼叫者返回一個執行結果, 稱為函式返回值。由使用者定義的這種要返回函式值的函式,必須在函式定義和函式說明中明確返回值的型別。
(2)無返回值函式
此類函式用於完成某項特定的處理任務, 執行完成後不向呼叫者返回函式值。這類函式類似於其它語言的過程。 由於函式無須返回值,使用者在定義此類函式時可指定它的返回為“空型別”, 空類 型符的型別說明為“void”。
2、函式的巢狀呼叫和遞迴呼叫
C語言中不允許作巢狀的函式定義。因此各函式之間是平行的,不存在上一級函式和下一級函式的問題。 但是C語言允許在一個函式的定義中出現對另一個函式的呼叫。 這樣就出現了函式的巢狀呼叫。即在被調函式中又呼叫其它函式。
這以小節內容經過幾個練習題的聯絡,讓我掌握到了其中的主要部分,對此也比較的明確。
4、區域性變數和全域性變數及變數的儲存類別
區域性變數:區域性變數也稱為內部變數。區域性變數是在函式內作定義說明的。其作用域僅限於函式內, 離開該函式後再使用這種變數是非法的。
全域性變數:全域性變數也稱為外部變數,它是在函式外部定義的變數。 它不屬於哪一個函式,它屬於一個源程式檔案。其作用域是整個源程式。在函式中使用全域性變數,一般應作全域性變數說明。 只有在函式內經過說明的.全域性變數才能使用。全域性變數的說明符為extern。 但在一個函式之前定義的全域性變數,在該函式內使用可不再加以說明。
在C語言中,對變數的儲存型別說明有以下四種:auto 自動變數 register 暫存器變數 extern 外部變數 static 靜態變數
在區域性變數中所定義的變數,只能在該函式中使用,在函式編輯時,預處理命令下定義的變數屬於全域性變數,在每個函式中都可以使用,傳遞引數時,不用傳遞全域性變數。
在這裡,我主要說的是第二個練習題,它的思想是一個加密演算法。思路是:現編寫一個主程式,實現函式呼叫,在子函式中實現加密演算法並且輸出。是將接收的值設定為一個全域性變數。就像下面的這個例子:在這裡,將所輸入的值進行分解成個、十、百、千位,分別進行加密演算法。
加上與第四位對調,第三位與第二位對調。在最後輸出結果。 第六版塊:
1、指標、指標變數的概念
指標的基本概念 在計算機中,所有的資料都是存放在儲存器中的。儲存器中的一個位元組稱為一個記憶體單元, 不同的資料型別所佔用的記憶體單元數不等,如整型量佔2個單元,字元量佔1個單元等,紹。為了正確地訪問這些記憶體單元, 必須為每個記憶體單元編上號。存單元的編號即可準確地找到該記憶體單元。記憶體單元的編號也叫做地址。 並且在使用函式在輸入
除以8以後的餘數,在將第一位 一般把 在第二章中已有詳細的介 根據一個內
既然在這裡進行加密演算法,每位上的數6
根據記憶體單元的編號或地址就可以找到所需的記憶體單元,所以通常也把這個地址稱為指標。“指標變數”是指取值為地址的變數
2、陣列的指標
一個數組是由連續的一塊記憶體單元組成的。 陣列名就是這塊連續記憶體單元的首地址。一個數組也是由各個陣列元素(下標變數) 組成的。每個陣列元素按其型別不同佔有幾個連續的記憶體單元。 一個數組元素的首地址也是指它所佔有的幾個記憶體單元的首地址。 一個指標變數既可以指向一個數組,也可以指向一個數組元素, 可把陣列名或第一個元素的地址賦予它。如要使指標變數指向第i個元素可以把i元素的首地址賦予它或把陣列名加3、指向字串的指標 返回指標的函式(1)、 字串指標變數本身是一個變數,串本身是存放在以該首地址為首的一塊連續的記憶體空間中並以‘結束。字元陣列是由於若干個陣列元素組成的,它可用來存放整個字串。(2)、 對字元陣列作初始化賦值,必須採用外部型別或靜態型別,串指標變數則無此限制;
(3)、對字串指標方式 char *ps="C Language";ps="C Language";而對陣列方式:static char st[]={"C Language"}char st[20]; st={"C Language"};而只能對字元陣列的各元素逐個賦值。3、指標陣列及指向指標的指標
指標陣列的說明與使用一個數組的元素值為指標則是指標陣列。是一組有序的指標的集合。 指標陣列的所有元素都必須是具有相同儲存型別和指向相同資料型別的指標變數。
指標陣列說明的一般形式為: 型別說明符在指標這一小節,主要是用指標實現:輸入數對換,把最大的數與最後一個數對換。寫3個函式:輸入個數。
在這裡進行函式的呼叫,一個輸入函式,一個操作函式,一個輸出函式。
i賦予它。
而字元’作為串的
而對字元可以寫為: char *ps; 不能寫為:
指標陣列*陣列名[陣列長度]
10個整數,將其中最小的數與第一個
10個數;進行處理;輸出10
用於存放字串的首地址。在這裡用陣列實現了輸入。
在這裡用指標實現了將最小的數與第一個數對換,
把最大的數與最後一個數對換。
在最後進行輸出。 第七版塊:
實訓七屬於一個綜合類型的題目,他要求的比較高,必須在自己王權理解通透了課本知識以後才有可能理解這道題,並且進行修改完善。主要這道題本身是在VC環境下執行的,將其移植到Turbo C環境下執行,這其中牽扯到一些語法不同,在Turbo C中不可以執行,要進行慢慢除錯。經過不懈的努力、修改,終於將其成功的在Turbo C環境下可以正常運行了。(詳見附錄)
五、結論 收穫
我的收穫:在本次實習中,我學到了很多實際有用的東西,而且基本上都是在課本上學不到的,並且也在實習中梳理了自己對C語言這門課程所學的所有內容,讓自己對C這門課程有了更進一步的認識,有了一個良好的基礎,為自己的以後打下了堅實基礎。從開頭到現在,所有的內容實習完了,上機實驗是學習程式設計語言必不可少的實踐環節,在 C語言靈活、簡潔中,更需要透過程式設計的實踐來真正掌握它。
歷時4天的《C語言程式設計》已經結束了,在這幾天程式設計的過程中感觸頗多,實訓程式設計的同時暴露出了許多我自身存在的問題,同時也對自身有了很大的提高。
首先,對我以前做題做事非常馬虎的毛病有了很大的改進,透過在這幾天程式設計的過程中的鍛鍊,我現在做題比以前仔細多了,會小心翼翼地去看每一個地方,會仔細地檢查程式的每一個字母、標點,以及每個可能出錯的地方,更會特別仔細,生怕自己一不小心搞錯了,而導致整個程式都無法執行。
其次,在程式設計的過程當中彌補了我許多知識上的缺陷,弄清楚了我不懂的地方和似是而非的地方,使我及時補上了欠缺,為自己以後的人生道路打下了良好基礎,同時也讓我對每一件事都有了一個好的心態去對待它,更讓自己在編寫程式的過程中每時每刻都處於充足的狀態。
再次,通過幾天綜合實訓程式設計使我的知識形成了一個完整的框架結構,而不再是零散的知識個體,使我在使用時更加的方便,更加靈活,以前有好多題目要寫十行八行的,還有些地方弄得不是太懂,現在只需要五六行就可以搞定,而且還對於思路特別清晰、明確。
第四,在實習結束後,我對做完的習題檢查比再是一切的走馬觀花,而是仔細核對、認真檢查,和以前相比明顯改善了好多,以前自己對於檢查程式總是沒有耐心,不好好檢查,有問題總是找老師,相對於實習之後來說,有了很大的改善,自己不但可以坐下來耐心檢查,還能夠自己將程式除錯成功,這對於現在的我來說是一個明顯的進步。
第五,透過實習改變了我做題時心煩氣燥的習慣,現在做題可以平和靜氣的完成。
第六,透過實習我的自制能力更強了,基本完全可以控制自己,避免外界的干擾,安心地完成自己的工作。
第七,在學習過程中,由於天氣炎熱,心裡煩躁,同時也是每天都盯著頻幕看,腦袋都看大了,但是我卻一直堅持了下來,這對於我來說,也是一個非常好的習慣。這同時也是我的一個收穫。
第八,實訓過程中,充分發揮團隊協作精神,共同進步,幫助同學順利完成實訓課程,有困難一起解決,同時也使我在他們身上學到了很多東西。
總之,透過實習使我自身的知識體系得到鞏固、提高以及使團隊工作的能力得到鍛鍊。
不足
我的不足:
首先,我的第一個,同時也是一個最大的缺點,自己對於理論知識掌握的還不是很通透,理解的不夠徹底,對於一些問題似似而非,給自己編寫程式的過程中帶來了很大的麻煩。
其次,我不能夠精心的去完成每一個程式,對於每個程式而言,都是馬馬虎虎,只要執行結果是對的,那就可以了。雖然我自己也知道這樣是不好的,但是自己就是不願意去改,在經過實習之後雖然有所改善,但在我看來,改進的不是很大。
第三,自己做題時還有些馬虎,一些小的細節在編寫程式過程中不注意,只有在編譯連線是才可以發現、對其進行修改,對於一些小程式還不能實現一次就可以完成編譯連線。
第四,做題時自己不能心平氣和的去做。
第五,自己的子宅裡不夠強,不能持之以恆的坐在自己的座位上編寫程式,
歇一會就要起來轉轉。
六、致謝
在此,我僅代表我自己,對老師您致以崇高的敬意和深深的感謝,沒有您,就沒有我那麼多的收穫,您不辭辛苦,在這炎熱天氣裡,放棄您的休息時間來為我們輔導,在輔導過程中,您更是盡心盡力,從來沒有少過一節課,更沒有過遲到早退,對我們是全程陪同,在我們實習中隨時出現問題,隨時解決。只要發現問題,您從來沒有說是不管過,從來沒有煩躁過,對我們提出的問題,也是耐心解決,一邊不懂,接著再講一邊,臉龐流下的汗水,您卻從來沒有在意過。對我們泥更是不計報酬的為我們服務,讓我們有一個好的學習環境,不用為自己遇到問題而煩惱,在這裡我想對您說一聲:老師,您辛苦了!請接受您的學子的深深謝意與感激。
在這裡,也對學校表示由衷的謝意,感謝學校為我們提供了良好的實習環境,讓我們在這炎熱的天氣裡,能夠舒爽的坐在教室裡實習,而不用操心任何問題,在這裡,對我們學校表示謝意。
【c語言實踐報告總結例二】
1、只有頻繁用到或對運算速度要求很高的變數才放到data區內,如for迴圈中的計數值。
2、其他不頻繁呼叫到和對運算速度要求不高的變數都放到xdata區。
3、常量放到code區,如字型檔、修正係數。
4、邏輯標誌變數可以定義到bdata中。
在51系列晶片中有16個位元組位定址區bdata,其中可以定義8*16=128個邏輯變數。這樣可以大大降低記憶體佔用空間。定義方法是: bdata bit LedState;但位型別不能用在陣列和結構體中。
5、data區內最好放區域性變數。
因為區域性變數的空間是可以覆蓋的(某個函式的區域性變數空間在退出該函式是就釋放,由別的函式的區域性變數覆蓋),可以提高記憶體利用率。當然靜態區域性變數除外,其記憶體使用方式與全域性變數相同;
6、確保程式中沒有未呼叫的函式。
在Keil C裡遇到未呼叫函式,編譯器就將其認為可能是中斷函式。函數里用的區域性變數的空間是不釋放,也就是同全域性變數一樣處理。這一點Keil做得很愚蠢,但也沒辦法。
7、如果想節省data空間就必須用large模式。
將未定義記憶體位置的變數全放到xdata區。當然最好對所有變數都要指定記憶體型別。
8、使用指標時,要指定指標指向的記憶體型別。
在C51中未定義指向記憶體型別的通用指標佔用3個位元組;而指定指向data區的指標只佔1個位元組;指定指向xdata區的指標佔2個位元組。如指標p是指向data區,則應定義為: char data *p;。還可指定指標本身的存放記憶體型別,如:char data * xdata p;。其含義是指標p指向data區變數,而其本身存放在xdata區。
以前沒搞過C51,大學時代跟微控制器老師的時候也是搗鼓下彙編,現在重新搞微控制器,因為手頭資料不多,找到一些C51的程式,發現裡面有這些關鍵字,不甚明瞭,沒辦法只好找了下,發現如下描述:
從資料儲存型別來說,8051系列有片內、片外程式儲存器,片內、片外資料儲存器,片內程式儲存器還分直接定址區和間接定址型別,分別對應code、data、xdata、idata以及根據51系列特點而設定的pdata型別,使用不同的儲存器,將使程式執行效率不同,在編寫C51程式時,最好指定變數的儲存型別,這樣將有利於提高程式執行效率(此問題將在後面專門講述)。與ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各種不同的模式對應不同的實際硬體系統,也將有不同的編譯結果。
9、在51系列中data,idata,xdata,pdata的區別
data:固定指前面0x00-0x7f的128個RAM,可以用acc直接讀寫的,速度最快,生成的程式碼也最小。
idata:固定指前面0x00-0xff的256個RAM,其中前128和data的128完全相同,只是因為訪問的方式不同。idata是用類似C中的指標方式訪問的。彙編中的語句為:mox ACC,@Rx.(不重要的補充:c中idata做指標式的訪問效果很好)
xdata:外部擴充套件RAM,一般指外部0x0000-0xffff空間,用DPTR訪問。
pdata:外部擴充套件RAM的低256個位元組,地址出現在A0-A7的上時讀寫,用movx ACC,@Rx讀寫。這個比較特殊,而且C51好象有對此BUG,建議少用。但也有他的優點,具體用法屬於中級問題,這裡不提。