C語(yǔ)言課程設(shè)計(jì)實(shí)踐報(bào)告_第1頁(yè)
C語(yǔ)言課程設(shè)計(jì)實(shí)踐報(bào)告_第2頁(yè)
C語(yǔ)言課程設(shè)計(jì)實(shí)踐報(bào)告_第3頁(yè)
C語(yǔ)言課程設(shè)計(jì)實(shí)踐報(bào)告_第4頁(yè)
C語(yǔ)言課程設(shè)計(jì)實(shí)踐報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、北京理工大學(xué)珠海學(xué)院C語(yǔ)言程序設(shè)計(jì)實(shí)踐報(bào)告20142015學(xué)年第1學(xué)期 學(xué) 院: 計(jì)算機(jī)學(xué)院 專業(yè)班級(jí):計(jì)算機(jī)科學(xué)與技術(shù)(1)班 學(xué) 號(hào): 120201011036 學(xué)生姓名: 駱慶東 指導(dǎo)老師: 代俊雅 成 績(jī): 時(shí) 間: 2014.12.26 2014年12月26日13 / 15文檔可自由編輯打印目 錄一、實(shí)踐目的與內(nèi)容2二、任務(wù)內(nèi)容分析4三、程序設(shè)計(jì)5四、運(yùn)行分析8六、實(shí)踐總結(jié)13一、實(shí)踐目的與內(nèi)容實(shí)踐目的C 語(yǔ)言程序設(shè)計(jì)實(shí)踐02180044是面向計(jì)算機(jī)學(xué)院各專業(yè)開(kāi)設(shè)的專業(yè)基礎(chǔ)課,主要目的在于培養(yǎng)學(xué)生的分析問(wèn)題能力,以及如何利用計(jì)算機(jī)解決問(wèn)題的能力。通過(guò)將課本上的理論知識(shí)和應(yīng)用案例進(jìn)行結(jié)

2、合,提高學(xué)生程序設(shè)計(jì)、程序調(diào)試及解決問(wèn)題能力。為后續(xù)課程:面向?qū)ο蟪绦蛟O(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)、軟件工程等專業(yè)教育課程奠定基礎(chǔ)。 本課程分為理論和實(shí)踐兩部分:理論課程重點(diǎn)學(xué)習(xí)結(jié)構(gòu)體和指針的定義和引用等,及其作為函數(shù)參數(shù)和返回的用法;實(shí)踐部分通過(guò)布置具有一定難度、一定編程量的應(yīng)用案例,使學(xué)生通過(guò)編程練習(xí)深入理解C 語(yǔ)言的程序設(shè)計(jì)思想,掌握C 語(yǔ)言程序設(shè)計(jì)方法和編程技術(shù),培養(yǎng)學(xué)生的利用計(jì)算機(jī)求解實(shí)際問(wèn)題的能力,強(qiáng)化學(xué)生的計(jì)算思維和計(jì)算機(jī)思維。實(shí)踐內(nèi)容實(shí)踐練習(xí)1:循環(huán)結(jié)構(gòu)編程(猜數(shù)游戲)1. 編程先由計(jì)算機(jī)“想”一個(gè)1100 之間的數(shù)請(qǐng)人猜,如果人猜對(duì)了,則結(jié)束游戲,并在屏幕上輸出人猜了多少次才猜對(duì)此數(shù),以此

3、來(lái)反映猜數(shù)者“猜”的水平;否則計(jì)算機(jī)給出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜10 次,如果猜了10 次仍未猜中的話,結(jié)束游戲。 2. 編程先由計(jì)算機(jī)“想”一個(gè)1100 之間的數(shù)請(qǐng)人猜,如果人猜對(duì)了,在屏幕上輸出人猜了多少次才猜對(duì)此數(shù),以此來(lái)反映猜數(shù)者“猜”的水平,則結(jié)束游戲;否則計(jì)算機(jī)給出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜10 次,如果猜了10 次仍未猜中的話,則停止本次猜數(shù),然后繼續(xù)猜下一個(gè)數(shù)。每次運(yùn)行程序可以反復(fù)猜多個(gè)數(shù),直到操作者想停止時(shí)才結(jié)束。實(shí)踐練習(xí)2:數(shù)組與結(jié)構(gòu)體編程(成績(jī)統(tǒng)計(jì))1.學(xué)生成績(jī)統(tǒng)計(jì)(一維數(shù)組)從鍵盤(pán)輸入一個(gè)班(全班最多不超過(guò)30人)學(xué)生某門(mén)課的成

