導航:首頁 > 編程語言 > c語言程序設計報體會

c語言程序設計報體會

發布時間:2023-10-04 22:01:56

㈠ c語言實驗報告總結怎麼寫

c語言實驗報告總結這樣寫:

在科技高度發展的今天,計算機在人們之中的作用越來越突出。而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語言程序設計試驗報告的小結,誰有

通過對這一課題的設計和實現,我對Micosoft Visual C++環境進行了深一步的了解,並逐漸開始熟練Micosoft Visual C++環境的工作界面,以及對每一個快捷鍵的熟悉。並認識到,熟悉這些快捷鍵,極為便捷編寫程序,但是還要更加熟悉。 編程時要養成良好的風格,注意相同內容的縮進和對齊。這樣做,可以使程序代碼出錯的情況下,可以快速並且便捷的查找到錯誤的行,利於很好的修改。 通過這次編程我們深深的感受到對代碼的變數命名,代碼內注釋格式,甚至嵌套中行縮進的長度和函數間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和糾錯,也有助於不同人員之間的協作。 這個程序設計主要涉及到了C語言中的結構體、指針及文件操作等內容,只有充分掌握了C語言中的結構體、指針及文件操作等內容,才有可能組織好這些代碼,使之符合運算邏輯,得到理想的結果。 善於總結,也是學習能力的一種體現,每次完成一個編程任務,完成一段代碼,都應當有目的的跟蹤該程序的應用狀況,隨時總結,找到自己的不足,這樣所編寫的程序才能逐步提高,生活就是這樣,汗水預示著結果也見證著收獲。勞動是人類生存生活永恆不變的話題。通過實際動手做,我們才真正領略到「艱苦奮斗」這一詞的真正含義,我們想說,編程確實有些辛苦,但苦中也有樂,在這個團隊的任務中,一起的工作可以讓我們有說有笑,相互幫助,配合默契。對我們而言,知識上的收獲重要,精神上的豐收是可喜的。挫折是一份財富,經歷是一份擁有。這次實際操作必將成為我們人生旅途上一個非常美好的回憶! 回顧起此次課程設計,至今仍感慨頗多,的確,自從拿到題目到完成整個編程,從理論到實踐,在整整半個月的日子裡,可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對一些前面學過的知識理解得不夠深刻,掌握得不夠牢固,比如說結構體,指針……通過這次課程設計之後,我把前面所學過的知識又重新溫故了一遍。 同時,在*老師的身上我學得到很多實用的知識,在此表示感謝!同時,對給過我幫助的所有同學和指導老師再次表示忠心的感謝!

㈢ c語言程序設計實驗報告

