




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、軟件開發(fā) 基 礎(chǔ) 19實(shí)驗(yàn)指導(dǎo)書供軟件學(xué)院各專業(yè)使用)華東交通大學(xué) 軟件學(xué)院計(jì)算機(jī)軟件與理論教研室編寫2011-10-13第 第 第 第 第1 章 前 言 一、本課程實(shí)驗(yàn)教學(xué)的地位和作用 二、基本實(shí)驗(yàn)理論 三、應(yīng)達(dá)到的能力和要求 四、目的與要求 五、考核辦法 章 章 章 章 章 章 章 章實(shí)驗(yàn)一 實(shí)驗(yàn)二 實(shí)驗(yàn)三 實(shí)驗(yàn)四 實(shí)驗(yàn)五 實(shí)驗(yàn)六 實(shí)驗(yàn)七 實(shí)驗(yàn)八.3.3.3.4.5.5.附錄 A 附錄 B 附錄 C附錄 D開發(fā)環(huán)境及基本數(shù)據(jù)類型與運(yùn)算 順序結(jié)構(gòu)與分支結(jié)構(gòu) 循環(huán)結(jié)構(gòu) 數(shù)組與字符串 地址與指針 使用函數(shù)實(shí)現(xiàn)模塊化設(shè)計(jì)思想 函數(shù)的嵌套與遞歸 簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)的綜合應(yīng)用 1.0.1.4.2.0.2.4
2、.2.8.3.33.8實(shí)驗(yàn)報(bào)告的模板 實(shí)驗(yàn)報(bào)告的范例 C 語(yǔ)言程序的上機(jī)步驟 .Visual C+ 6.0 開發(fā)環(huán)境.4.3.4.64.7.5.0第 1 章 前 言、本課程實(shí)驗(yàn)教學(xué)的地位和作用對(duì)軟件工程專業(yè)及相關(guān)復(fù)合性專業(yè)人才來說,軟件開發(fā)技能是 其基礎(chǔ),而程序設(shè)計(jì)技術(shù)又是其基本功。 軟件開發(fā)基礎(chǔ)是軟件工 程專業(yè)及相關(guān)復(fù)合專業(yè)教學(xué)計(jì)劃中的一門學(xué)科基礎(chǔ)核心課程, 本課程 主要以面向過程的程序設(shè)計(jì)為例,講述軟件開發(fā)中的程序設(shè)計(jì)技術(shù), 為授課對(duì)象進(jìn)一步學(xué)習(xí)其他專業(yè)課程奠定一個(gè)軟件開發(fā)技能的基礎(chǔ)。 該課程主要包括面向過程的軟件開發(fā)技術(shù)、 數(shù)據(jù)的存儲(chǔ)與運(yùn)算、 結(jié)構(gòu) 化程序設(shè)計(jì)中的三種基本結(jié)構(gòu)、 復(fù)合數(shù)據(jù)
3、類型和模塊化程序設(shè)計(jì)等內(nèi) 容。該課程的主要任務(wù)是使學(xué)生掌握面向過程的軟件開發(fā)技術(shù)、熟 練掌握一門面向過程的計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言(本課程以C語(yǔ)言為例)、較全面地掌握結(jié)構(gòu)化程序設(shè)計(jì)方法等方面的知識(shí)。 實(shí)驗(yàn)教學(xué)是本課程 重要的教學(xué)環(huán)節(jié),通過實(shí)驗(yàn):使學(xué)生加深對(duì)講授內(nèi)容的理解;熟悉所 用的軟件開發(fā)環(huán)境(本課程以 Microsoft Visual C+ 6.0 作為程序 開發(fā)環(huán)境);學(xué)會(huì)上機(jī)調(diào)試程序的基本操作;能夠運(yùn)用面向過程的程 序設(shè)計(jì)語(yǔ)言來開發(fā)程序, 以解決本專業(yè)某些實(shí)際問題; 并養(yǎng)成嚴(yán)謹(jǐn)?shù)?科學(xué)態(tài)度、培養(yǎng)出良好的專業(yè)思維方法及編寫出 “好”的程序的能力; 從而進(jìn)一步提高抽象思維能力、 形式化描述的能力
4、、 及分析和解決問 題的能力,為后續(xù)課程的學(xué)習(xí)打下一個(gè)良好的基礎(chǔ)。二、基本實(shí)驗(yàn)理論1、掌握一門面向過程的計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言(本課程以C 語(yǔ)言為例);2、掌握一種軟件開發(fā)環(huán)境 (本課程以 Microsoft Visual C+6.0 作為程序開發(fā)環(huán)境)的基本操作方法,能夠使用該開發(fā)環(huán)境 來編寫程序;了解如何在該開發(fā)環(huán)境下進(jìn)行編輯、編譯、連 接和運(yùn)行 C 程序;熟悉如何使用該開發(fā)環(huán)境來調(diào)試程序,以 達(dá)到解決程序中問題的目的。3. 掌握面向過程的軟件開發(fā)技術(shù):通過“模塊化”技術(shù)來設(shè)計(jì)軟 件的層次結(jié)構(gòu);通過“逐步求精”的方法,來設(shè)計(jì)問題描述的 數(shù)據(jù)結(jié)構(gòu)和問題求解的算法;通過“結(jié)構(gòu)化”的方法,編寫出 一
5、個(gè)正確的、健壯的、可讀性和可移植性好的、以及時(shí) / 空效 率高的程序。、應(yīng)達(dá)到的能力和要求1、掌握 VC 6.0 軟件開發(fā)環(huán)境的基本功能的使用;2、學(xué)會(huì)針對(duì)一個(gè)程序設(shè)計(jì)出一些測(cè)試用例,以便發(fā)現(xiàn)程序中的 問題;學(xué)會(huì)針對(duì)被發(fā)現(xiàn)的程序中的問題, 如何調(diào)試一個(gè)程序, 以便修改程序,解決相應(yīng)的問題;3、掌握C語(yǔ)言的各種基本數(shù)據(jù)類型的使用;4、掌握數(shù)據(jù)的格式化輸入 / 出功能的使用;5、掌握實(shí)現(xiàn)三種結(jié)構(gòu)(順序、選擇和循環(huán))的編程方法;6、掌握 C 語(yǔ)言中的復(fù)雜數(shù)據(jù)類型(數(shù)組、字符串、指針、結(jié)構(gòu)體和共用體)及用戶自定義類型的定義和使用方法;7、掌握用函數(shù)來實(shí)現(xiàn)模塊的方法及調(diào)用函數(shù)的方法、函數(shù)的實(shí) 參與形參結(jié)
6、合的方式、變量的生命周期及作用域(變量的存 儲(chǔ)類別);8、掌握文件以及文件指針的概念,初步學(xué)會(huì)針對(duì)文件操作的各 種標(biāo)準(zhǔn)庫(kù)函數(shù)。9、掌握C語(yǔ)言中常用的標(biāo)準(zhǔn)庫(kù)函數(shù)的使用。四、目的與要求在實(shí)驗(yàn)過程中的每一個(gè)實(shí)驗(yàn)題目, 學(xué)生要始終貫徹本課程所介紹 的面向過程的軟件開發(fā)技術(shù)(模塊化、逐步求精和結(jié)構(gòu)化)的思想, 養(yǎng)成良好的編程習(xí)慣和程序設(shè)計(jì)風(fēng)格。 每個(gè)學(xué)生要求獨(dú)立地完成所布 置的上機(jī)題目,對(duì)編寫的程序要保證在統(tǒng)一安排的上機(jī)時(shí)間內(nèi)編譯、 運(yùn)行、調(diào)試、直至測(cè)試通過。在每次上機(jī)實(shí)驗(yàn)前要求做好前期準(zhǔn)備工 作,給出程序設(shè)計(jì)的基本文檔資料(包括設(shè)計(jì)的測(cè)試用例)和程序代 碼的清單,按照要求寫好預(yù)習(xí)報(bào)告;上機(jī)過程中,對(duì)程
7、序運(yùn)行過程中 出現(xiàn)的問題及對(duì)該問題出現(xiàn)原因的分析、 對(duì)程序的調(diào)試和修改、 程序 最終正確的運(yùn)行結(jié)果 (最好是屏幕截圖) 等要做好記錄; 上機(jī)結(jié)束后, 要撰寫實(shí)驗(yàn)報(bào)告, 在實(shí)驗(yàn)報(bào)告中要有本次實(shí)驗(yàn)的心得。 具體要求如下:1、了解所用的計(jì)算機(jī)系統(tǒng)(包括 VC 6.0 )的性能和使用方法。2、復(fù)習(xí)和掌握與本次實(shí)驗(yàn)有關(guān)的知識(shí)點(diǎn)。3、準(zhǔn)備好上機(jī)所需的文檔、測(cè)試用例和程序代碼,在上機(jī)實(shí)驗(yàn)時(shí) 間內(nèi)必須完成實(shí)驗(yàn)要求中規(guī)定的任務(wù), 切忌 不事先編寫好程序 就上機(jī)(邊上機(jī)邊寫程序) !切忌抄別人的程序?。ㄒ坏┌l(fā)現(xiàn)二 次,將對(duì)本課程的最終成績(jī)直接按不及格處理! )4、在做預(yù)習(xí)報(bào)告時(shí),對(duì)程序中可能會(huì)出現(xiàn)的問題要有事先的
8、估計(jì), 對(duì)程序中自己把握不住的、有疑問的、或希望通過上機(jī)調(diào)試的 地方,應(yīng)先作上記號(hào),以便在上機(jī)過程中給予特別的關(guān)注。)。5、在上機(jī)實(shí)驗(yàn)過程中, 切忌 玩游戲、上網(wǎng)或做一些不相關(guān)的事情 (一旦發(fā)現(xiàn)二次,將對(duì)本課程的最終成績(jī)直接按不及格處理!6、每次實(shí)驗(yàn)結(jié)束,均要撰寫“實(shí)驗(yàn)報(bào)告”(模板參加附錄A),在 實(shí)驗(yàn)報(bào)告中,要反映上機(jī)前的預(yù)習(xí)、上機(jī)過程中的工作、上機(jī)后 的總結(jié)分析這三方面的內(nèi)容。五、考核辦法實(shí)驗(yàn)成績(jī)占本課程總成績(jī)的 30%,具體考核方法如下;1、凡出現(xiàn)以下情況之一者,本課程實(shí)驗(yàn)成績(jī) 直接按零分計(jì) :(1)對(duì)上機(jī)實(shí)驗(yàn)無故缺勤者(確實(shí)有事 要請(qǐng)假 );(2)對(duì)上機(jī)過程中發(fā)現(xiàn)玩游戲、上網(wǎng)或做一些其
9、它不相關(guān) 的事情者;(3)一旦發(fā)現(xiàn)有一次上機(jī)實(shí)驗(yàn)是 完全抄襲 別人的程序者;(4)有二次實(shí)驗(yàn)報(bào)告未交者;2、在每次上機(jī)實(shí)驗(yàn)中,凡出現(xiàn)以下情況之一者, 直接視本次實(shí) 驗(yàn)無效(本次實(shí)驗(yàn)按零分計(jì)算) 。(1)對(duì)于沒有按要求做上機(jī)前預(yù)習(xí)工作者; (2)沒有上交“實(shí)驗(yàn)報(bào)告”者;3、每次實(shí)驗(yàn)的成績(jī),按以下方式來評(píng)判:( 1)實(shí)驗(yàn)前預(yù)習(xí)的要求 占 50%(反映在 實(shí)驗(yàn)報(bào)告 中):a. 對(duì)實(shí)驗(yàn)的題目采用逐步求精的方法給出了問題 的求解算法;b. 對(duì)問題領(lǐng)域中的求解對(duì)象給出了相應(yīng)的數(shù)據(jù)結(jié) 構(gòu)或數(shù)據(jù)類型;c. 對(duì)最終的求解算法使用了程序流程圖或 N-S 圖 表示;d. 準(zhǔn)備好了測(cè)試數(shù)據(jù),寫出了程序清單。(2)上機(jī)
10、實(shí)驗(yàn)過程的要求 占 30%(反映在 上機(jī)實(shí)驗(yàn)過程 和 實(shí)驗(yàn)報(bào)告 中):b.c.d.(3)a.b.a. 對(duì)軟件開發(fā)環(huán)境的熟練程度; 程序運(yùn)行結(jié)果的正確性; 程序代碼的可讀性; 程序調(diào)試的熟練程度。實(shí)驗(yàn)后分析總結(jié)的要求 占 20%(反映在實(shí)驗(yàn)報(bào)告 中): 對(duì)程序運(yùn)行情況的分析總結(jié); 在程序調(diào)試過程中所取得的經(jīng)驗(yàn)總結(jié)。4、本課程實(shí)驗(yàn)的總成績(jī),除了第 1 條情況外,其它均按上面的 第 2 條和第 3 條中對(duì)每次實(shí)驗(yàn)的評(píng)判,做 平均分來計(jì)算 。第 2 章 實(shí)驗(yàn)開發(fā)環(huán)境及基本數(shù)據(jù)類型與運(yùn)算一、實(shí)驗(yàn)?zāi)康?、熟悉 VC 6.0 集成環(huán)境,了解各基本功能的使用方;2、通過運(yùn)行幾個(gè)簡(jiǎn)單的C程序,熟悉 C語(yǔ)言程序的
11、結(jié)構(gòu);3、一個(gè)C程序的上機(jī)過程;4、學(xué)會(huì)并掌握基本的數(shù)據(jù)類型的使用、運(yùn)算和表達(dá)式的計(jì)算。二、實(shí)驗(yàn)性質(zhì) 驗(yàn)證性 三、實(shí)驗(yàn)要求1、認(rèn)真閱讀教材和本次實(shí)驗(yàn)的內(nèi)容,熟悉 VC環(huán)境的使用過程2、能夠使用VC編寫最簡(jiǎn)單的程序四、預(yù)習(xí)要求1、仔細(xì)閱讀教材和實(shí)驗(yàn)內(nèi)容中關(guān)于 VC環(huán)境使用的步驟;2、有條件的話可先在自己的電腦上按照實(shí)驗(yàn)內(nèi)容進(jìn)行實(shí)際操作;3、在預(yù)習(xí)報(bào)告中回答問題。五、實(shí)驗(yàn)內(nèi)容( 一 ) 、熟悉 VC 環(huán)境1、請(qǐng)仔細(xì)閱讀教材中的“ 1.4運(yùn)行C程序的步驟與方法”(第6 至第 14頁(yè));2、 請(qǐng)仔細(xì)閱讀本實(shí)驗(yàn)指導(dǎo)書中附錄C( C 語(yǔ)言程序的上機(jī)步驟) 和附錄 D ( Visual C+ 6.0 開發(fā)環(huán)
12、境)(二)、程序練習(xí)【實(shí)驗(yàn)題1】請(qǐng)將下面程序在VC環(huán)境中輸入,并運(yùn)行觀察其結(jié)果。1) #include<stdio.h> void main() printf("我愛學(xué)C語(yǔ)言! n");printf("告訴你學(xué)好C語(yǔ)言的秘笈:n");2) #include<stdio.h>void main()int price,weight,value; price=10;weight=20; value=price*weight;printf(" 價(jià)格為d,重量為%d 為 %dn", price,weight,value)
13、;price=5;weight=8;printf(" 價(jià)格為 %d, 重量為 %d 為 dn", pnce,weight,value); value=price*weight;printf(" 價(jià)格為 %d, 重量為 %d 為 dn", pnce,weight,value);貨物,價(jià)值貨物,價(jià)值貨物,價(jià)值實(shí)驗(yàn)題 2】輸入一個(gè)有錯(cuò)誤的程序, 編譯發(fā)現(xiàn)錯(cuò)誤,再修改至正確。#include<stdio.h>void main()int a=12,b=34;c=a+bprintf("%d-%d=%d n",a,b,c);如實(shí)地輸入
14、上面的程序,在實(shí)驗(yàn)報(bào)告中描述:編譯時(shí)發(fā)現(xiàn)的錯(cuò)誤;這些錯(cuò)誤是由于什么原因引起的;你是如何改正的。實(shí)驗(yàn)題3】輸入下面的程序, 觀察程序的運(yùn)行結(jié)果, 再對(duì)程序修改。#include<stdio.h> void main()int a, b , c; c=(a=10, b=3); c=a+; c=+b; c+=a+b; c=a/b;printf(" 逗號(hào)表達(dá)式的值為 : %dn",c); printf("a=%d ; c=%dn",a,c); printf("b=%d ; c=%dn",b,c);printf("c=c+
15、a+b 的值為: %dn",c); printf("a/b 的值為 : %dn",c);從該示例中, 自增和自減運(yùn)算、 觀察程序的運(yùn)行結(jié)果。最后對(duì)將 float ,觀察程序的運(yùn)行結(jié)果。請(qǐng)仔細(xì)體會(huì):逗號(hào)表達(dá)式的計(jì)算、復(fù)合賦值運(yùn)算、除法運(yùn)算。再對(duì)程序中的自增運(yùn)算改為自減運(yùn)算,a、 b 和 c 這三個(gè)變量的類型改為六、思考題1、使用VC編程時(shí),應(yīng)先創(chuàng)建的工程是什么類型?2、如何運(yùn)行一個(gè)C程序?第 3 章 實(shí)驗(yàn)二 順序結(jié)構(gòu)與分支結(jié)構(gòu)一、實(shí)驗(yàn)?zāi)康?、掌握 scanf 、printf 函數(shù)中控制字符的使用技巧;2、能夠編寫實(shí)現(xiàn)簡(jiǎn)單的程序;3、掌握關(guān)系表達(dá)式和邏輯表達(dá)式的使用;
16、4、掌握使用 if 語(yǔ)句來實(shí)現(xiàn)分支結(jié)構(gòu)程序設(shè)計(jì);5、掌握 switch 語(yǔ)句的語(yǔ)法和使用技巧;6、進(jìn)一步熟悉軟件開發(fā)環(huán)境的基本功能和程序的調(diào)試方法。二、實(shí)驗(yàn)性質(zhì) 驗(yàn)證性 三、實(shí)驗(yàn)要求1、2、3、4、認(rèn)真閱讀本次實(shí)驗(yàn)的目的,了解本次實(shí)驗(yàn)要求掌握的內(nèi)容; 在上機(jī)前需要預(yù)習(xí),將相關(guān)內(nèi)容寫在實(shí)驗(yàn)報(bào)告中; 在實(shí)驗(yàn)時(shí),將實(shí)驗(yàn)要求的基本題根據(jù)預(yù)習(xí)時(shí)寫在實(shí)驗(yàn)報(bào)告中 的程序清單輸入VC環(huán)境,進(jìn)行編譯、連接、運(yùn)行、測(cè)試、調(diào) 試和修改,并對(duì)相應(yīng)內(nèi)容做好記錄; 記錄程序的最終運(yùn)行結(jié)果;5、在實(shí)驗(yàn)時(shí),將實(shí)驗(yàn)內(nèi)容中的基本題(程序改錯(cuò)和編程題)在預(yù)習(xí)過程中編寫出正確的代碼, 并在VC環(huán)境中運(yùn)行,且爭(zhēng)取 完成選作題。四、預(yù)習(xí)
17、要求1、scanf 、 printf 函數(shù)的輸入 / 出控制格式及其使用;2、 關(guān)系表達(dá)式和邏輯表達(dá)式的語(yǔ)法、計(jì)算方法及運(yùn)算符的優(yōu)先級(jí) 與結(jié)合性;3、if 語(yǔ)句和 switch 語(yǔ)句的語(yǔ)法、語(yǔ)義和語(yǔ)用;4、對(duì)實(shí)驗(yàn)內(nèi)容中的每個(gè)題目,設(shè)計(jì)出“問題的求解算法及數(shù)據(jù)結(jié) 構(gòu)”和“源程序清單”,并構(gòu)造出相應(yīng)的“測(cè)試數(shù)據(jù)” ;5、在實(shí)驗(yàn)報(bào)告中撰寫相應(yīng)的內(nèi)容,為上機(jī)實(shí)驗(yàn)做好充分的準(zhǔn)備。五、實(shí)驗(yàn)內(nèi)容1程 序 改 錯(cuò)實(shí)驗(yàn)題 1】下面程序需要從鍵盤輸入三個(gè)數(shù),計(jì)算其平均值在屏幕 上顯示輸出。要求平均值需要保留兩位小數(shù)。源代碼如下, 程序中存在錯(cuò)誤, 請(qǐng)將其改正寫在旁邊, 并注明為什么錯(cuò)誤。 include stdi
18、o.hMain()int x,y,z,float ave; /* 定義變量 */printf(" 請(qǐng)輸入三個(gè)數(shù): n);/* 輸入提示 */ scanf("%d,%d,%d",x,y,z);/* 從鍵盤輸入 */ ave=x+y+z/3;/*計(jì)算 */printf(" 平均值是 :ave=%f",AVE);實(shí)驗(yàn)題 2】下面程序需要從鍵盤輸入一個(gè)數(shù),判斷其是奇數(shù)還是偶 數(shù)。源代碼如下,程序中存在錯(cuò)誤,請(qǐng)將其改正寫在旁邊, 并注明為什么錯(cuò)誤。#include <stdio.h>main()int x;printf(" 請(qǐng)輸入一
19、個(gè)數(shù): /n");/* 提示輸入 */scanf("%d",&x);/* 判斷 */if(x=2*n);printf("x 是偶數(shù) ");printf("x 是奇數(shù) ");2. 編程題【實(shí)驗(yàn)題3】編寫程序,在計(jì)算機(jī)屏幕上顯示如下信息:1*文件aI)ebu£, . HaB返是廿両的Gt要求:使用printf函數(shù)輸出字符。【實(shí)驗(yàn)題4】編寫一程序,從鍵盤輸入三角形的三條邊,如果能構(gòu)成 一個(gè)三角形判斷其是否是等腰三角形(等邊三角形是等腰三 角形的特例)。要求:(1)用seanf函數(shù)輸入三角形的三條邊 a,b,c,且
20、在輸入前 要有提示;(2)使用if語(yǔ)句判斷,對(duì)每種情況都需要有提示。xx<10000.9x1000x<20000.8x2000x<30000.7xx 3000在某一范圍時(shí),付款ryy= Q【實(shí)驗(yàn)題5】在商場(chǎng)購(gòu)物時(shí),若所購(gòu)物品的總價(jià)值 x (由鍵盤輸入) y按對(duì)應(yīng)折扣支付,即:x的值計(jì)算V編寫一程序,根據(jù)要求:(1)用seanf函數(shù)輸入x( x為小數(shù)),且在輸入前要有提示;(2)使用switch語(yǔ)句判斷,計(jì)算y的值;(3)使用printf輸出y的值,小數(shù)點(diǎn)保留2位3選 作 題選作題 1】編程求 ax 2 +bx+c=0 的解位數(shù):n=5正序:12345反序:54321是否為滿足
21、要求n 大于 99999,小于 0 時(shí);否則不滿選作題 2】編寫一程序,從鍵盤輸入一個(gè)不多于 5 位的正整數(shù), 能顯示出它是幾位數(shù),并按正反兩種順序顯示出各位數(shù)字。 例如,若輸入 12345 ,輸出為:【編程點(diǎn)撥】 先判斷 x 足要求,提示輸入數(shù)據(jù)錯(cuò)誤。 通過 %和/ 運(yùn)算分離出各個(gè)位上的數(shù)字。選作題 3】 從終端輸入兩個(gè)實(shí)數(shù)和一個(gè)四則運(yùn)算符(、 *、 / ), 執(zhí)行相應(yīng)的運(yùn)算并輸出運(yùn)算結(jié)果。 (如輸入: 125+261 ,結(jié)果為: 125+261=386 ) 【編程點(diǎn)撥】先用 scanf 函數(shù),輸入一個(gè)四則運(yùn)算的表達(dá)式(左操作數(shù)、運(yùn) 算符、右操作數(shù)),分別保存在不同的變量; 對(duì)運(yùn)算符變量使用
22、 switch 語(yǔ)句進(jìn)行判斷, 根據(jù)運(yùn)算規(guī)則, 編寫 相應(yīng)的表達(dá)式求運(yùn)算結(jié)果。六、思考題1、變量在程序中有什么作用, 如何從鍵盤中輸入多個(gè)變量的值?2、程序中有哪幾種流程結(jié)構(gòu),具體在程序中用什么體現(xiàn)?3、在使用 if 語(yǔ)句的嵌套時(shí),需要注意什么問題?4、在使用 switch 語(yǔ)句時(shí),需要注意什么問題?第 4 章 實(shí)驗(yàn)三 循環(huán)結(jié)構(gòu)一、實(shí)驗(yàn)?zāi)康?、進(jìn)一步加深對(duì)結(jié)構(gòu)化程序設(shè)計(jì)思想的理解,學(xué)習(xí)和掌握程序 的調(diào)試技巧;2、加深對(duì)當(dāng)型循環(huán)、直到型循環(huán)和計(jì)數(shù)型循環(huán)差異的理解,熟 練掌握這三種循環(huán)的應(yīng)用;3、掌握各種循環(huán)中如何正確的設(shè)定循環(huán)條件和循環(huán)初始值,理 解循環(huán)條循環(huán)體的設(shè)計(jì),正確的控制循環(huán)次數(shù);4、掌
23、握 break 、 continue 語(yǔ)句的正確使用;5、能實(shí)現(xiàn)一些常用的簡(jiǎn)單算法(如:窮舉、迭代等) 。二、實(shí)驗(yàn)性質(zhì) 驗(yàn)證性 三、實(shí)驗(yàn)要求1、認(rèn)真閱讀本次實(shí)驗(yàn)的目的,了解本次實(shí)驗(yàn)要求掌握的內(nèi)容;2、在上機(jī)前需要預(yù)習(xí),將相關(guān)內(nèi)容寫在實(shí)驗(yàn)報(bào)告中;3、在實(shí)驗(yàn)時(shí),將實(shí)驗(yàn)要求的基本題根據(jù)預(yù)習(xí)時(shí)寫在實(shí)驗(yàn)報(bào)告中的程序清單輸入VC環(huán)境,進(jìn)行編譯、連接、運(yùn)行、測(cè)試、調(diào)試和修改,并對(duì)相應(yīng)內(nèi)容做好記錄;4、記錄程序的最終運(yùn)行結(jié)果;5、在實(shí)驗(yàn)時(shí),將實(shí)驗(yàn)內(nèi)容中的基本題(程序改錯(cuò)和編程題)在預(yù)習(xí)過程中編寫出正確的代碼, 并在VC環(huán)境中運(yùn)行,且爭(zhēng)取完成選作題。四、預(yù)習(xí)要求1、while 循環(huán)、 do_while 循環(huán)和
24、for 循環(huán)的語(yǔ)法、語(yǔ)義和語(yǔ)用;2、關(guān)系表達(dá)式和邏輯表達(dá)式的語(yǔ)法、 計(jì)算方法及運(yùn)算符的優(yōu)先級(jí) 與結(jié)合性;3、break 語(yǔ)句和 continue 語(yǔ)句的語(yǔ)法、語(yǔ)義和語(yǔ)用;4、對(duì)實(shí)驗(yàn)內(nèi)容中的每個(gè)題目,設(shè)計(jì)出“問題的求解算法及數(shù)據(jù)結(jié)構(gòu)”和“源程序清單” ,并構(gòu)造出相應(yīng)的“測(cè)試數(shù)據(jù)” ;5、在實(shí)驗(yàn)報(bào)告中撰寫相應(yīng)的內(nèi)容,為上機(jī)實(shí)驗(yàn)做好充分的準(zhǔn)備。五、實(shí)驗(yàn)內(nèi)容1程 序 改 錯(cuò)實(shí)驗(yàn)題 1】編寫程序, 求 1!+2!+3!+.+10!的值, 源代碼如下,程序中存在錯(cuò)誤,請(qǐng)將其改正寫在旁邊。/* 定義變量 */* 循環(huán) */#include <stdio.h> main() int i; long
25、 sum,temp; for(i=1,i<=10,i+)/* 計(jì)算 i 的階乘*/* 求和 */ temp=temp+i; sum=sum*temp;printf("1!+2!+3!+10!=%d",sum);2編 程 題實(shí)驗(yàn)題 2】 分別用三種循環(huán)語(yǔ)句( while 語(yǔ)句、 do-while 語(yǔ)句、 for語(yǔ)句)各編寫一個(gè)程序?qū)崿F(xiàn)求1 20的累乘,即:1 X 2 X 3 X X 20總結(jié)出三種循環(huán)語(yǔ)句哪種實(shí)現(xiàn)起來方便、靈活。實(shí)驗(yàn)題 3】 輸入一個(gè)字母, 輸出由這個(gè)字母決定其高度的字符 “金字塔”。例如輸入小寫字母d,則輸出左邊的圖形,如輸入大 寫字母D,則輸出右邊圖
26、形,它們的高度都為4。(字母a或A表示高度為,字母b或B表示高度為2,字母z或Z 表示高度為 26 )AAAAA B AAAAACCAAAACCQDCCAA編程點(diǎn)撥】使用 for 循環(huán),遍歷 1-1000 之內(nèi)的所有數(shù) n ; 在內(nèi)層循環(huán)中,遍歷比 n 的數(shù),判斷其是否是 n 的因子,如果是將其 加到累加器;內(nèi)層循環(huán)結(jié)束時(shí),判斷累加器中的數(shù)是否和 n 相當(dāng),如果是則輸出。選作題 2】求 Sna aa aaaaa a 的值,其中 a 是首先根據(jù)輸入的字符判斷需要輸出的字母是大寫還是小寫, 以及需要 輸出的行數(shù);在外層循環(huán)中控制行數(shù);內(nèi)層循環(huán)控制輸出每一行, 對(duì)每一行可分為兩部分: 從首字母到該行
27、 的最大字母,從該行最大字母的前一個(gè)字母到首字母如第 3 行是 ABC和BA,分別用兩個(gè)循環(huán)實(shí)現(xiàn); 每一行的最大字母跟行號(hào)有關(guān)系,請(qǐng)注意其變化規(guī)律。3選 作 題選作題 1】 一個(gè)數(shù)如恰好等于它的因子之和,這個(gè)數(shù)就稱為“完 數(shù)”。編寫一個(gè)程序,找出 1000 以內(nèi)的所有完數(shù),并輸出 其因子( 6 是一個(gè)"完數(shù)" ,它的因子是 1, 2, 3)。【編程點(diǎn)撥】個(gè)數(shù)字,如: 2 + 22 + 222 + 2222 + 22222此時(shí) a=2 , n=5 ),a 和 n 均由鍵盤輸入。選作題 3】“穿越沙漠”問題。用一輛吉普車穿越 1000 公里的沙 漠。吉普車的總裝油量為 500
28、加侖,耗油量為 1 加侖/ 公里。 由于沙漠中沒有油庫(kù), 必須先用車在沙漠中建立臨時(shí)加油站,該吉普車要以最少的油耗穿越沙漠,應(yīng)在什么地方建立臨時(shí)油庫(kù),以及在什么地方安放多少油最好?六、思考題1、什么時(shí)候使用 for 語(yǔ)句比較方便?2、break 和循環(huán)條件有什么聯(lián)系和區(qū)別, 什么時(shí)候使用 break ?3、造成“死循環(huán)“的主要原因可能會(huì)有哪些?4、談?wù)勀銓?duì)設(shè)計(jì)循環(huán)體中的“遞推型變量”的“循環(huán)不變式”的 體會(huì)?第 5 章 實(shí)驗(yàn)四 數(shù)組與字符串一、實(shí)驗(yàn)?zāi)康?、掌握一維和二維數(shù)組的定義、賦值及輸入輸出方法,數(shù)組的 初始化方法,及數(shù)組的應(yīng)用技巧;2、熟練掌握使用字符數(shù)組處理字符串的方法,及有關(guān)字符串的
29、 標(biāo)準(zhǔn)庫(kù)函數(shù)的功能和使用;3、熟悉并掌握與數(shù)組有關(guān)的算法(如,排序算法) ;4、進(jìn)一步學(xué)習(xí)和掌握循環(huán)結(jié)構(gòu)的使用;5、進(jìn)一步學(xué)習(xí)和掌握程序測(cè)試和調(diào)試的方法。二、實(shí)驗(yàn)性質(zhì) 驗(yàn)證性 三、實(shí)驗(yàn)要求1、認(rèn)真閱讀本次實(shí)驗(yàn)的目的,了解本次實(shí)驗(yàn)要求掌握的內(nèi)容;2、在上機(jī)前需要預(yù)習(xí),將相關(guān)內(nèi)容寫在實(shí)驗(yàn)報(bào)告中;3、在實(shí)驗(yàn)時(shí),將實(shí)驗(yàn)要求的基本題根據(jù)預(yù)習(xí)時(shí)寫在實(shí)驗(yàn)報(bào)告中的程序清單輸入VC環(huán)境,進(jìn)行編譯、連接、運(yùn)行、測(cè)試、調(diào)試和修改,并對(duì)相應(yīng)內(nèi)容做好記錄;4、記錄程序的最終運(yùn)行結(jié)果;5、在實(shí)驗(yàn)時(shí),將實(shí)驗(yàn)內(nèi)容中的基本題(程序改錯(cuò)和編程題)在預(yù)習(xí)過程中編寫出正確的代碼,并在VC環(huán)境中運(yùn)行,且爭(zhēng)取 完成選作題。四、預(yù)習(xí)要求1
30、、一維和二維數(shù)組的定義、 賦值(包括初始化) 及輸入輸出方法;2、用字符數(shù)組處理字符串的方法,二維字符數(shù)組的定義和使用;3、有關(guān)字符串的標(biāo)準(zhǔn)庫(kù)函數(shù)的功能和使用;4、與數(shù)組有關(guān)的一些簡(jiǎn)單算法(如,排序算法) ;5、對(duì)實(shí)驗(yàn)內(nèi)容中的每個(gè)題目,設(shè)計(jì)出“問題的求解算法及數(shù)據(jù)結(jié)構(gòu)”和“源程序清單” ,并構(gòu)造出相應(yīng)的“測(cè)試數(shù)據(jù)” ;6、在實(shí)驗(yàn)報(bào)告中撰寫相應(yīng)的內(nèi)容,為上機(jī)實(shí)驗(yàn)做好充分的準(zhǔn)備。五、實(shí)驗(yàn)內(nèi)容1程 序 改 錯(cuò)實(shí)驗(yàn)題 1】下面程序的功能,是從鍵盤輸入一個(gè)數(shù)組(數(shù)組的長(zhǎng)度 為 10 ),查找數(shù)組中正數(shù)的個(gè)數(shù)。源代碼如下,程序中存在 錯(cuò)誤,請(qǐng)將其改正寫在旁邊。#include <stdio.h>
31、;main()int a(10);int count,i;/* 定義數(shù)組 */ /* ifor(i=0;i<=10;i+) scanf("%d",ai);count=1; for(i=0;i<=10;i+) if(a(i)>0)循環(huán)變量 count 正數(shù)個(gè)數(shù) */* 循環(huán)輸入 */* 查找正數(shù) */ count+;printf(" 數(shù)組中正數(shù)有: %d 個(gè) ",count);(2)212編 程 題實(shí)驗(yàn)題 2】編寫一程序?qū)崿F(xiàn):從鍵盤輸入一個(gè)字符串,將其中的大 寫字母變成小寫字母,小寫字母變成大寫字母,非字母的字 符保持不變,輸出變換后字符
32、串。100 ); 使用 scanf 函數(shù)逐個(gè)輸入字符保存在字符數(shù)組中;(3) 使用 printf 函數(shù)逐個(gè)輸出字符數(shù)組中的字符 (1) 用。要求: (1) 用字符數(shù)組表示存儲(chǔ)字符串(字符串最大為實(shí)驗(yàn)題 3】編寫一程序?qū)崿F(xiàn):一班級(jí)有 30 名學(xué)生要求按他們姓名 的順序排列(按漢語(yǔ)拼音的字母順序從小到大) ,并按序輸出。數(shù)組長(zhǎng)度定義為 10 ; 輸出數(shù)組時(shí)每個(gè)元素占 8 個(gè)寬度,每行 5 個(gè)。實(shí)驗(yàn)題 4】編寫一程序?qū)崿F(xiàn):輸入一個(gè)數(shù)組,將最大的與第一個(gè)元 素交換,將最小的與最后一個(gè)元素交換, 輸出交換后的數(shù)組。要求: (1)(2)3選 作3 階魔方陣為:選作題 1】編寫一個(gè)程序?qū)崿F(xiàn)打印魔方陣。所謂魔
33、方陣是指:它的 每行每一列的和與對(duì)角線之和均相等。程序要求:輸入一個(gè) 自然數(shù)n輸出由1到n2的自然數(shù)構(gòu)成的魔方陣。 例如,一個(gè)魔方陣中各數(shù)排列規(guī)律為:編程點(diǎn)撥】將“ 1 ”放在第一行中間一列;從“2 ”開始直到 n*n 止各數(shù)依次按下列規(guī)則存放: 每一個(gè)數(shù)存放的行 比前一個(gè)數(shù)的行數(shù)減 1,列數(shù)加 1 ;如果上一數(shù)的行數(shù)為 1 ,則下一個(gè)數(shù)的行數(shù)應(yīng)為 n (指最下一行); 當(dāng)上一個(gè)數(shù)的列數(shù)為 n 時(shí),下一個(gè)數(shù)的列數(shù)應(yīng)為 1,行數(shù)減 1; 如果按上面的規(guī)則 確定的位置上已有數(shù), 或上一個(gè)數(shù)是第 1 行第 n 列 時(shí),則把下一個(gè)數(shù)放在上一個(gè)數(shù)的下面。選作題 2】求從一個(gè)字符串中刪除所有指定字符的其余
34、字符串。如字符串為“ abcaca ”,刪除字符“ a ”后,為“ bcc ”。編程點(diǎn)撥】 使用字符數(shù)組保存字符串,從字符串?dāng)?shù)組的第一個(gè)元素開始遍歷; 如果當(dāng)前的元素與需要?jiǎng)h除的元素相等,則刪除; 刪除是指將該元素前移到需要拷貝的位置。六、思考題不知道數(shù)1、數(shù)組在程序設(shè)計(jì)時(shí)有什么作用?如果程序在設(shè)計(jì)時(shí), 組中保存數(shù)據(jù)的個(gè)數(shù),應(yīng)該怎么辦?2、如何對(duì)一維數(shù)組和二維數(shù)組初始化?初始化過程要注意什么事 項(xiàng)?在處理一維數(shù)組和二維數(shù)組時(shí), 一般要用到什么結(jié)構(gòu)的程 序段?3、在訪問數(shù)組時(shí),你有一些什么好辦法來防止越界問題?4、二維數(shù)組在內(nèi)存中是如何存儲(chǔ)的, 二維數(shù)組中元素的下標(biāo)與其 在內(nèi)存中排列的位置有什么
35、關(guān)系?5、如何將一個(gè)元素插入數(shù)組中, 如何將一個(gè)元素從數(shù)組中刪除?63第 6 章 實(shí)驗(yàn)五 地址與指針一、實(shí)驗(yàn)?zāi)康?、掌握指針變量的定義,學(xué)會(huì)使用指針變量;2、在實(shí)際應(yīng)用中加深對(duì)指針、地址和變量關(guān)系的理解;3、掌握指針的一些基本應(yīng)用;理解指針的含義;4、能正確使用指針與數(shù)組、字符串的關(guān)聯(lián);掌握通過指針操作 數(shù)組元素和字符串的方法;進(jìn)一步加深對(duì)數(shù)組名的理解。5、通過實(shí)驗(yàn)進(jìn)一步理解指向指針的指針; 二、實(shí)驗(yàn)性質(zhì) 綜合性 三、實(shí)驗(yàn)要求1、2、3、4、認(rèn)真閱讀本次實(shí)驗(yàn)的目的,了解本次實(shí)驗(yàn)要求掌握的內(nèi)容; 在上機(jī)前需要預(yù)習(xí),將相關(guān)內(nèi)容寫在實(shí)驗(yàn)報(bào)告中; 在實(shí)驗(yàn)時(shí),將實(shí)驗(yàn)要求的基本題根據(jù)預(yù)習(xí)時(shí)寫在實(shí)驗(yàn)報(bào)告中
36、的程序清單輸入VC環(huán)境,進(jìn)行編譯、連接、運(yùn)行、測(cè)試、調(diào) 試和修改,并對(duì)相應(yīng)內(nèi)容做好記錄; 記錄程序的最終運(yùn)行結(jié)果;5、在實(shí)驗(yàn)時(shí),將實(shí)驗(yàn)內(nèi)容中的基本題(程序改錯(cuò)和編程題)在預(yù)習(xí)過程中編寫出正確的代碼, 并在VC環(huán)境中運(yùn)行,且爭(zhēng)取 完成選作題。四、預(yù)習(xí)要求1、指針變量的定義的語(yǔ)法,指針變量的語(yǔ)義和語(yǔ)用;2、指針、地址和變量之間的關(guān)系;3、有關(guān)指針的運(yùn)算符和表達(dá)式;4、指針與數(shù)組、字符串的關(guān)聯(lián);通過指針操作數(shù)組元素和字符串 的方法;5、對(duì)實(shí)驗(yàn)內(nèi)容中的每個(gè)題目,設(shè)計(jì)出“問題的求解算法及數(shù)據(jù)結(jié)構(gòu)”和“源程序清單” ,并構(gòu)造出相應(yīng)的“測(cè)試數(shù)據(jù)” ;6、在實(shí)驗(yàn)報(bào)告中撰寫相應(yīng)的內(nèi)容,為上機(jī)實(shí)驗(yàn)做好充分的準(zhǔn)備。
37、五、實(shí)驗(yàn)內(nèi)容1程 序 改 錯(cuò)實(shí)驗(yàn)題 1】下面程序的功能是希望通過指針變量 px 和 py 來輸出變 量 x 和 y 的值,調(diào)試下面的程序,分析程序運(yùn)行的結(jié)果,指 出錯(cuò)誤的原因,并改正。#include <stdio.h>main( )int x=10,y=5,*px,*py;px=py;px=x;py=y;printf("x=%d,y=%dn",px,py);2編 程 題【實(shí)驗(yàn)題2】有三個(gè)整數(shù)x,y,z,設(shè)置三個(gè)指針變量p1 , p2 , p3 , 分別指向x,y,z。然后通過指針變量使x,y,z三個(gè)變量交換 順序,即原來 x 的值給 y, 把 y 的值給 z,
38、 z 的值給 x。 x, y, z 的原值由鍵盤輸入,要求輸出 x, y, z 的原值和新值。實(shí)驗(yàn)題 3】使用指針的方法求 100 的素?cái)?shù) 要求: (1) 先在數(shù)組中保存 1 100 的所有整數(shù);(2) 使用指針的方式對(duì)數(shù)組中非素?cái)?shù)剔除。實(shí)驗(yàn)題 4】有一個(gè)整型二維數(shù)組,大小為 m*n ,找出最大值所在 的行和列,以及該最大值。此程序要求用一個(gè)函數(shù) max 實(shí) 現(xiàn)最大值的尋找,并在 max 函數(shù)中最好使用指針解決, m 和 n 為該函數(shù)的形參,數(shù)組元素的值在主函數(shù)中輸入。實(shí)驗(yàn)題 5】從鍵盤輸入兩個(gè)字符串,輸出第一個(gè)字符串在第二個(gè)字 符串中的位置(第一個(gè)字符串的首字母在第二個(gè)字符串中的 位置,如“
39、 abc ”在“ bbbacccabcddaw3 ”的位置為 7 ) 要求: (1) 使用指針的方法遍歷數(shù)組;假設(shè)字符串的長(zhǎng)度不超過 100 。(2)3選作題選作題1】使用指針的方式,從一個(gè)字符串中刪除所有指定字符, 輸出剩余的字符串。如字符串為“ abcaca ”,刪除字符“ a ” 后,為“ bcc ”。編程點(diǎn)撥】 注意指針的使用,參考實(shí)驗(yàn)四的編程方法。選作題 2】有 20個(gè)數(shù),編寫一程序,使其右循環(huán)移 m 個(gè)位置( m的值可以從鍵盤輸入) ,并輸出移到后的 20 個(gè)數(shù)?!揪幊厅c(diǎn)撥】 20 個(gè)數(shù)使用數(shù)組保存; 使用指針的方法遍歷數(shù)組。選作題 3】輸入三行字符,每行不超過 40 個(gè)字符,要求
40、統(tǒng)計(jì)出其中共有多少大寫字母、小寫字母、空格、標(biāo)點(diǎn)符號(hào)?!揪幊厅c(diǎn)撥】 對(duì)輸入的三行字符,使用一個(gè)二維字符型數(shù)組來保存; 使用指針的方法遍歷數(shù); 。 在統(tǒng)計(jì)不同類型字符總數(shù)時(shí),編程最好使用 switch 語(yǔ)句。六、思考題1、指針在程序設(shè)計(jì)中有什么作用?如何使一個(gè)指針指向一個(gè)變量?如何使一個(gè)指針指向一個(gè)數(shù)組?2、一維數(shù)組名和二維數(shù)組名有什么區(qū)別?3、能否用一個(gè)指針型變量來存放一個(gè)具體數(shù)(比如一個(gè)字符、一個(gè)整型數(shù)、一個(gè)單精度浮點(diǎn)數(shù))?為什么?4、在編寫程序時(shí),你有哪些預(yù)防“野指針”問題的方法 ?5、在用指針訪問數(shù)組時(shí), 你有哪些預(yù)防“訪問越界”問題的方法 ?第 7 章 實(shí)驗(yàn)六 使用函數(shù)實(shí)現(xiàn)模塊化設(shè)計(jì)思
41、想一、實(shí)驗(yàn)?zāi)康?、在函數(shù)的實(shí)際應(yīng)用中,加深對(duì)模塊化設(shè)計(jì)思想的理解;2、掌握函數(shù)的定義、聲明和調(diào)用的方法;3、掌握函數(shù)參數(shù)傳遞形式和返回值的概念;4、掌握模塊化編程方法中自定義函數(shù)和主調(diào)函數(shù)的模塊關(guān)系;5、掌握定義無參函數(shù)和有參函數(shù)的定義及調(diào)用方法,掌握定義 無返回值參函數(shù)和有返回值參函數(shù)的定義及調(diào)用方法;6、掌握函數(shù)調(diào)用時(shí)如何處理函數(shù)的返回值;7、掌握帶“參數(shù)的宏”與“函數(shù)”的差異;進(jìn)一步理解“文件 包含”命令的作用;8、掌握對(duì)一個(gè)函數(shù)功能正確性的測(cè)試方法(黑盒測(cè)試法) 。二、實(shí)驗(yàn)性質(zhì) 綜合性 三、實(shí)驗(yàn)要求1、2、3、4、認(rèn)真閱讀本次實(shí)驗(yàn)的目的,了解本次實(shí)驗(yàn)要求掌握的內(nèi)容; 在上機(jī)前需要預(yù)習(xí),
42、將相關(guān)內(nèi)容寫在實(shí)驗(yàn)報(bào)告中; 在實(shí)驗(yàn)時(shí),將實(shí)驗(yàn)要求的基本題根據(jù)預(yù)習(xí)時(shí)寫在實(shí)驗(yàn)報(bào)告中 的程序清單輸入VC環(huán)境,進(jìn)行編譯、連接、運(yùn)行、測(cè)試、調(diào) 試和修改,并對(duì)相應(yīng)內(nèi)容做好記錄; 記錄程序的最終運(yùn)行結(jié)果;5、在實(shí)驗(yàn)時(shí),將實(shí)驗(yàn)內(nèi)容中的基本題(程序改錯(cuò)和編程題)在預(yù)習(xí)過程中編寫出正確的代碼, 并在VC環(huán)境中運(yùn)行,且爭(zhēng)取 完成選作題。四、預(yù)習(xí)要求1、函數(shù)的定義、聲明和調(diào)用的方法;2、函數(shù)參數(shù)傳遞形式和返回值;指針、數(shù)組名作為參數(shù);3、預(yù)編譯命令中的“帶參數(shù)的宏”和“文件包含”命令;4、模塊化設(shè)計(jì)方法;5、找一些資料,了解“黑盒測(cè)試”的概念和相關(guān)方法;6、對(duì)實(shí)驗(yàn)內(nèi)容中的每個(gè)題目,設(shè)計(jì)出“問題的求解算法及數(shù)據(jù)結(jié)
43、 構(gòu)”和“源程序清單” ,并構(gòu)造出相應(yīng)的“測(cè)試數(shù)據(jù)” ;7、在實(shí)驗(yàn)報(bào)告中撰寫相應(yīng)的內(nèi)容,為上機(jī)實(shí)驗(yàn)做好充分的準(zhǔn)備。五、實(shí)驗(yàn)內(nèi)容1程 序 改 錯(cuò) 和 程 序 的 分 析實(shí)驗(yàn)題 1】調(diào)試下面的程序,記錄發(fā)生的出錯(cuò)信息,并指出錯(cuò)誤原 因且加以改正。#include "stdio.h"main( )int x,y;printf("%dn",sum(x+y);int sum(a,b);int a,b;return(a+b);實(shí)驗(yàn)題 2】下面的程序從鍵盤上輸入兩個(gè)數(shù),輸出兩個(gè)數(shù)的最大公 約數(shù)和最小公倍數(shù),源代碼如下,程序中存在錯(cuò)誤,請(qǐng)將其 改正寫在旁邊。#inclu
44、de "stdio.h"main()/* 定義變量, acd 保存最大公約數(shù) ,amd 保int x,y,acd,amd;存最小公倍數(shù) */printf(" 請(qǐng)輸入兩個(gè)數(shù): /n"); /* 提示輸入 */ scanf("%d,%d",&x,&y);if(x>y)/* 如果 x>y ,兩個(gè)值互換,保證第一個(gè)參數(shù)為小值 */ x=y;y=x; acd=acd(int m1,int m2);/* 調(diào)用函數(shù)求最大公約數(shù) */amd=(x*y)/acd; /* 求最小公倍數(shù) */ printf(" 最大公
45、約數(shù) =%d, 最小公倍數(shù) =%d",acd,amc);/*函數(shù)功能:使用輾轉(zhuǎn)相除法求兩個(gè)數(shù)的最大公約數(shù) 參數(shù) m1: 兩個(gè)數(shù)中較小者參數(shù) m2: 兩個(gè)數(shù)中較大者返回值:m1和m2的最大公約數(shù)*/int acd(int m1,int m2);/* 使用輾轉(zhuǎn)相除法求最大公約數(shù) * / m1=r; m2=m1; /* 返回最大公約數(shù) */int r;while (m1=0) r=m2%m1;return r;實(shí)驗(yàn)題 3】先讀懂程序,在預(yù)習(xí)中分析出該程序的運(yùn)行結(jié)果,并把 它寫到實(shí)驗(yàn)報(bào)告中的對(duì)應(yīng)地方,然后上機(jī)運(yùn)行此程序,看看 你在預(yù)習(xí)中得到的結(jié)果是否正確。FUE(K) K+3.14159PR
46、(a) printf( “ a=%dt ”, (int)(a) PRINT(a) PR(a) ; putchar(n')PRINT2(a,b)PR(a); PRINT(b)PRINT3(a,b,c) PR(a); PRINT2(b,c) MAX(a,b) (a<b? b:a)# define# define# define# define# define# definemain() int x=2, f, y=2;PRINT(x*FUE(4); for(f=0;f<=60;f+=20) PRINT2 ( f,5.12*f+45); x=1;PRINT3(MAX(x+,y),
47、x,y);PRINT3(MAX(x+,y),x,y);2編 程 題實(shí)驗(yàn)題 4】寫一函數(shù) digh(m,k) , 它將返回整數(shù) m 從右邊開始的 第 k 個(gè)數(shù)字,如 digh(8542,3)=5,digh(12,4)=0。在主函 main() 中完成輸入、對(duì)該函數(shù)的調(diào)用和輸出功能?!緦?shí)驗(yàn)題5】編寫一個(gè)函數(shù),計(jì)算一個(gè)整數(shù) m的n次幕,在主函數(shù)中輸入m和n,并在主函數(shù)中完成輸入、調(diào)用和輸出功能?!揪幊厅c(diǎn)撥】 注意該函數(shù)的結(jié)果值的“數(shù)據(jù)溢出”問題。實(shí)驗(yàn)題 6】若正整數(shù) A 的所有因子 (包括 1 但不包括自身,下同 ) 之和為B,而B的因子之和為A,則稱A和B為一對(duì)親密數(shù)。 例如, 6 的因子之和為
48、1+2+3=6 ,因此 6 與 6 為一對(duì)親密 數(shù)( 即 6 自身構(gòu)成一對(duì)親密數(shù) ) ;又如, 220 的因子之和為 l+2+4+5+10+11+20+22+44+55+110=284,而284的因子之和為 1+2+4+71+142=220 ,因此, 220 與 284 為一對(duì)親密數(shù)。編寫程序,求 500 以內(nèi)的所有親密數(shù)對(duì)。要求:(1) 編制 facsum(n) 函數(shù),返回 n 的所有因子 (包括 1 但 不包括自身 ) 之和;(2) 在 main 函數(shù)中調(diào)用 facsum() ,尋找并輸出 500 以內(nèi) 的所有親密數(shù)對(duì);(3) 輸出要有文字說明。并且小數(shù)在前、大數(shù)在后,去掉重 復(fù)的數(shù)對(duì);(
49、4) 采用程序改錯(cuò)題的的編碼風(fēng)格對(duì)源代碼做注釋。3選 作 題選作題 1】定義一個(gè)宏 MAX(x,y,z) 從三個(gè)數(shù) x,y,z 中找出最大數(shù), 并在主函數(shù)中完成對(duì)三個(gè)數(shù)的輸入、宏的使用和輸出功能。在主函數(shù)中完成下面功能: 輸入評(píng)委數(shù) n 和歌手?jǐn)?shù) m ; 對(duì)每個(gè)歌手輸入 n 個(gè)評(píng)委的分?jǐn)?shù);調(diào)用上面的函數(shù); 輸出全部歌手的最終分?jǐn)?shù);對(duì) m 個(gè)歌手的分?jǐn)?shù)采用一個(gè)二維數(shù)組來存放?!具x作題2】某歌手大賽,共m個(gè)歌手,有n個(gè)評(píng)委給歌手打分,分 數(shù)采用百分制,去掉一個(gè)最高分,去掉一個(gè)最低分,然后取 平均分,得到歌手的成績(jī)。 n 個(gè)分?jǐn)?shù)由鍵盤輸入,編寫程序 計(jì)算某歌手的成績(jī)。(假設(shè)m < 50, n
50、< 10) 要求: (1) 設(shè)計(jì)一個(gè)函數(shù)計(jì)算一個(gè)歌手的成績(jī);(3)(2)六、思考題1、函數(shù)調(diào)用時(shí),參數(shù)是如何傳遞的?2、如果在函數(shù)中有多條 return 語(yǔ)句,計(jì)算機(jī)在執(zhí)行程序時(shí)會(huì)如 何處理?如果想返回多個(gè)值,應(yīng)該怎么辦 ?3、在指針和數(shù)組名做參數(shù)時(shí),為了避免“訪問越界”問題,你有 哪些有效的方法?4、為什么函數(shù)在使用(調(diào)用)前,必須先定義或先說明?5、函數(shù)的原型說明的作用是什么?第 8 章 實(shí)驗(yàn)七 函數(shù)的嵌套與遞歸一、實(shí)驗(yàn)?zāi)康?、進(jìn)一步理解函數(shù)的定義、聲明和調(diào)用的方法;2、進(jìn)一步理解函數(shù)參數(shù)傳遞形式;3、進(jìn)一步理解指針和數(shù)組作為函數(shù)參數(shù)的使用方法;4、掌握函數(shù)的嵌套調(diào)用和函數(shù)的遞歸調(diào)用
51、;5、掌握函數(shù)的嵌套調(diào)用和遞歸函數(shù)編寫的規(guī)律;6、掌握變量的存儲(chǔ)類別的使用,學(xué)會(huì)全局變量和局部變量、動(dòng)態(tài)變量和靜態(tài)變量的概念和使用方法;7、在應(yīng)用中進(jìn)一步加深對(duì)變量的生命周期和作用域的理解;8、進(jìn)一步掌握對(duì)一個(gè)函數(shù)功能正確性的測(cè)試方法 (黑盒測(cè)試法)。二、實(shí)驗(yàn)性質(zhì) 綜合性 三、實(shí)驗(yàn)要求1、認(rèn)真閱讀本次實(shí)驗(yàn)的目的,了解本次實(shí)驗(yàn)要求掌握的內(nèi)容;2、在上機(jī)前需要預(yù)習(xí),將相關(guān)內(nèi)容寫在實(shí)驗(yàn)報(bào)告中;3、在實(shí)驗(yàn)時(shí),將實(shí)驗(yàn)要求的基本題根據(jù)預(yù)習(xí)時(shí)寫在實(shí)驗(yàn)報(bào)告中 的程序清單輸入VC環(huán)境,進(jìn)行編譯、連接、運(yùn)行、測(cè)試、調(diào) 試和修改,并對(duì)相應(yīng)內(nèi)容做好記錄;4、記錄程序的最終運(yùn)行結(jié)果;5、在實(shí)驗(yàn)時(shí),將實(shí)驗(yàn)內(nèi)容中的基本題(
52、程序改錯(cuò)和編程題)在預(yù)習(xí)過程中編寫出正確的代碼, 并在VC環(huán)境中運(yùn)行,且爭(zhēng)取 完成選作題。四、預(yù)習(xí)要求1、掌握函數(shù)的嵌套調(diào)用和函數(shù)的遞歸調(diào)用;2、指針和數(shù)組作為函數(shù)參數(shù)的使用方法;3、變量的存儲(chǔ)類別的使用,全局變量和局部變量、動(dòng)態(tài)變量和靜 態(tài)變量的概念和使用方法;4、變量的生命周期和作用域的概念及應(yīng)用;5、找一些資料,了解“黑盒測(cè)試”的概念和相關(guān)方法;6、對(duì)實(shí)驗(yàn)內(nèi)容中的每個(gè)題目,設(shè)計(jì)出“問題的求解算法及數(shù)據(jù)結(jié) 構(gòu)”和“源程序清單” ,并構(gòu)造出相應(yīng)的“測(cè)試數(shù)據(jù)” ;7、在實(shí)驗(yàn)報(bào)告中撰寫相應(yīng)的內(nèi)容,為上機(jī)實(shí)驗(yàn)做好充分的準(zhǔn)備。五、實(shí)驗(yàn)內(nèi)容1程 序 改 錯(cuò) 和 程 序 的 分 析【實(shí)驗(yàn)題1】下面程序想
53、使指針變量pt1指向a和b中的大者,pt2 指向小者, 源代碼如下, 程序中存在錯(cuò)誤, 請(qǐng)將其改正寫在旁邊。#include <stdio.h>s *p1,int *p2)int *p;p1=p2;p2=p;p=p1;main()int a,b;scanf("%d,%d",&a,&b);pt1=&a;pt2=&b;if(&a<&b)s);printf("%d,%dn",*pt1,*pt2);實(shí)驗(yàn)題 2】先讀懂下面的程序,在預(yù)習(xí)中分析指出程序中所出現(xiàn)的全部變量的存儲(chǔ)類別和作用域,分析程序的運(yùn)
54、行結(jié)果,并把 這些分析結(jié)果寫到實(shí)驗(yàn)報(bào)告中的對(duì)應(yīng)地方,然后上機(jī)運(yùn)行此 程序,看看你在預(yù)習(xí)中得到的結(jié)果是否正確。#i nclude <stdio.h>int n=1;void fun c()static int a=2;int b=5;a+=2;b+=5;n+=12;prin tf("a=%d,b=%d, n二 dn",a,b, n);void mai n()int a=0,b= -10;prin tf("a=%d,b=%d, n二 %dn",a,b, n);func();prin tf("a=%d,b=%d, n二 %dn"
55、,a,b, n);func();2. 編程題【實(shí)驗(yàn)題3】編寫一程序計(jì)算并輸出:m!(m n)! n!要求:(1)編制一個(gè)遞歸函數(shù)Pq(n),返回n!值;(2)在main函數(shù)中,從鍵盤輸入m與n,調(diào)用函數(shù)pq計(jì)算;(3) 在main函數(shù)中,輸入m與n之前要有提示,并檢查輸入 數(shù)據(jù)的合理性(m > n > O),對(duì)于不合理的輸入,應(yīng)輸出出 錯(cuò)信息,不再進(jìn)行計(jì)算。【實(shí)驗(yàn)題4】寫一遞歸函數(shù),輸出。將讀入的整數(shù)按位分開后以相反的順序【實(shí)驗(yàn)題5】寫一遞歸函數(shù),CmnmCm-1 n-1 +Cm-1 n當(dāng)n=0 或m=n當(dāng)n=1當(dāng) m>n>13.選【選作題1】編寫一程序,從鍵盤輸入X ,20項(xiàng)的和)。已知:求s(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 世界精神衛(wèi)生日活動(dòng)方案
- 世紀(jì)大學(xué)活動(dòng)方案
- 業(yè)主關(guān)愛活動(dòng)方案
- 業(yè)主活動(dòng)策劃方案
- 大眾冰雪季活動(dòng)方案
- 大隊(duì)干部捐款活動(dòng)方案
- 外貿(mào)年會(huì)活動(dòng)方案
- 大班團(tuán)建活動(dòng)方案
- 大同市公司拜年活動(dòng)方案
- 大學(xué)小學(xué)活動(dòng)方案
- 2025年云南南方地勘工程有限公司招聘筆試參考題庫(kù)含答案解析
- 浙江省2024-2025學(xué)年高二下學(xué)期數(shù)學(xué)學(xué)考模擬考(三)(含答案)
- 杭州市富陽(yáng)區(qū)衛(wèi)健系統(tǒng)事業(yè)單位招聘筆試真題2024
- 2023-2024學(xué)年貴州省黔南州都勻市統(tǒng)編版三年級(jí)下冊(cè)期末考試語(yǔ)文試卷
- 2025鋼管租賃合同樣本
- 2024年福建省廈門市思明區(qū)初中畢業(yè)班適應(yīng)性練習(xí)(二)地理試卷
- 電大:理論聯(lián)系實(shí)際談一談如何維護(hù)政治安全?參考答案
- 醫(yī)學(xué)多學(xué)科診療制度
- 游泳救生員勞務(wù)合同協(xié)議
- 國(guó)家開放大學(xué)2025春《公共部門人力資源管理》形考任務(wù)1-4參考答案
- 2025年行政執(zhí)法人員執(zhí)法證考試必考多選題庫(kù)及答案(共250題)
評(píng)論
0/150
提交評(píng)論