4、績(jī),當(dāng)輸入成績(jī)?yōu)樨?fù)值時(shí),輸入結(jié)束,分別實(shí)現(xiàn)下列功能:(1)統(tǒng)計(jì)不及格人數(shù)并打印不及格學(xué)生名單;(2)統(tǒng)計(jì)成績(jī)?cè)谌嗥骄旨捌骄种系膶W(xué)生人數(shù),并打印這些學(xué)生的名單;(3)以直方圖方式統(tǒng)計(jì)各分?jǐn)?shù)段的學(xué)生人數(shù)及所占的百分比。形式如下:分段 人數(shù) 圖形<60 3(10%) *6069 8() *7079 7() *8089 8() *>=90 4() *2. 成績(jī)排名次(結(jié)構(gòu)體數(shù)組)某班期末考試科目為數(shù)學(xué)(MT)、英語(yǔ)(EN)和物理(PH),有最多不超過(guò)30 人參加考試,學(xué)號(hào)可以用輸入的序號(hào)代替。考試后要求:(1)計(jì)算每個(gè)學(xué)生的總分和平均分;(2)按總分成績(jī)由高到低排出成績(jī)的名次;(3

5、)打印出名次表,表格內(nèi)包括學(xué)生編號(hào)、各科分?jǐn)?shù)、總分和平均分;(4)任意輸入一個(gè)學(xué)號(hào),能夠查找出該學(xué)生在班級(jí)中的排名及其考試分?jǐn)?shù)。實(shí)踐練習(xí)3:函數(shù)編程(函數(shù)調(diào)用與參數(shù)傳遞)將實(shí)踐練習(xí)2 中的第2題利用函數(shù)的思想進(jìn)行修改,并將學(xué)生的成績(jī)等信息輸出到文件中。要求函數(shù)參數(shù)中包含結(jié)構(gòu)體數(shù)組或指針。輸出到ASCII 文件的信息包括每個(gè)學(xué)生的學(xué)號(hào)、三門(mén)成績(jī)和名次,每人一行。實(shí)踐練習(xí)4:數(shù)組/結(jié)構(gòu)體/函數(shù)/文件編程(成績(jī)統(tǒng)計(jì)與分析)學(xué)生信息統(tǒng)計(jì)和查詢每位學(xué)生信息包括:學(xué)號(hào)、姓名、性別、學(xué)院、10 門(mén)成績(jī)。共有不超過(guò)100 位同學(xué)的信息存放在ASCII 文件StudentInfo.txt 中;不超過(guò)10 個(gè)學(xué)院

6、的信息存放在CodeInfo.txt 中,性別代碼存放在SexInfo.txt 中,均為代碼和其對(duì)應(yīng)的名稱。要求: 1. 定義至少包含以上學(xué)生信息和學(xué)院代碼的結(jié)構(gòu)體類(lèi)型和指針(或數(shù)組)變量。 2. 函數(shù)實(shí)現(xiàn)從文件中輸入信息到定義的數(shù)據(jù)中。 3. 函數(shù)實(shí)現(xiàn)排序(1):學(xué)生平均成績(jī)的降序排序,并輸出所有信息到顯示屏。 4. 函數(shù)實(shí)現(xiàn)排序(2):學(xué)生姓名的升序排序,并輸出所有信息到顯示器。 5. 函數(shù)實(shí)現(xiàn)查詢(1):根據(jù)學(xué)號(hào)查詢學(xué)生信息,并輸出該生信息,并輸出所有信息到顯示器。 6. 函數(shù)實(shí)現(xiàn)查詢(2):根據(jù)姓名查詢學(xué)生信息,并輸出該姓名的學(xué)生信息,并輸出所有信息到顯示器。 7. 函數(shù)實(shí)現(xiàn)查詢(3)