五、 課程設計小結心得體會
1設計思想
1)、設定一個一維數組,可先按員工序號設定每位員工的工資
2)、利用While語句和Prinft語句完成用戶菜單的設計
功能為:第1項 設為員工編號和工資數據
第2項 設為修改員工工資數據
第3項 設為查詢員工工資數據
第4項 設為結束系統
3)、當用戶選擇1、2項時,需輸入員工編號,所以需要設計編號校正功能,如果出錯可輸出「The error employe number」
4)、當選擇2時,進行工資數據的修改,並將新數據存回該員工的工資數組中
5)、利用for循環中判斷語句,將用戶工資數與數組中的工資數進行比較,如相同則輸出,將計數器加1,如此下去,直到把整個數組遍歷一遍
6)、判斷計數器是否為0, 是0表示找不到相符的工資,如果不為0,則輸出共查出幾比相符的工資
以上當然裡面也涉及了「函數的模塊化」理念,可以避免但需要重復列印頭文件時重復編寫列印信頭的語句。像這樣的程序是多見的,這樣不但降低了程序還發效率,而且耗時浪費資源「共用體」的使用簡化了程序的「復雜」性,正如(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模式,各種不同的模式對應不同的實際硬體系統,也將有不同的編譯結果。

在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,建議少用。但也有他的優點,具體用法屬於中級問題,這里不提。

三、有關單片機ALE引腳的問題

"單片機不訪問外部鎖存器時ALE端有正脈沖信號輸出,此頻率約為時鍾振盪頻率的1/6.每當訪問

外部數據存儲器是,在兩個機器周期中ALE只出現一次,即丟失一個ALE脈沖."這句話是不是有毛

病.我覺得按這種說法,應該丟失3個ALE脈沖才對,我一直想不通是怎麼回事,希望大蝦們幫幫我.

小弟感激涕零.

答:

其他所有指令每6個機器周期發出一個ALE,而MOVX指令佔用12個機器周期只發出一個ALE

四、如何將一個INT型數據轉換成2個CHAR型數據?

經keil優化後,char1=int1/256,char2=int1%256或char1=int1>>8,char2=int1&0x00ff效率是一樣的。

五、在KEIL C51上模擬完了,怎樣生成HEX文件去燒寫??

右鍵點項目中Target 1,選第二個,在OUTPUT中選中CREAT HEX

六、typedef 和 #define 有何不同??

typedef 和 #define 有何不同》》》 如

typedef unsigned char UCHAR ;

#define unsigned char UCHAR ;

typedef命名一個新的數據類型,但實際上這個新的數據類型是已經存在的,只不過是定義了

一個新的名字.

#define只是一個標號的定義.

你舉的例子兩者沒有區別,但是#define還可以這樣用

#define MAX 100

#define FUN(x) 100-(x)

#define LABEL

等等,這些情況下是不能用typedef定義的

七、請問如何設定KELC51的模擬工作頻(時鍾)

用右鍵點擊左邊的的target 1,然後在xtal一欄輸入

八、不同模塊怎樣共享sbit變數,extern不行?

把SBIT定義單獨放到一個.H中,每個模塊都包含這個.h文件

九、C51中對於Px.x的訪問必須自己定義嗎?

是的。

如sbit P17 = 0x97;即可定義對P1.7的訪問

十、SWITCH( )語句中表達式不可以是位變數對嗎?

可以用位變數:

#include

#include

void main()

{

bit flag;

flag=0;

switch(flag)

{

case '0':{printf("0\n");break;}

case '1':{printf("1\n");break;}

default:break;

}

}

bit 變數只有兩種狀態,if 語句足夠啦,!!!

十一、const常數聲明占不佔內存???

const 只是用來定義「常量」,所佔用空間與你的定義有關,如:

const code cstStr[] = {"abc"};

佔用代碼空間;而如:

const char data cstStr[] = {"abc"};

當然佔用內存空間。

另外,#define 之定義似乎不佔用空間。

十二、philips的單片機P89C51RD+的擴展RAM在C51中如何使用?

試一試將auxr.1清0,然後在c語言中直接聲明xdata類型的變數

十三、BUG of Keil C51

程序中用如下語句:

const unsigned char strArr[] = {"數學"};

結果發現strArr[] 內容為 {0xCA,0xD1,0xA7},真奇怪!

凡是有0xfd,則會通通不見了,所以只能手工輸入內碼了,例如 uchar strArr[]=

{0xCA,0xfd,0xd1,0xa7}(用Ultraedit會很方便)。

十四、Keil C51中如何實現代碼優化?

菜單Project下Option for target "Simulator"的C51.

看到Code optimization了嗎?

十五、請教c的!和 ~ 符號有甚區別??

!是邏輯取反,~是按位取反。

十六、c51編程,讀埠,還要不要先輸出1?

我怎麼看到有的要,有的不要,請高手給講講,到底咋回事?謝了

要輸出1的,除非你能保證之前已經是1,而中間沒有輸出過其他值。

十七、當定時器1(T1)用於產生波特率時,P3^5還是否可以用作正常的I/O口呢?

p3.5完全可以當普通的io使用

十八、C51中 INT 轉換為 2個CHAR?

各位高手:

C51中 INT 轉換為 CHAR 如何轉換諸如:

X = LOW(Z);

Y = HIGH(Z);

答:

x=(char)z;

y=(char)(z>>8);

十九、如果我想使2EH的第7位置1的話,用位操作可以嗎?

現在對位操作指令我一些不太明白請各位多多指教:

如 SETB 07H 表示的是20H.7置1,對嗎?(我在一本書上是這么看到的)

那麼如果我想使2EH的第7位置1的話,象我舉的這個例子怎麼表示呢?謝謝!

SETB 77H

setb (2eh-20h)*8+7

20h-2fh每位元組有8個可位操作(00h-7fh),其它RAM不可位直接操作

二十、char *addr=0xc000 和char xdata *addr=0xc000有何區別?

char *addr=0xc000;

char xdata *addr=0xc000;

除了在內存中佔用的位元組不同外,還有別的區別嗎?

char *addr=0xc000; 是通用定義,指針變數 addr 可指向任何內存空間的值;

char xdata *addr=0xc000; 指定該指針變數只能指向 xdata 中的值;

後一種定義中該指針變數(addr)將少佔用一個存儲位元組。

uchar xdata *addr=0xc000;指針指向外ram;

如果:data uchar xdata *addr=0xc000;指針指向外ram但指針本身存在於內ram(data)



以此類推可以idata uchar xdata *addr=0xc000;pdata uchar xdata *addr=0xc000;

data uchar idata *addr=0xa0;.........

二十一、while(p1_0)的執行時間?

假設,P1_0為單片機P1口的第一腳,請問,

while(P1_0)

{

P1_0=0;

}

while(!P1_0)

{

P1_0=1;

}

以上代碼,在KEIL C中,需要多長時間,執行完。能具體說明while(P1_0)的執行時間嗎?

模擬運行看看就知道了,

我模擬了試了一下,約14個周期

二十二、怎樣編寫C51的watchdog程序?

各位大蝦,我用KEIL C51 編寫了一個帶外部開門狗的程序,可程序無法運行起來,經過查

找,發現程序在經過C51編譯後,在MAIN()函數的前部增加了一端初始化程序,等到進入

主程序設置開門狗時,開門狗已經時間到,將我的程序復位了,請問我怎樣才能修改這一端

初始花程序,使他一運行,就設置開門狗?

可以在startup.a51中加入看門狗刷新指令,當然用匯編,然後重新編譯startup.a51

,將他和你的程序連接即可。新的startup.a51會自動代替系統默認的啟動模塊。

二十三、keil C51 怎樣把修改的startup.a51 加到工程文件中

直接加入即可

注意不要改動?STACK,?C_START,?C_STARTUP等符號。startup.a51直接加入項目,不用修改也可。可在內面自己修改匯編的一些限制或堆棧指針。

二十四、關於波特率的設置

我在設定串口波特率時發現一個問題:在晶體震盪器為11.0592MHz時,若設9600BPS的話,

TH1=0XFD,TL1=0XFD,而要設19200BPS的話,TH1、TL1有否變化,如果沒變,為什麼?

如果變了,又為什麼?(因為我看書上倆個是一樣的),希望大家點撥。

答:

當電源控制寄存器(PCON)第BIT7(SMOD)為1時波特率加倍。

TH1和TL1的值不變.

二十五、如何在C中聲明保留這部分RAM區不被C使用?

我不知道在C源程序中怎麼控制這個,但在匯編程序中加入下面一段就行:

DSEG AT 20H

AA: DS 10

這樣C51就不會佔用20H--29H了

或者在c51里這樣定義:

uchar data asm_buff[10] _at_ 0x20;

二十六、問浮點運算問題

我在用C51時發現它對傳遞浮點參數的個數有限制,請問:

1)參數是以全局變數的形式傳遞的,請問以全局變數的形式傳遞的參數也有限制嗎?

