![語言程序設(shè)計(jì)第3次上機(jī)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/13/5b0393e0-4992-4b9c-a1e2-955155296a79/5b0393e0-4992-4b9c-a1e2-955155296a791.gif)
![語言程序設(shè)計(jì)第3次上機(jī)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/13/5b0393e0-4992-4b9c-a1e2-955155296a79/5b0393e0-4992-4b9c-a1e2-955155296a792.gif)
![語言程序設(shè)計(jì)第3次上機(jī)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/13/5b0393e0-4992-4b9c-a1e2-955155296a79/5b0393e0-4992-4b9c-a1e2-955155296a793.gif)
![語言程序設(shè)計(jì)第3次上機(jī)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/13/5b0393e0-4992-4b9c-a1e2-955155296a79/5b0393e0-4992-4b9c-a1e2-955155296a794.gif)
![語言程序設(shè)計(jì)第3次上機(jī)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/13/5b0393e0-4992-4b9c-a1e2-955155296a79/5b0393e0-4992-4b9c-a1e2-955155296a795.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C 語言程序設(shè)計(jì) 實(shí)驗(yàn)報(bào)告班級(jí) CS1108日期 2012/5/26學(xué)生姓名 王一微 學(xué)號(hào) U201114404第 3 次上機(jī)實(shí)驗(yàn) 1 編譯預(yù)處理( 一 ) 實(shí)驗(yàn)?zāi)康模?1) 掌握文件包含、宏定義、條件編譯、assert 宏的使用;(2)練習(xí)帶參數(shù)的宏定義、條件編譯的使用;( 3) 練習(xí) assert 宏的使用; (4)使用集成開發(fā)環(huán)境中的調(diào)試功能:?jiǎn)尾綀?zhí)行、設(shè)置斷點(diǎn)、觀察變量值。( 二 ) 實(shí)驗(yàn)內(nèi)容及要求1源程序改錯(cuò) 下面是用宏來計(jì)算平方差和交換兩數(shù)的源程序。在這個(gè)源程序中 , 存在若干語法和邏輯 錯(cuò)誤 ,要求在計(jì)算機(jī)上對(duì)這個(gè)源程序進(jìn)行調(diào)試修改,使之能夠正確完成計(jì)算平方差和交換兩 數(shù)的任務(wù)。
2、源程序:#include#define SUM a+b#define DIF a-b#define SWAP(a,b) a=b,b=avoid main(void) int b, t;printf(Input two integers a, b:);scanf(%d,%d, &a,&b);printf(nSUM=%dn the difference between square of a and square of b is:%d,SUM, SUM*DIF);SWAP(a,b);Printf(nNow a=%d,b=%dn,a,b);源程序在 code: blocks 上運(yùn)行后出現(xiàn)修改后為:運(yùn)
3、行測(cè)試為:2源程序修改替換 下面是用函數(shù)實(shí)現(xiàn)求三個(gè)數(shù)中最大數(shù)、 計(jì)算兩數(shù)之和的源程序。 在這個(gè)源程序中存在若 干語法和邏輯錯(cuò)誤 , 要求:(1) 對(duì)這個(gè)例子程序進(jìn)行調(diào)試修改,使之能夠正確完成指定任務(wù)。(2) 用帶參數(shù)的宏替換函數(shù) max,來實(shí)現(xiàn)求最大數(shù)的功能。 源程序:void main(void)int a, b, c; float d, e; printf(Enter three integers:); scanf(%d,%d,%d,&a,&b,&c); printf(nthe maximum of them is %dn,max(a,b,c);printf(Enter two float
4、ing point numbers:); scanf(%f,%f,&d,&e);printf(nthe sum of them is %fn,sum(d,e);int max(int x, int y, int z) int t; if (xy) t=x; else t=y; if (tz)t=z;return t;float sum(float x, float y) return x+y;1)源程序修改后為 :運(yùn)行測(cè)試為:2)按要求修改源程序如下:運(yùn)行測(cè)試為3跟蹤調(diào)試程序下面程序的功能是利用 R 計(jì)算圓的面積 s,以及面積 s 的整數(shù)部分。現(xiàn)要求: (1) 修改程序,使程序編譯通過且能運(yùn)行
5、。源程序修改如下:運(yùn)行測(cè)試為:(2) 單步執(zhí)行。進(jìn)入函數(shù) integer_fraction時(shí) ,watch 窗口中 x 為何值?在返回 main時(shí) , watch 窗口中 i 為何值?單 步執(zhí)行 ,進(jìn)入 integer_fraction 時(shí), watch 窗 口中 x=254.468796. 返回 main 時(shí), watch 中 i=254.(3) 排除錯(cuò)誤,使程序能正確輸出面積 s 值的整數(shù)部分,不會(huì)輸出錯(cuò)誤信息 assertion failed 。程序代碼: #define R void main(void)float r,s;int s_integer=0; printf (input
6、a number: ); scanf(%f,&r);#ifdef R s=3.14159*r*r; printf(area of round is: %fn,s);s_integer= integer_fraction(s);printf(the integer fraction of area is %dn, s_integer); assert(s-s_integer)1.0);#endifint integer_fraction(float x) int i=x; return i;實(shí)驗(yàn) 2 數(shù)組實(shí)驗(yàn)( 一 ) 實(shí)驗(yàn)?zāi)康?1) 掌握數(shù)組的說明、初始化和使用。( 2)掌握一維數(shù)組作為函數(shù)參
7、數(shù)時(shí)實(shí)參和形參的用法。( 二 ) 實(shí)驗(yàn)內(nèi)容及要求1源程序改錯(cuò)下面是用來將數(shù)組 a 中元素按升序排序后輸出的源程序。 分析源程序中存在的問題, 對(duì)源程序進(jìn)行修改,使之能夠正確完成任務(wù)。源程序:#includevoid main(void)int a10 = 27, 13, 5, 32, 23, 3, 17, 43, 55, 39;void sort(int ,int);int i;sort(a0,10);for(i = 0; i 10; i+)printf(%6d,ai);printf(n);void sort(int b, int n)int i, j, t;for (i = 0; i n -
8、 1; i+)for ( j = 0; j n - i - 1; j+)if(bj bj+1) t = bj, bj = bj+1, bj+1 = t;源程序修改如下:運(yùn)行測(cè)試為:2. 源程序完善、修改、替換(1) 下面的源程序用于求解瑟夫問題: M個(gè)人圍成一圈,從第一個(gè)人開始依次從1 至 N循環(huán)報(bào)數(shù), 每當(dāng)報(bào)數(shù)為 N 時(shí)報(bào)數(shù)人出圈, 直到圈中只剩下一個(gè)人為止。 請(qǐng)?jiān)谠闯绦蛑械南聞?線處填寫合適的代碼來完善該程序。源程序:#include#define M 10#define N 3void main(void)int aM, bM;/* 數(shù)組 a 存放圈中人的編號(hào),數(shù)組 b 存放出圈人的編號(hào)
9、 */int i, j, k;for(i = 0; i 1; i-)/* i 表示圈中人個(gè)數(shù),初始為 M個(gè),剩 1個(gè)人時(shí)結(jié)束循環(huán); j 表示當(dāng)前報(bào)數(shù)人的位置 */ for(k = 1; k i - 1) j = 0;/*最后一個(gè)人報(bào)數(shù)后第一個(gè)人接著報(bào),形成一個(gè)圈 */bM-i = j? aj-1 : ai-1 ;/* 將報(bào)數(shù)為 N 的人的編號(hào)存入數(shù)組 b */if(j)for(k = -j; k i; k+)/* 壓縮數(shù)組 a,使報(bào)數(shù)為 N的人出圈 */ak=ak+1 ;for(i = 0;i M 1; i+)printf(“ %6d” , bi);/* 按次序輸出出圈人的編號(hào) */print
10、f(“ %6dn” , a0);/* 輸出圈中最后一個(gè)人的編號(hào) */運(yùn)行測(cè)試為:(2) 上面的程序中使用數(shù)組元素的值表示圈中人的編號(hào), 故每當(dāng)有人出圈時(shí)都要壓縮數(shù) 組,這種算法不夠精煉。 如果采用做標(biāo)記的辦法, 即每當(dāng)有人出圈時(shí)對(duì)相應(yīng)數(shù)組元素做標(biāo)記, 從而可省掉壓縮數(shù)組的時(shí)間, 這樣處理效率會(huì)更高一些。 因此,請(qǐng)采用做標(biāo)記的辦法修改 ( 1) 中的程序,并使修改后的程序與( 1)中的程序具有相同的功能。源程序?yàn)椋哼\(yùn)行測(cè)試為:3跟蹤調(diào)試源程序在下面所給的源程序中,函數(shù) strncat(s,t,n) 本來應(yīng)該將字符數(shù)組 t 的前 n 個(gè)字符連 接到字符數(shù)組 s 中字符串的尾部。但函數(shù) strnca
11、t 在定義時(shí)代碼有誤,不能實(shí)現(xiàn)上述功能。 請(qǐng)按下面的要求進(jìn)行操作,并回答問題和排除錯(cuò)誤。(1) 單步執(zhí)行源程序。進(jìn)入函數(shù) strncat 后觀察表達(dá)式 s、 t 和 i 。當(dāng)光條落在 for 語 句所在行時(shí), i 為何值?當(dāng)光條落在 strncat 函數(shù)塊結(jié)束標(biāo)記(右花括號(hào) )所在行時(shí) , s、 t 分別為何值?光條落在 for 語句所在行時(shí), i=22光條落在 strncat 函數(shù)塊結(jié)束標(biāo)記所在行時(shí)(2) 分析函數(shù)出錯(cuò)的原因, 排除錯(cuò)誤, 使函數(shù)正確實(shí)現(xiàn)功能, 最后寫出程序的輸出結(jié)果。 源程序:#includevoid strncat(char ,char ,int);void main(v
12、oid)char a50=The adopted symbol is ,b27=abcdefghijklmnopqrstuvwxyz; strncat(a, b, 4);printf(%sn,a);void strncat(char s,char t, int n)int i = 0, j; while(si+) ; for(j = 0; j n & tj;) si+ = tj+;si = 0;(2) 調(diào)試發(fā)現(xiàn) s,t 和 i 值有誤,修改后源程序?yàn)椋哼\(yùn)行輸出結(jié)果為:程序設(shè)計(jì): 編寫并上機(jī)調(diào)試運(yùn)行能實(shí)現(xiàn)以下功能的程序。(1) 已知三角形的面積是 area s(s a)(s b)(s c) ,其
13、中 s (a b c) / 2 ,a,b,c 為三角形的三邊。 定義兩個(gè)帶參數(shù)的宏, 一個(gè)用來求 s,另一個(gè)用來求 area, 試編寫一程序, 用帶參數(shù)的宏來計(jì)算三角形的面積。(1)源程序如下:運(yùn)行測(cè)試為:結(jié)果正確。(2) 使用條件編譯方法編寫一程序 , 其功能要求是 , 輸入一行電報(bào)文字,可以任選兩種輸出: 一為原文輸出; 二為變換字母的大小寫 (如小寫 a變成大寫A,大寫D變成小寫d), 其他字符不變。用 #define 命令控制是否變換字母的大小寫。例如,#define CHANGE 1 則輸出變換后的文字,若 #define CHANGE 0 則原文輸出。(2)源程序如下:運(yùn)行測(cè)試為:將#define CHANGE 1 換為#define CHANGE 0 后源程序?yàn)椋哼\(yùn)行測(cè)試為:結(jié)果正確。(3) 編寫一個(gè)程序 , 從鍵盤讀取數(shù)據(jù),對(duì)一個(gè) 3 4 矩陣進(jìn)行賦值,求其轉(zhuǎn)置矩陣,然后輸出 原矩陣和轉(zhuǎn)置矩陣。(3)源程序如下:運(yùn)行測(cè)試如下:結(jié)果正確 實(shí)驗(yàn)心得與體會(huì):編程時(shí)要多看多做多改。暫時(shí)沒有思路的程序,可以看一些類似的例題, 多看看別人是怎么做的,可以用什么方法。做出來的程序,不能認(rèn)為自己已經(jīng)完全會(huì)了, 而不去理會(huì),應(yīng)該試著用其他句型修改一下程序,看看會(huì)產(chǎn)生什么效果,盡量簡(jiǎn)化程序, 讓程序看起來簡(jiǎn)單易懂,且讓人不會(huì)產(chǎn)生誤解。選做題給定 n 位( n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)三年級(jí)數(shù)學(xué)五千以內(nèi)加減法單元測(cè)試口算題大全附答案
- 貴州省安順市2024-2025學(xué)年九年級(jí)上學(xué)期期末語文試題(解析版)
- 車鑒定申請(qǐng)書
- 士官退役申請(qǐng)書
- 設(shè)備安裝空間限制指南
- 醫(yī)院同工同酬申請(qǐng)書
- 2024-2025學(xué)年山東省煙臺(tái)市高三上學(xué)期期末物理試題
- 簡(jiǎn)單山地流轉(zhuǎn)合同(2篇)
- 2025年1月普通高等學(xué)校招生全國(guó)統(tǒng)一考試適應(yīng)性測(cè)試(八省聯(lián)考)英語試題(解析版)(適用地區(qū):豫晉陜川青寧蒙滇)
- 山東省百校大聯(lián)考2024-2025學(xué)年高三上學(xué)期12月月考物理試題(解析版)
- 《煤礦安全規(guī)程》專家解讀(詳細(xì)版)
- 招聘面試流程sop
- 建筑公司工程財(cái)務(wù)報(bào)銷制度(精選7篇)
- 工程設(shè)計(jì)方案定案表
- 最新2022年減肥食品市場(chǎng)現(xiàn)狀與發(fā)展趨勢(shì)預(yù)測(cè)
- 第一章-天氣圖基本分析方法課件
- 發(fā)展?jié)h語初級(jí)綜合1:第30課PPT課件[通用]
- 暖氣管道安裝施工計(jì)劃
- 體育實(shí)習(xí)周記20篇
- 初二物理彈力知識(shí)要點(diǎn)及練習(xí)
- 復(fù)合材料成型工藝及特點(diǎn)
評(píng)論
0/150
提交評(píng)論