7、:根據(jù)學(xué)院代號(hào)列出該學(xué)院的所有學(xué)生信息,并輸出到顯示器。 8. 函數(shù)實(shí)現(xiàn)統(tǒng)計(jì):根據(jù)學(xué)生平均成績(jī)統(tǒng)計(jì)各分?jǐn)?shù)段的人數(shù)級(jí)所占的百分比,并以直方圖方式輸出,形式如下:分段人數(shù)圖形<60 3(10%)*6069 8() *7079 7() *8089 8() *>=90 4() * 進(jìn)入程序后,無(wú)條件執(zhí)行從指定文件名中讀入數(shù)據(jù);數(shù)據(jù)讀入后,以菜單的形式選擇后續(xù)的執(zhí)行: 1. 平均成績(jī)降序排序 2. 姓名升序排序 3. 學(xué)號(hào)查詢 4. 姓名查詢 5. 學(xué)院學(xué)生列表 6. 平均成績(jī)統(tǒng)計(jì) 7. 退出 其中的查詢模塊中,須為循環(huán)結(jié)構(gòu),用戶可以選擇繼續(xù)查詢,當(dāng)輸入的為0時(shí),結(jié)束當(dāng)前查詢,返回主菜單。提

8、高模塊*: 1. 函數(shù)執(zhí)行需有密碼(密碼在文件中不得以明文出現(xiàn)); 2. 密碼修改模塊二、任務(wù)內(nèi)容分析實(shí)踐練習(xí)1先編寫(xiě)第1 個(gè)程序,然后試著在第1 個(gè)程序的基礎(chǔ)上編寫(xiě)第2 個(gè)程序,程序1 編程先由計(jì)算機(jī)“想”一個(gè)1100 之間的數(shù)請(qǐng)人猜,如果人猜對(duì)了,則計(jì)算機(jī)給出提示“Right!”,否則提示“Wrong!”,并告訴人所猜的數(shù)是大還是小,然后結(jié)束游戲。要求每次運(yùn)行程序時(shí)機(jī)器所“想”的數(shù)不能都一樣。程序2 編程先由計(jì)算機(jī)“想”一個(gè)1100 之間的數(shù)請(qǐng)人猜,如果人猜對(duì)了,則結(jié)束游戲,并在屏幕上輸出人猜了多少次才猜對(duì)此數(shù),以此來(lái)反映猜數(shù)者“猜”的水平;否則計(jì)算機(jī)給出提示,告訴人所猜的數(shù)是太大還是太小

9、,直到人猜對(duì)為止。程序3 編程先由計(jì)算機(jī)“想”一個(gè)1100 之間的數(shù)請(qǐng)人猜,如果人猜對(duì)了,則結(jié)束游戲,并在屏幕上輸出人猜了多少次才猜對(duì)此數(shù),以此來(lái)反映猜數(shù)者“猜”的水平;否則計(jì)算機(jī)給出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜10 次,如果猜了10 次仍未猜中的話,結(jié)束游戲。程序4 編程先由計(jì)算機(jī)“想”一個(gè)1100 之間的數(shù)請(qǐng)人猜,如果人猜對(duì)了,在屏幕上輸出人猜了多少次才猜對(duì)此數(shù),以此來(lái)反映猜數(shù)者“猜”的水平,則結(jié)束游戲;否則計(jì)算機(jī)給出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜10 次,如果猜了10 次仍未猜中的話,則停止本次猜數(shù),然后繼續(xù)猜下一個(gè)數(shù)。每次運(yùn)行程序可以反復(fù)猜多個(gè)數(shù),直到