2)這種傳遞浮點參數的限制有多少呢?

3)float*float的結果是float類型還是double類型?能否直接賦值給float類型的變數?

答:

由於KEIL C51的參數傳遞是通過R0-R7來傳遞的,所以會有限制。

不過KEIL提供了一個編譯參數,可以支持更多參數的傳遞。具體

的內容見KEIL的PDF文檔。

我建議你把多個要傳遞的參數定義到指針或結構體中去,傳遞參

數通過指針或結構進行,這樣好一些。

第3個問題回答是YES,你自己試試不就知道了。

二十七、如何在某一個地址定義ram

用_at_ 命令,這樣可以定位靈活一點的地址

uchar xdata dis_buff[16] _at_ 0x6020 ;//定位RAM

將dis_buff[16]定位在0x6020開始的16個位元組

二十八、keil c中,用什麼函數可以得到奇偶校驗位?

例如32位數據,將四個位元組相互異或後檢查P即可,若耽心P被改變,可用內嵌匯編。

#include

unsigned char parity(unsigned char x){

x^=x;

if(P)return(1);

else return(0);

}

unsigned char parity2(unsigned int x){

#pragma asm

mov a,r7

xrl ar6,a

#pragma endasm

if(P)return(1);

else return(0);

}

閱讀全文

與c語言程序設計報體會相關的資料

熱點內容
文件拷貝到u盤的時候文件丟失了 瀏覽:156
婚紗拍照用哪個app 瀏覽:700
域名的主機名網路名 瀏覽:260
帶官網的有哪些網站 瀏覽:265
江蘇校服通官網app怎麼下不了 瀏覽:929
車床清根怎麼編程 瀏覽:867
word2007表格內容上下居中 瀏覽:818
蘋果手機視頻傳送不了qq文件 瀏覽:738
文件夾加密保護 瀏覽:852
蘋果5瀏覽不到網路 瀏覽:932
修電腦什麼編程器最好 瀏覽:557
計算機網路期末論文 瀏覽:731
領導現場工作照怎麼取文件名 瀏覽:957
iphone4s喇叭失靈播放音樂沒聲音 瀏覽:457
如何查找各省份的行業數據 瀏覽:462
保存到考生文件是哪個文件 瀏覽:272
linuxvim分屏 瀏覽:640
網路打牌被監控怎麼辦 瀏覽:10
為什麼漢化版編程語言沒有發展 瀏覽:86
linux剪裁 瀏覽:393

友情鏈接