版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C語言實驗報告專 業(yè) 年 級 學 號 學生姓名 指導老師 華中師范大學信息管理系編I實習目的和意義C語言程序設計實驗的目的是培養(yǎng)學生具有初步的C語言程序設計、編程、調試和排除C語言程序語法、邏輯錯誤的能力。通過實驗使學生進一步熟悉并掌握C語言程序的調試運行環(huán)境、程序設計過程、程序的基本結構以及程序設計的基本方法。通過實驗,使學生將程序設計的理論知識與實踐相結合,為學生 學習其他計算機編程語言打下基礎。在每一次的實驗過程中,學生要認真復習基本概念,獨立編寫程序,并上機調試運行,培養(yǎng)自己發(fā)現(xiàn) 程序中的錯誤、改正錯誤以使程序能正確運行的能力。經(jīng)驗豐富的人,當編譯時出現(xiàn)“出錯信息”時,能 很快地判斷出
2、錯誤所在,并改正之。而缺乏經(jīng)驗的人即使在系統(tǒng)給出明確出錯提示信息下也往往找不出錯 誤而求救于別人。對于學生來說,不僅要了解和熟悉有關理論和方法,還要求自己動手實現(xiàn),要求會編寫 程序并上機調試通過。 因此調試程序本身是程序設計課程的一個重要內容和基本要求,應給予充分的重視。調試程序的經(jīng)驗固然可以借鑒他人的現(xiàn)成經(jīng)驗,但更重要的是通過自己的直接實踐來積累,而且有些經(jīng)驗 是只能“意會”難以“言傳”。調試程序的能力,是學完 C語言程序設計之后,每個學生應當掌握的一項基本功。因此,在實習 時千萬不要在程序通過后就認為完成任務了,而應當在已通過的程序基礎上作一些改動(例如修改一些參 數(shù)、增加程序一些功能、改
3、變輸入數(shù)據(jù)的方法等,甚至于“自設障礙”,即把正確的程序改為有錯的,如用scanf函數(shù)輸入變量時,漏寫“ &”符號,使數(shù)組下標越界,使整數(shù)溢出等),觀察和分析所出現(xiàn)的情況,并認真、及時總結。這樣的學習是靈活主動的學習而不是呆板被動的學習,才會有真正的收獲。II實驗要求1 每次實驗中有若干習題,每個學生至少應該完成其中的三道習題。2 上機之前應作好充分的準備工作,預先編好程序,經(jīng)過人工檢查無誤后,才能上機,以提高上機 效率,嚴禁一邊上機一邊編寫。3 獨立上機輸入和調試自己所編的程序,切忌抄襲、拷貝他人程序。4.上機結束后,應整理出實驗報告。書寫實驗報告時,重點放在調試過程和小結部分,總結岀
4、本次 實驗中的得與失,以達到鞏固課堂學習、提高動手能力之目的。III實驗內容實驗一 VC+6.0開發(fā)平臺環(huán)境及應用【實驗目的】1 熟悉VC+6.0的運行環(huán)境。2 .了解在VC+6.0上如何編輯、編譯、連接和運行一個C程序。3 通過運行簡單的C程序,初步了解C源程序的特點,初步掌握查錯和排錯的技能【上機實習指導】1 通過閱讀上機操作指南,在VC中練習輸入、編譯、運行一個C語言程序的全過程。以下程序是計算函數(shù) y=3x2+2x-4(假設x=2)。# in eludeStdio.h ”void mai n()int x=2,y;y=3*x*x+2*x-4;printf(“ny=%d ”,y);程序運
5、行正確后,可以嘗試改變x的值和輸出格式“ c”、U'、”6'、”X'等,觀察運行結果的變化。2分析下面的程序輸出的結果。# include <stdio.h>int main( )char c='1'int i=-1;long n=2147483647;float f=-0.12345;putchar(c);putchar('');printf("%3c;%dn",c,c); printf("%d%d;%3d%3d;%un",i,i,i,i,i);printf("%-11ld;
6、%9dn",n,n);printf("%lx;%012on",n,n);printf("%.2f;%10.4fn",f,f);printf("%e;%11.2en",f,f);printf("%s;%.3sn","student","student");return 0;【自編程序上機】1編程實現(xiàn)在屏幕輸出下面圖形2編程實現(xiàn):從鍵盤上輸入半徑,輸出園的周長及面積?!緦嶒瀳蟾妗烤?、體實 驗 內 容實習時間:實習地點:實習機號:51程 序 調 試 過 程實習小結實驗二
7、 簡單程序設計【實驗目的】1 進一步熟悉 VC+6.0 的運行環(huán)境。 2掌握三種標準類型和部分運算符的使用。 3熟練掌握格式輸入與格式輸出函數(shù)的使用?!旧蠙C實習指導】1基本數(shù)據(jù)類型表示范圍練習 假設有如下程序:# include <stdio.h>void main ( )char ch1, ch2, ch;unsigned char c;int a;ch1 = 80;ch2 = 60;ch = ch1 + ch2;c = ch1 + ch2;a = ch1 + ch2;printf ( “ch1 + ch2 = %dn ”, ch1 + ch2);printf( “ch = %d
8、n ”, ch);printf( “c = %dn ”,c);printf( “a = %dn ”,a);問題 1 :運行該程序,寫出輸出結果。并說明為什么存在輸出結果的差異?問題 2 :如果要求四行輸出的結果均為 140,在不改變變量的數(shù)據(jù)類型的基礎上,則應修改程序中的 哪條語句?怎樣修改?問題 3 :編一程序,要求兩個負整數(shù)相加,輸出的結果為一正整數(shù)?!咀跃幊绦蛏蠙C】1 鍵盤輸入與屏幕輸出練習用下面的scanf函數(shù)輸入數(shù)據(jù),使a = 3, b = 7, x = 8.5, y = 71.82, cl = 'c2 = a,問在鍵盤上如何輸入? 要求把下列程序補充完整。#include
9、<stdio.h>void main ( )int a, b;float x, y; char c1, c2;scanf (“a = %d b = %d ”, &a, &b);scanf( “x = %f y = %e ”,&x, &y);scanf( “c1 = %c c2 = %c ”, &c1, &c2); 提示:在“格式控制”字符串中除了格式說明以外還有其它字符,在輸入數(shù)據(jù)時應輸入與這些字符相 同的字符。為了驗證輸入格式的正確與否,應在程序中補充調用標準的輸出函數(shù) printf 。2 按輸出結果要求編寫程序若 a = 3, b
10、 = 4, c = 5, x = 1.2, y = 2.4, z = -3.6, u = 51274, n = 128765. cl =a',c2 = b',想得到以下輸出格式和結果,請寫出完整的程序。要求輸出結果如下:(* 表示空格 )a = 3*b=4*c=5x = 1.20000, y = 2.400000, z = -3.600000x+y = *3.60*y+z = -1.20*z+x = -2.40u = 51274*n = *128765c1 = a'*or*97(ASCII)c2 = b'*or*98(ASCII) 提示:根據(jù)題目中變量的值定義合
11、適的變量類型。正確定義和使用printf 函數(shù)中的格式控制字符串。3 計算定期存款本利之和設銀行定期存款的年利率 rate為2.25%,并已知存款期為 n年,存款本金為capital元,試編程計算n年后本利之和deposit。要求定期存款的年利率 rate、存款期間n和存款本金capital均由鍵盤 輸入。4. 求一個四整數(shù)的各位數(shù)字之和,并在屏幕上輸出結果。5 編程實現(xiàn):用1分、5分、10分、25分的硬幣湊成任何給定的錢數(shù)x,要求硬幣的數(shù)目最少?!緦嶒瀳蟾妗繉嵙晻r間:實習地點:實習機號:具/、體實 驗 內 容程 序 調 試 過 程實習小結實驗三 選擇結構程序設計【實驗目的】1熟練掌握上機運行
12、一個C 程序的操作過程。2學會正確使用邏輯運算符和邏輯表達式,進一步掌握各種表達式的使用。 3利用 if 語句實現(xiàn)選擇結構程序設計。4利用 switch 語句實現(xiàn)多分支選擇結構程序設計。5進一步練習調試與修改程序?!旧蠙C實習指導】1 輸入并運行習題3.10。即:# include “ stdio.h ”void main( ) int i,j,n,m;i=8;j=10;m=+i;n=j+;printf( “ %d,%d,%d,%”d ,i,j,m,n);分別作以下改變并運行: 將程序第四行改為:m=i+;n=+j; 程序改為:# include“ stdio.h ”void main( ) i
13、nt i,j;i=8;j=10;printf( “%d,%d”,i+,j+); 在的基礎上,將語句改為:printf( “ %d,%d”,i+,j+); 再將語句改為:printf( “ %d,%d,%d,%”d ,i,j,i+,j+); 程序改為:# include “ stdio.h ”void main( ) int i,j,n= 0 ,m=0;i=8;j=10;m+=i+;n-=- -j;printf( “%d,%d,%d,%”d ,i,j,m,n);2 計算下列分段函數(shù)值:x<0Mx 3x1 5x+5,0<x<10 且及 x=3x 1T其它具體要求如下: 用if語句
14、實現(xiàn)分支。自變量x與函數(shù)值均用單精度類型。 自變量x用scanf函數(shù)輸入,且輸入前要有提示。結果的輸出采用以下形式:x=具體值,f(x)=具體值 分別輸入 x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0,運行該程序。3 先靜態(tài)分析以下程序的運行結果,然后上機驗證。# in elude Stdio.h ”void mai n() int a=3,b=4,c=5,x,y,z;x=c>b>a;y=!a+b<c&&(b!=c); z=c/b+(float)a/b&&( float)(a/c); printf(n x=%d,y=%d,z=
15、%d ” ,x,y,z);x=a|b_;y=a-3&&b;printf(n %d,%d,%d,%d,%d,%d” ,a,b,c,x,y,z);上機運行的結果與你分析的結果是否一致?不一致的原因何在?請在程序的最后一個花括號前加上語句:getchar();后重新運行程序,注意事項加上這一語句后,程序的運行進程有何不同?getchar()是一個函數(shù)調用,其作用是等待接收你從鍵盤輸入的一個字符,在你未按鍵之前一直處于等待狀態(tài)。在這里可以起到暫停的作用。當你看清結果并按任意鍵后,立即退出程序 并切換回TC主屏幕。用這一方法可以減少屏幕切換操作。4 下列C程序的功能是:計算并輸出分段函數(shù)
16、值。5x<0且耳工一2i r.Jl/(x + 5>,0<x<55<x<106其它其中x由鍵盤輸入。請通過調試修改程序中的錯誤(包括語法錯誤和邏輯錯誤)。#i nclude“ stdio.h ”mai n()float x , y;printf(“ in put x= ” );scanf("%f", &x);if(-5.0<=x<0.0)&&(x!=-2.0)y=1.0/(x+2.0);else if(x<5.O)y=l.0/(x+5.0);else if(x<l0.0)y=l.0/(x+l2
17、.0);else y=0.0;printf("x=%eny=%en", x, y);具體要求如下:不允許改變計算的精度。 不允許改變原來程序的結構,只能在語句或表達式內部進行修改。 調試正確后,用 x=-7.0,-2.0,-1.0,0.0,2.0,5.0,8.0,10.0,11.0 運行這個程序。 畫出與調試正確后的程序對應的流程圖。【自編程序上機】1. 數(shù)據(jù)整除判斷編程實現(xiàn):輸入一個整數(shù),判斷它能否被3,5,7整除,并輸出以下信息之一:能同時被3,5,7整除;能被其中兩數(shù)(要指出哪兩個)整除;能被其中一個數(shù)(要指出哪一個)整除; 不能被 3, 5, 7 任一個整除。提示:
18、判斷能否被某一個數(shù)整除應采用求余運算。 在一個程序中利用選擇結構把四種可能的信息全部表示出來。2 .用scanf函數(shù)輸入一個百分制成績(整型量),要求輸出成績等級 A, B, C, D, E。其中90-100分 為 A, 80-89 分為 B, 70-79 分為 C, 60-69 分為 D, 60 分以下為 E。具體要求如下 : 用 if 語句實現(xiàn)分支。 在輸入百分制成績前要有提示。 在輸入百分制成績后,要判斷該成績的合理性,對于不合理的成績(即大于100分或小于0分)應輸出出錯信息。 在輸出結果中應包括百分制成績與成績等級,并要有文字說明。 分別輸入百分制成績:-90, 100, 90, 8
19、5, 70, 60, 45, 101,運行該程序。3. 將第 2題中的 (1) 改為“用 switch 語句實現(xiàn)”,其余不變,重復實現(xiàn)第 2題中的各功能。4. 編程找出 5 個整數(shù)中的最大數(shù)和最小數(shù),并輸出找到的最大數(shù)和最小數(shù)。5. 假設一種自動售貨機可以為顧客提供3 種價格檔次的不同飲料。投入 2 元錢,可選擇康師傅礦泉 水、怡寶礦泉水和農(nóng)夫山泉之一;投入 3 元錢,可選擇可樂、雪碧和果汁之一;投入 5 元錢,可選擇奶茶、 咖啡和酸奶之一。編寫程序,模擬用戶向自動售貨機投入錢幣選擇一種飲料的過程。提示:使用scanf()函數(shù)模擬投入錢幣,使用 getchar()函數(shù)模擬選擇飲料(輸入 A、B
20、、C代表選擇的 飲料)。.【實驗報告】具/、體實 驗 內 容實習時間:實習地點:實習機號:程 序 調 試 過 程實習小結實驗四循環(huán)結構程序設計【實驗目的】1 進一步練習選擇結構的程序設計。2 練習并掌握實現(xiàn)循環(huán)結構的三種方法。3 練習并掌握選擇結構與循環(huán)結構的嵌套。4 掌握多重循環(huán)的應用。5 學會單步跟蹤的操作方法?!旧蠙C實習指導】1 根據(jù)字母判斷是星期幾平時我們看到 M時就想到星期一,看到 W時就想到星期三,請用 C語言程序編寫當輸入星期幾的第一 個字母就判斷出是星期幾,如果第一個字母一樣,則用第二個字母來判斷。要求輸入為字母Y'時,結束判斷。提示:可利用 C語言的switch語句實
21、現(xiàn)多路分支:根據(jù)輸入的的第一個字母、第二個字母,判斷是 星期幾,如果第一個字母一樣, 如星期二和星期四(Tuesday和Thursday ),則用if語句判斷第二個字母, 這樣就可以解決問題了。另外為了實現(xiàn)可以多次進行判斷,此題還需用循環(huán)進行控制。要求:當輸入字母“ Y”時,則結束程序。當輸入的不是星期幾的第一個字母時,則可給出出錯信息:printf(“DATAERROR”);當輸入兩個星期幾相同的字母時,則可給出提示信息:printf( “PLEASENPUTSECOND LETTER” )?!咀跃幊绦蛏蠙C】1 .如果一個數(shù)恰好等于它的所有因子 (包括1但不包括自身)之和, 例如:6的因子為
22、1 , 2, 3,且1+ 2+ 3 = 6,因此6是一個“完數(shù)”。計算并輸出1000以內的所有“完數(shù)”之和。具體要求如下: 所有循環(huán)均用for循環(huán)。 輸出要有文字說明,并同時輸出各“完數(shù)”。輸出形式為:完數(shù)1+完數(shù)2+=和值2 打印如下圖所示的數(shù)字金字塔 (注意觀察數(shù)字分布的規(guī)律)。1121123211Z343£112345432112345543Z 11 2345675543 2 1i z 345&75T654 S 2 112 3 45&1e937S5 4 3 2 13 百錢買百雞問題。已知公雞每只5元,母雞每只3元,小雞1兀3只,要求100兀錢正好頭100只雞,則
23、應買公雞、母雞的小雞各多少只?4 某班有學生n人,從終端讀入n及n個人學生的成績,試編程實現(xiàn)以下功能: 打印出前3個最好成績及取得每個最好成績的人數(shù); 若90分以上計為優(yōu),75- 89分計為“良”,60- 74分計為“中”,60分以下計為“不及格”,試統(tǒng)計各檔成績所占百分率。5逆序輸出整數(shù)的每一位數(shù)。輸入每一個正整數(shù) x,例如13579,要求輸出9 7 5 3 1 ,每一位后有空格。如輸入:13579,輸出: 9 7 5 3 1【實驗報告】實習時間:實習地點:實習機號:具/、體 實 驗 內 容程 序 調 試 過 程實習小結實驗五 數(shù)組程序設計( 1)【實驗目的】1掌握一維數(shù)組與二維數(shù)組的定義及
24、其元素的引用方法。 2深刻體會數(shù)組與循環(huán)的關系。3掌握利用一維數(shù)組和二維數(shù)組實現(xiàn)一些常用算法的編程技巧。 4進一步掌握動態(tài)調試的基本技能?!旧蠙C實習指導】1用移位法將數(shù)組 a 中的最后一個數(shù)移到最前面,其余數(shù)依次往后移動一個位置。# include“stdio.h ”void main() int i,t,a10=0,1,2,3,4,5,6,7,8,9;t=a9; for(i=1;i<10;i+) ai=ai-1;a0=t;printf(“n ”);for(i=0;i<10;i+) printf(“%d ”,ai); 請按以下步驟實習和思考: 分析程序及其特性。 上機運行程序,查看
25、運行結果是否正確? 用動態(tài)跟蹤查找錯誤原因,即按如下操作:首先將光標移至t=a9的語句行上,按 F4,再用Ctrl-F7 操作將a數(shù)組的內容顯示出來,然后將光 標移至ai=ai-1 的語句行上,不斷按F4,觀察a數(shù)組值的變化情況,以此分析并找出錯誤原因。 改正錯誤后重新運行程序,直到結果正確為此。 如果要用三次循環(huán)移位來實現(xiàn)將最后三個數(shù)移到前面,其余數(shù)依次往后移三個位置,則程序應該如 何修改?2 輸入 n 個學生的單科成績,然后從高到低的順序排序后輸出。 以下是用選擇法實現(xiàn)的排序。# include“stdio.h ”void main( )int i,j,t,n,an;printf(“n n
26、=?);scanf( “%d”,&n);printf("input n numbers :n");for (i=0;i<n;i+)scanf("%d",&ai); for(i=0;i<n-1;i+) for(j=i+1;j<n;j+)if(ai<aj)t=ai;ai=aj;aj=t;printf("the sorted numbers:n");for(i=0;i<n;i+)printf("%4d",ai);分析程序及其特性。 上機編譯程序,程序是否有語法錯誤?應如何修改
27、?(數(shù)組a的長度可比n大些),改正錯誤后重新編譯和運行程序,直到結果正確為此。 你對選擇排序算法的實現(xiàn)過程是否清楚了?若不清楚,請用動態(tài)跟蹤的方法觀察其實現(xiàn)過程,操作如下:首先將光標移至if語句行上,按F4,接著輸入數(shù)據(jù),當綠條第停留在if語句行時,用 Ctrl-F7操作將a數(shù)組的內容顯示出來,不斷按 F4,觀察a數(shù)組值的變化情況,以此分析和領會算法的實現(xiàn)過程。 輸入冒泡排序程序,用動態(tài)跟蹤觀察其實現(xiàn)過程。 如果要用三次循環(huán)移位來實現(xiàn)將最后三個數(shù)移到前面,其余數(shù)依次往后移三個位置,則程序應該如 何修改?【自編程序上機】1 .將矩陣A 45中值(行中所有數(shù)的和)為最大的那一行元素與首行元素對換。
28、具體要求如下: 矩陣A的數(shù)值從鍵盤輸入。 以矩陣的形式輸出對換后的矩陣。2. 數(shù)字檢查通過鍵盤輸入n (*50)個4位數(shù)(輸入-1時結束),統(tǒng)計這n個4位數(shù)中各位上的數(shù) 字均是偶數(shù)的數(shù)的個數(shù),并把這些 4位數(shù)按從大到小的順序進行輸出。提示:定義兩個一維數(shù)組 a和b,數(shù)組a用于存放輸入4位數(shù),數(shù)組b用于存放滿足條件的 4位數(shù); 判斷 4 位數(shù)的各個數(shù)是否為偶數(shù)的方法可將該數(shù)的每一位數(shù)拆分出來,然后進行判斷即可。3. 輸入 10 個整數(shù),將這 10 個整數(shù)按升序排列輸出,并且奇數(shù)在前,偶數(shù)在后。比如,如果輸入的10個數(shù)是 1 2 3 4 5 6 7 8 9 10 ,則輸出 1 3 5 7 9 2
29、4 6 8 10。提示: 將輸入的 10 個整數(shù),按其就行分別放在數(shù)組 a 的左部和右部。其具體方法就是設置兩個整型 變量odd和even,分別表示奇數(shù)和偶數(shù)存放在數(shù)組 a中元素的下標,odd初始值為0,每存放一個奇數(shù) odd 就加 1 , even 初始值為 9,每存放一個偶數(shù) even 就減 1,然后通過選擇排序的方法分別對數(shù)組a 左部的奇數(shù)和右部的偶數(shù)進行排序,最后依次進行排序結果的輸出?!緦嶒瀳蟾妗繉嵙晻r間:實習地點:實習機號:具/、體實 驗 內容程 序 調 試 過 程實習小結實驗六數(shù)組程序設計(2)【實驗目的】1 進一步掌握一維數(shù)組與二維數(shù)組的定義及其元素的引用方法。2 掌握利用一維
30、數(shù)組和二維數(shù)組實現(xiàn)一些常用算法的編程技巧?!咀跃幊绦蛏蠙C】1 成績排名假設有五位同學四門功課的成績如下,現(xiàn)要求得每位同學的總分,并按照總分從高到低的順序進行排 序,輸出其名次,如果總分相同,則按語文和數(shù)學分數(shù)之和高者排前,低者排后,但名次一樣。姓名語文數(shù)學英語綜合張大明120130110280李小紅110120105290王志強108128126278汪曉成112135122286李丹100120108276提示:用二維數(shù)組 score存放每個學生各門課程的成績,二維數(shù)組定義時最后多定義一列,用于存放 每個學生的總分;用一個字符串數(shù)組name存放學生的姓名。2 17個人圍坐一圈,順序編號為 1
31、,2 , 3,,17?,F(xiàn)在從第一個人開始數(shù)起,每數(shù)到 7時,這個人 就從圈里出來,再從下一個數(shù)重新開始數(shù)1,2,7,數(shù)到第7的這個人也從圈里出來,直到全部 17個人從圈里出來為此。例如,前面站出來的4個人是7,14,4和12。編程輸出從圈里出來的人的順序。3 .通過鍵盤輸入n (n<50)個三位數(shù)(輸入-1時結束),統(tǒng)計這n個三位數(shù)中各位上的數(shù)字均為奇數(shù) 的數(shù)的個數(shù),并把滿足條件的三位數(shù)按從小到大的順序進行輸出。提示:定義兩個一維數(shù)組 a和b,數(shù)組a用來存放鍵盤輸入的 3位數(shù),數(shù)組b用來存放滿足條件的 3 位數(shù);判斷3位數(shù)中各位上的書是否都為奇數(shù)的方法可以先將該數(shù)的每一位數(shù)拆分出來,然后
32、進行判斷即 可?!緦嶒瀳蟾妗繉嵙晻r間:實習地點:實習機號:具/、體實 驗 內容程 序 調 試 過 程實習小結實驗七 模塊化程序設計 (1)【實驗目的】1掌握 C 語言中定義函數(shù)的方法及其調用方法。2掌握函數(shù)實參與形參的對應關系以及“值傳遞”與“地址傳遞”的方式, 熟練掌握模塊間數(shù)據(jù)傳遞的方式。3掌握全局變量和局部變量、 動態(tài)變量與靜態(tài)變量的概念和使用方法 , 深刻體會全局變量和局部變量、 動態(tài)變量與靜態(tài)變量的概念和使用方法,【上機實習指導】1先靜態(tài)閱讀以下程序,然后上機運行程序,查看運行結果是否與你閱讀的結果一致?不一致的原 因何在?# include “stdio.h ”int a=3,b=
33、5,c=2;int f(int a,int b) a+;b-;c=a+b; return(a+b+c);void main( ) int a=4,k; k=f(a+2,b+1); printf( “n %d,%d,%d,%d ”,a,b,c,k); getchar();2靜態(tài)分析以下程序的執(zhí)行結果,然后上機運行程序,將分析結果與運行結果加以對比,從中領會 靜態(tài)局部變量的含義及用法。# include “stdio.h ”int f(int x) static int f=0,y=0;if(f=0) y+=2*x;else if(f=1)y+=3*x;else y+=4*x;f+;return
34、y;void main( ) printf( “n %d ”,f(2);printf( “n %d ”,f(2);printf( “n %d ”,f(2);getchar();自編程序上機】1 求兩整數(shù)的最公約數(shù)和最小公倍數(shù)。用一函數(shù)求最大公約數(shù),用另一函數(shù)調用此函數(shù)求出最大公 約數(shù),并用求出的最大公約數(shù)求最小公倍數(shù)。具體要求如下: 用全局變量。將最大公約數(shù)與最小公倍數(shù)設為全局變量,在主函數(shù)中輸出它們的值。 不用全局變量。最大公約數(shù)和最小公倍數(shù)由被調模塊返回值。2 計算并輸出TT11 (mn)J nl具體要求如下: 編制一個函數(shù)pq(n),返回n!值。 編制主函數(shù),由鍵盤輸入m與n(mnO),
35、調用(1)中的函數(shù)計算下列算式值。ml (m n)J nJ 在主函數(shù)中,輸入 m與n之前要有提示,并檢查輸入數(shù)據(jù)的合理性,對于不合理的輸入,應輸出出錯信息,不再進行計算。在函數(shù)pq(n)中也要檢查n的合理性,當nvO時輸出出錯信息,不再進行計算。 分別輸入(m,n)=(3,-1), (0, 0), (8,3) , (3,8) , (8,8)運行該程序。 畫出模塊pq()的流程圖。3編寫程序,要求找出滿足下列條件的3位數(shù):它是完全平方數(shù),又有兩位數(shù)字相同。女如: 144、676。要求:設計一函數(shù)判斷一個三位數(shù)是否為完全平方數(shù),設計另一函數(shù)判斷一個三位數(shù)中是否有兩位數(shù) 字相同,再在主函數(shù)中調用這兩
36、個函數(shù),找出所有的滿足這兩個條件的三位數(shù)?!緦嶒瀳蟾妗繉嵙晻r間:實習地點:實習機號:具/、體實 驗 內 容程 序 調 試 過 程實習小結實驗八 模塊化程序設計 (2)【實驗目的】1進一步熟悉函數(shù)之間的數(shù)據(jù)傳遞方式,熟練掌握函數(shù)的嵌套調用與遞歸調用的方法。 2掌握通過數(shù)組進行數(shù)據(jù)傳遞的方法?!旧蠙C實習指導】1. 對以下程序進行單步運行 , 并從中了解數(shù)組作為函數(shù)的參數(shù)是如何進行數(shù)據(jù)傳遞?# include "stdio.h"void change(int a,int n) int i,j,t;for(i=0,j=n-1;i<j;i+,j-)t=ai;ai=aj;aj=t
37、;void main( ) int i,b10;for(i=0;i<10;i+)scanf("%d",&bi);printf("The array b is:");for(i=0;i<10;i+)printf("%3d",bi);printf("n");change(b,10);printf("The array b is:");for(i=0;i<10;i+)printf("%3d",bi);printf("n");getcha
38、r();getchar();【自編程序上機】1編寫函數(shù),將 n 個整數(shù)的數(shù)列進行重新排放,重新排放后的結果為:前段都是奇數(shù),后段都是偶 數(shù),并編寫主函數(shù)完成:輸入10個整數(shù);調用此函數(shù)進行重排;輸出重排后的結果。2輸入 10個學生 4門課的成績,分別用函數(shù)求: 每個學生的平均成績; 每門課的及格率; 最高分所對應的學生和課程?!緦嶒瀳蟾妗繉嵙晻r間:實習地點:實習機號:具/、體實 驗 內 容程 序 調 試 過 程實習小結實驗九 指針程序設計【實驗目的】1掌握變量的指針及其基本用法。2 掌握一維數(shù)組的指針及其基本用法。3 掌握指針變量作為函數(shù)的參數(shù)時,參數(shù)的傳遞過程及其用法?!旧蠙C實習指導】1 對
39、以下程序進行單步運行,并從中了解變量的指針和指針變量的概念。# include“stdio.h ”void main() int a=5,b=5,*p;p=&a;*p=8;p=&b; b=10;按以下步驟操作: 輸入程序后,連續(xù)按三次F8,使綠條停留在 P=&a誦句行上。 用Ctrl 一 F7操作分別將a, b, &a, &b, p及*p顯示出來。 查看觀察窗口中的內容,可發(fā)現(xiàn)此時 a、b己有確定的地址(&a和&b)和確定的值,而 p還沒荷確定 的值(此時語句p=&a還未執(zhí)行),即p還沒有明確的指向,因而它所指向的內存單元 (*p
40、)中的內容也是不 確定的。 按F8往下執(zhí)行一步后再查看觀察窗中的內容,可發(fā)現(xiàn)p已有確定的值,它與 &a的值一致,說明p中存放了變量a的地址,也就是說 p是指向變量a的指針變量。同時可發(fā)現(xiàn), *p的內容與a的內容一致, 即p所指向的內存單元中的內容就是 a的內容;從而可以理解*p等效于a,表示同一內存單元。 按F8往下執(zhí)行一步后再查看觀察窗中的內容,可發(fā)現(xiàn) *p和a的內容都已發(fā)生變化,從而可理解通過改變指針變量p所指向的內存單元中的內容可以間接地改變a中的內容。 再按F8往下執(zhí)行一步,可發(fā)現(xiàn)p的值己發(fā)生變化,它與 &b的值一致,說明p已經(jīng)是指向變量b的指針變量,它不再是指向a,*
41、p的內容也已變?yōu)閎的內容,從而可理解指針變量的指向是隨時可以改變的。 再按 F8 往下執(zhí)行一步,可發(fā)現(xiàn),b 的值和 *p 的值都已發(fā)生變化,即改變 b 的內容就等于改變指針變量 p 所指向的內存單元中的內容。2 .單步運行以下程序,觀察 &a0,&ai)和P的變化,然后回答以下問題 : 程序的功能是什么 ? 在開始進入循環(huán)體之前,p 指向誰 ? 循環(huán)每增加一次,p的值(地址)增加多少?它指向誰? 退出循環(huán)后, p 指向誰 ? 你是否初步掌握了通過指針變搔引用數(shù)組元素的方法?# include “stdio.h ”void main() int i,*p,s=0,a5=5,6,7
42、,8,9;p=a;for(i=0;i<5;i+,p+)s+=*p;printf( “n s=%d ”,s);3. 先分析以下程序的運行結果,然后上機驗證,并通過此例掌握通過指針變量引用數(shù)組元素的各種 方法。# include“stdio.h ”void main( ) int i,s1=0, s2=0, s3=0, s4=0,*p,a5=1,2,3,4,5;p=a;for(i=0;i<5;i+) s1+=pi;for(i=0;i<5;i+) s2+=*(p+i);for(p=a;p<a+5;p+) s3+=*p;p=a;for(i=0;i<5;i+) s4+=*p
43、+;printf(“n s1=%d, s2=%d, s3=%d, s4=%d ”s1,s2,s3,s4);【自編程序上機】1. 編寫函數(shù)實現(xiàn)計算一元二次方程的兩個實根,然后編寫主函數(shù)調用此函數(shù)。 要求:在同一個函數(shù)內求出方程的兩個實根,此函數(shù)不準使用全局變量進行數(shù)據(jù)傳遞,也不能使用 return 語句,只能通過指針進行數(shù)據(jù)傳遞。2 編寫函數(shù),將n個數(shù)按原來的順序的逆序排列(要求用指針實現(xiàn)),然后編寫主函數(shù)完成:輸入10個數(shù);調用此函數(shù)進行重排;輸出重排后的結果。3 編寫程序,從鍵盤輸入 3個整數(shù),通過函數(shù)調用的方式,將輸入的3個整數(shù)求出被10除后的余數(shù)之和以及余數(shù)的乘積,并通過形參傳送回主調函
44、數(shù),進行輸出。【實驗報告】具/、體實 驗 內 容實習時間:實習地點:實習機號:程 序 調 試 過 程實習小結實驗十 結構體程序設計【實驗目的】1掌握結構體類型變量與結構體數(shù)組的定義和使用。2 學會使用結構體指針變量和結構體指針數(shù)組。3 掌握鏈表的概念,初步學會對鏈表進行操作。【上機實習指導】1 輸入出10個學生的學號、姓名和成績,求出其中的高分者和低分者。# include “stdio.h ”struct student int num;char name20;int score;void main( ) int i;struct student st,stmax,stmin; stmax.
45、score=0; stmin.score=100; printf( “n input data ”);for(i=0;i<10;i+) scanf( “%d%s%”d,&st.num,,&st.score); if(st.score>stmax.score) stmax=st;if(st.score<stmin.score) stmin=st;printf( “n hight:%5d%15s%5d ”,stmax.num,,stmax.score);printf( “n low:%5d%15s%5d ”,stmin.num,s
46、,stmin.score); 分析程序,上機運行程序。 程序中,哪些是對結構體變量的成員引用,哪些是整體引用? 對于此例來說,用結構體變量作為數(shù)據(jù)結構有何優(yōu)越性?【自編程序上機】1 有一學生情況如下表所示。編制一個 C程序,用冒泡法對該學生情況表按成績( grade )從低到高 進行排序。學號(num)性別Sea)年101ZhamgM1995.6102F1892,4103ZhaoM1985.7104LiM20擁.310(5GaoM19106LinM18時.51Q7MbF179S, 71OSZhenM21W. 110$XuM19110MaoF1894. 9具體要求如下: 結構體
47、類型為struct 結構體名 int num;char n ame8;char sex;int age;int grade; 在程序中,首先輸出排序前的學生情況,然后輸出排序后的結果,其格式如上表所示(表的框線不要)。2定義一個學生成績結構體類型,包含“學號”、“姓名”、“性別”、“年齡”、“英語”、“數(shù)學”、“物理”、“總分”、“名次”等信息。編寫 5個函數(shù)分別實現(xiàn):使用結構體數(shù)組,輸入10名學生的上述信息;計算每一個學生的總分、平均分;計算每一門課程的平均分;查找成績有不及格的學生信息;輸出全班學生的學號、總分及名次。3鏈表基本操作。具體要求如下: 初始時鏈表為空,即鏈表的頭指針為空。 對
48、于上表所示的學生情況表,依次將每個學生的情況作為一個結點插入到單鏈表的鏈頭(即當前插入的結點將成為鏈表的第一個結點)。 所有學生情況都插入到鏈表中后,從鏈頭開始,依次輸出鏈表中的各結點值(即每個學生的情況)。輸出格式如同上表。【實驗報告】具/、體實 驗 內 容實習時間:實習地點:實習機號:程 序 調 試 過 程實習小結實驗十一 文件程序設計【實驗目的】 1掌握文件與文件指針的概念。 2學會使用文件打開、文件關閉、讀與寫文件等基本的文件操作函數(shù)。3 運用文件操作函數(shù)進行程序設計?!旧蠙C實習指導】1 以文本方式建立初始數(shù)據(jù)文件,請在TC的編輯窗中輸入10個學生的學號、姓名及考試成績,形式如下:10
49、01LiLi 801002HuWei 901003LiMing 75數(shù)據(jù)輸入完后,請選用 File 中的菜單中項 Write to 將數(shù)據(jù)存入文件 file1.dat 中。記住,你建立 的 file1.dat 是一個不等長記錄的文本文件,即每個學生的數(shù)據(jù)是不等長的,數(shù)據(jù)間以空格作為分隔?,F(xiàn)在,你再瘵編輯窗口中的數(shù)據(jù)修改成等長記錄,學號、姓名和成績的長度分別按4、 10、 3 給定,形式如下:1001LiLi 801002HuWei 901003LiMing 75III然后將數(shù)據(jù)存入文件 file2.dat 中,該文件就是一個等長記錄的文本文件,每個學生的數(shù)據(jù)占18 個字符(包括換行符) 。1.
50、 讀入 file1.dat 中的數(shù)據(jù),找出最高分和最低度分的學生。# include "stdio.h"typedef struct student int num;char name20;int score;STU;void main()int i;STU st,stmax,stmin;FILE *fp;stmax.score=0; stmin.score=100;fp=fopen("file1.dat","r");if(!fp) return;for(i=0;i<10;i+) fscanf(fp,"%d%s%d&q
51、uot;,&st.num,,&st.score);if(st.score>stmax.score) stmax=st;if(st.score<stmin.score) stmin=st; fclose(fp); printf("n hight:%5d%15s%5d",stmax.num,,stmax.score); printf("n low:%5d%15s%5d",stmin.num,,stmin.score); getchar(); 請按以下步驟實習和思考: 分析程序,上機運行程序并分析運行結果。 對比實驗六中的相應例子,找出差別。 如果事先不知道學生個數(shù),則程序應該如何修改?請將以上程序中的循環(huán)語句for(i=0;i<10;i+)改為( while(!feof(fp)再運行程序,看結果是否正確?3讀入 file2.dat中的數(shù)據(jù),然后按成績從高到低度的順序進行排序,并將排序結果分別以文本方式存入到文件 fi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年滬教版八年級物理下冊月考試卷含答案
- 2025年粵教滬科版選擇性必修3歷史下冊階段測試試卷含答案
- 2025年粵教新版八年級地理下冊階段測試試卷
- 2025年蘇教版七年級生物下冊月考試卷
- 遵義職業(yè)技術學院《中國古代文學與中學語文教育》2023-2024學年第一學期期末試卷
- 二零二五版木工雕刻藝術創(chuàng)作授權合同4篇
- 2025年度農(nóng)用拖拉機租賃與農(nóng)產(chǎn)品溯源合同4篇
- 二零二五年度金融行業(yè)派遣勞務安全保障合同4篇
- 2025年度屋頂綠化租賃與節(jié)能減排合同4篇
- 二零二五年倉儲設備采購與運輸合同3篇
- 2024年英語高考全國各地完形填空試題及解析
- 智能養(yǎng)老院視頻監(jiān)控技術方案
- 你比我猜題庫課件
- 體育概論(第二版)課件第三章體育目的
- 無人駕駛航空器安全操作理論復習測試附答案
- 建筑工地春節(jié)留守人員安全技術交底
- 默納克-NICE1000技術交流-V1.0
- 蝴蝶蘭的簡介
- 老年人心理健康量表(含評分)
- 《小兒靜脈輸液速度》課件
- 營銷人員薪酬標準及績效考核辦法
評論
0/150
提交評論