10、操作者想停止時(shí)才結(jié)束。 實(shí)踐練習(xí)2(1)使用一維數(shù)組來(lái)存放學(xué)號(hào),再用一維數(shù)組來(lái)記錄輸入成績(jī)的學(xué)生變量,計(jì)算總分、平均分,調(diào)用函數(shù)比較學(xué)生成績(jī),得出排名,再根據(jù)數(shù)組定義對(duì)應(yīng)存放各變量的位置,最后得到名次表和直方圖。(2)使用結(jié)構(gòu)體數(shù)組來(lái)實(shí)現(xiàn),該結(jié)構(gòu)體中包括學(xué)生學(xué)號(hào)和成績(jī),用二維數(shù)組存放每個(gè)學(xué)生各門(mén)課程的成績(jī),用一維數(shù)組存放每個(gè)學(xué)生的學(xué)號(hào),用一維數(shù)組存放每個(gè)學(xué)生的總分,用一維數(shù)組存放每個(gè)學(xué)生的平均分。 實(shí)踐練習(xí)3用函數(shù)編程實(shí)現(xiàn)計(jì)算每個(gè)學(xué)生的總分。用函數(shù)編程實(shí)現(xiàn)按總分由高到低對(duì)學(xué)生成績(jī)排序。實(shí)踐練習(xí)4題目要求完成一個(gè)學(xué)生信息統(tǒng)計(jì)和查詢系統(tǒng),要求能進(jìn)行對(duì)學(xué)生的信息統(tǒng)計(jì)和查詢,同時(shí)可

11、以對(duì)學(xué)生的信息進(jìn)行排序。系統(tǒng)的使用,有用戶的存在,即需要用戶登錄才能使用。 本課程實(shí)驗(yàn)環(huán)境由任課教師自行決定:VC+6.0、Visual Studio 2010 或以上版本(建議采用Visual Studio 2012)。編程語(yǔ)言為C。系統(tǒng)有以下幾個(gè)功能性要求:1. 學(xué)生的信息查詢:輸入學(xué)號(hào)/用戶名,查詢對(duì)應(yīng)學(xué)生的信息。2. 學(xué)生的信息排序:對(duì)學(xué)生的信息按指定的要求進(jìn)行排序。3. 學(xué)生的信息統(tǒng)計(jì):對(duì)學(xué)生的成績(jī)按平均分進(jìn)行統(tǒng)計(jì)。4. 用戶驗(yàn)證:用戶使用該系統(tǒng),首先進(jìn)行驗(yàn)證,驗(yàn)證成功,才能登入系統(tǒng)。三、程序設(shè)計(jì)實(shí)踐練習(xí)1主要代碼實(shí)現(xiàn):while(1) srand(time(NULL); k=ran

12、d()%100+1; for(Num=1;Num<11;Num+) printf("請(qǐng)輸入一個(gè)1100之間的數(shù):"); scanf("%d",&i); if(k=i) printf("Right!n"); printf("Num=%dn",Num); break; else printf("Wrong!n"); if(k>i) printf("Too smalln"); elseprintf("Too largen"); if(k=i)

13、 break;printf("是否繼續(xù)游戲?(1.Y 2.N)n");scanf("%d",&x);if(x=2)break;實(shí)踐練習(xí)2主要代碼實(shí)現(xiàn):for(i=0;i<N-1;i+)for(j=i+1;j<N;j+)if(stui.sum<stuj.sum)t=stui;stui=stuj;stuj=t;printf("按總成績(jī)高低排序n");printf("名次t學(xué)號(hào)t姓名t數(shù)學(xué)t英語(yǔ)t物理t總成績(jī)t平均分n");for(i=0;i<N;i+) printf("%dt%

14、dt%st%.1ft%.1ft%.1ft%.1ft%.1fn",i+1,stui.number,,stui.MT,stui.EN,stui.PH,stui.sum,stui.ave); printf("請(qǐng)輸入要查詢學(xué)生的學(xué)號(hào):");scanf("%d",&k);for(i=0;i<N;i+)if(stui.number=k)printf("名次t學(xué)號(hào)t姓名t數(shù)學(xué)t英語(yǔ)t物理t總成績(jī)t平均分n");printf("%dt%dt%st%.1ft%.1ft%.1ft%.1ft%.1fn&q

15、uot;,i+1,stui.number,,stui.MT,stui.EN,stui.PH,stui.sum,stui.ave);break;if(i=N-1)printf("輸入錯(cuò)誤!n");printf("請(qǐng)重新輸入要查詢學(xué)生的學(xué)號(hào):");scanf("%d",&k);i=0;實(shí)踐練習(xí)3主要代碼實(shí)現(xiàn):struct student stu30;do printf("請(qǐng)輸入學(xué)生的總?cè)藬?shù)(不超過(guò)30人):");scanf("%d",&N);while(N>3

16、0);for(i=0;i<N;i+)printf("請(qǐng)輸入第%d個(gè)學(xué)生的學(xué)號(hào):",i+1);scanf("%d",&stui.number);printf("請(qǐng)輸入學(xué)生的姓名:");scanf("%s",);printf("請(qǐng)輸入數(shù)學(xué)的成績(jī):");scanf("%f",&stui.MT);printf("請(qǐng)輸入英語(yǔ)的成績(jī):");scanf("%f",&stui.EN);printf(&qu

17、ot;請(qǐng)輸入物理的成績(jī):");scanf("%f",&stui.PH);stui.sum=stui.MT+stui.EN+stui.PH;stui.ave=stui.sum/3; Sort(stu,N);Query(stu,N);save(stu,N);實(shí)踐練習(xí)4程序一共有兩個(gè)界面,分別是用戶登錄界面、學(xué)生信息操作界面。用戶登錄界面:即用戶登錄,其中設(shè)置用戶第一次登錄時(shí)必須修改密碼。 代碼實(shí)現(xiàn):while(1) printf("ntttt學(xué)生信息查詢系統(tǒng)nn"); for(i=0;i<80;i+) printf("=&q

18、uot;); printf("ttt 歡迎進(jìn)入學(xué)生信息查詢系統(tǒng)n"); for(i=0;i<80;i+) printf("="); printf("tttt 用戶登錄 nn"); number=PWD(); /*驗(yàn)證登陸用戶*/Menu(number); /*調(diào)用用戶菜單函數(shù)*/ 學(xué)生信息操作界面:有平均成績(jī)降序排序、姓名升序排序、學(xué)號(hào)查詢、姓名查詢、學(xué)院學(xué)生列表、平均成績(jī)統(tǒng)計(jì)、修改用戶密碼七個(gè)選擇。代碼實(shí)現(xiàn):while(1) for(i=0;i<80;i+) printf("="); printf(&

19、quot;ntt1.平均成績(jī)降序排序 t2.姓名升序排序n"); printf("tt3.根據(jù)學(xué)號(hào)查詢 t4.根據(jù)姓名查詢n"); printf("tt5.根據(jù)學(xué)院查詢 t6.平均成績(jī)統(tǒng)計(jì)n"); printf("tt7.修改用戶密碼nn"); for(i=0;i<80;i+) printf("="); printf("請(qǐng)輸入您的選擇(選擇(0)退出):"); scanf("%d",&k); if(k=0)break; switch(k) case 1: sort(head);break; /*平均成績(jī)降序排序*/case 2: sort1(head);break; /*姓名升序排序*/case 3: search(head);break; /*根據(jù)學(xué)號(hào)查詢*/case 4: search1(head);break; /*根據(jù)姓名查詢*/case 5: search2(head);break; /*根據(jù)學(xué)院查詢*/case 6: print(head);break; /*平均成績(jī)統(tǒng)計(jì)*/case 7:

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論