C語(yǔ)言試驗(yàn)指導(dǎo)書(shū)新精編_第1頁(yè)
C語(yǔ)言試驗(yàn)指導(dǎo)書(shū)新精編_第2頁(yè)
C語(yǔ)言試驗(yàn)指導(dǎo)書(shū)新精編_第3頁(yè)
C語(yǔ)言試驗(yàn)指導(dǎo)書(shū)新精編_第4頁(yè)
C語(yǔ)言試驗(yàn)指導(dǎo)書(shū)新精編_第5頁(yè)
已閱讀5頁(yè),還剩21頁(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、C 語(yǔ) 言 程 序 設(shè) 計(jì)實(shí)驗(yàn)指導(dǎo)書(shū) 電氣與電子工程學(xué)院 重要說(shuō)明:上機(jī)實(shí)驗(yàn)?zāi)康暮鸵?一實(shí)驗(yàn)報(bào)告要求 每次實(shí)驗(yàn),提交一份實(shí)驗(yàn)報(bào)告。具體格式見(jiàn)“實(shí)驗(yàn)報(bào)告格式范文” 將代碼和運(yùn)行截圖粘貼到“ C改革實(shí)驗(yàn)指導(dǎo)書(shū) 24學(xué)時(shí)” word 的相應(yīng)位置。如 下圖, 程序運(yùn)行的截圖如下:二上機(jī)實(shí)驗(yàn)的目的上機(jī)實(shí)驗(yàn)的目的, 絕不僅僅是為了驗(yàn)證教材和講課的內(nèi)容, 或者驗(yàn)證自己所編程序正確 與否。學(xué)習(xí)程序語(yǔ)言,上機(jī)實(shí)驗(yàn)的目的如下:1 加深對(duì)講授內(nèi)容的理解,尤其是一些語(yǔ)法規(guī)定,光靠課堂講授,既枯燥無(wú)味又難以記 住,通過(guò)多次上機(jī),就能自然、熟練地掌握語(yǔ)法規(guī)定。2 了解和熟悉 C 語(yǔ)言程序開(kāi)發(fā)環(huán)境。 熟悉一兩種環(huán)境 (計(jì)

2、算機(jī)系統(tǒng)的軟件和硬件條件) , 再遇到其他的系統(tǒng)時(shí)便會(huì)觸類旁通,很快學(xué)會(huì)。3 學(xué)會(huì)上機(jī)調(diào)試程序,也就是善于發(fā)現(xiàn)程序中的錯(cuò)誤,并且能很快地排除這些錯(cuò)誤,使 程序能夠正確地運(yùn)行。 要真正掌握計(jì)算機(jī)應(yīng)用技術(shù), 就不僅應(yīng)當(dāng)了解和熟悉有關(guān)理論和方法, 而且要求自己動(dòng)手實(shí)踐能力強(qiáng)。4 在做實(shí)驗(yàn)時(shí)千萬(wàn)不要在程序通過(guò)后就認(rèn)為萬(wàn)事大吉,完成任務(wù)了,應(yīng)當(dāng)在通過(guò)的程序 上做一些調(diào)試和修改,看看會(huì)得到什么結(jié)果。多動(dòng)腦筋思考,將會(huì)對(duì)你有很大幫助。 三上機(jī)實(shí)驗(yàn)前的準(zhǔn)備工作1 了解所用的計(jì)算機(jī)系統(tǒng)的性能和使用方法;2 復(fù)習(xí)和掌握與本實(shí)驗(yàn)有關(guān)的教學(xué)內(nèi)容;3 準(zhǔn)備好上機(jī)所用的程序,切忌自己不思考、不編制程序或抄襲別人的程序;4

3、 準(zhǔn)備好調(diào)試和運(yùn)行時(shí)所需的數(shù)據(jù)。 四上機(jī)實(shí)驗(yàn)的步驟1 調(diào)出 C 語(yǔ)言編譯系統(tǒng),進(jìn)入 C 語(yǔ)言工作環(huán)境;2 輸入自己編制好的程序;3 檢查輸入是否有錯(cuò),及時(shí)更正;4 進(jìn)行編譯和連接;5 運(yùn)行程序,分析結(jié)果。重要說(shuō)明:上機(jī)實(shí)驗(yàn)?zāi)康暮鸵?0.實(shí)驗(yàn)一 C 語(yǔ)言上機(jī)基礎(chǔ) 4.實(shí)驗(yàn)二基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 7.實(shí)驗(yàn)三輸入、輸出函數(shù)的使用 9.實(shí)驗(yàn)四選擇結(jié)構(gòu)程序設(shè)計(jì) 1.1實(shí)驗(yàn)五循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 1.3實(shí)驗(yàn)六數(shù)組 1.6.實(shí)驗(yàn)七簡(jiǎn)單函數(shù) 1.8.實(shí)驗(yàn)八高級(jí)函數(shù) 1.9.實(shí)驗(yàn)九指針 2.0.實(shí)驗(yàn)十自定義數(shù)據(jù)、文件 2.2附 1: c 語(yǔ)言函數(shù)庫(kù) 2.4.實(shí)驗(yàn)一 C 語(yǔ)言上機(jī)基礎(chǔ) 特別聲明:為了教學(xué)的便

4、捷以及學(xué)生自學(xué)的方便,我們選擇了便于下載和安裝的 MicrosoftVisualC+6.0 軟件作為編譯環(huán)境。但在實(shí)際工作中使用的編譯環(huán)境應(yīng)該是 visualstudio 系列軟件(如 visualstudio2010) 。所以同學(xué)們課下必須自己百度 (visualstudio2010 使用手冊(cè) ) ,學(xué)習(xí) visualstudio 的基本用法 ! PS:輸入法必須切換成英文輸入法! 一實(shí)驗(yàn)?zāi)康? 熟悉 C 語(yǔ)言運(yùn)行環(huán)境 MicrosoftVisualC+6.0 中文版。2 掌握語(yǔ)言程序的書(shū)寫格式和語(yǔ)言程序的結(jié)構(gòu),初步了解C 源程序的特點(diǎn)。3 掌握 C語(yǔ)言上機(jī)步驟,了解如何編輯、編譯、調(diào)試和運(yùn)

5、行一個(gè)C 程序的方法。4 掌握 C 語(yǔ)言數(shù)據(jù)類型,熟悉如何定義一個(gè)整型、字符型和實(shí)型的變量,以及對(duì)他們賦 值的方法。二實(shí)驗(yàn)內(nèi)容 1C語(yǔ)言上機(jī)步驟開(kāi)機(jī),啟動(dòng) MicrosoftVisualC+6 。 建立工程文件:在“文件”菜單中選擇“新建”命令項(xiàng),在彈出的“新建”對(duì)話框的 “工程”選項(xiàng)卡中選擇“ Win32ConsoleApplication ”選項(xiàng),在“工程”框中輸入工程文件 名 sy1,在“ c: 位置”下拉框中輸入或選擇文件夾,單擊“確定”;在以下彈出的兩個(gè)對(duì)話 框中分別單擊命令按鈕“完成”和“確定”。建立 C+源文件:在“工程”菜單中選擇“添加到工程”“新建”命令項(xiàng),在彈出 的“新建”

6、對(duì)話框的“文件”選項(xiàng)卡中選擇“ C+SourceFile ”,在右邊的“文件”框中輸 入文件名 sy11 后單擊“確定”。輸入源程序:在彈出的文件編輯窗口中輸入下面的源程序: #includevoidmain()printf( Hello,World!n );printf( WelcometotheClanguageworld!n );printf( Everyonehasbeenwaitingfor.n );表示已通過(guò)編譯,生成了目標(biāo)程序 sy11.obj 。 調(diào)試:接下來(lái)進(jìn)行調(diào)試,操作如下圖所示。 完成調(diào)試后,生成可執(zhí)行程序文件 sy1.exe 。 運(yùn)行:最后用“編譯”菜單的“!執(zhí)行 sy

7、1.exe 行可執(zhí)行程序文件 sy .exe 。運(yùn)行結(jié)果如下:編譯:用“編譯”菜單的“編譯”命令項(xiàng)對(duì)源文件 sy11.cpp 進(jìn)行編譯,如果程序有 語(yǔ)法或語(yǔ)義錯(cuò)誤,在屏幕下面的窗口會(huì)出現(xiàn)錯(cuò)誤信息;這時(shí)候要修改源程序、保存后重新編 譯。直到修改了全部錯(cuò)誤,屏幕下面的窗口會(huì)出現(xiàn)下面的信息:命令項(xiàng)運(yùn)(8)程 序可能出 錯(cuò),要學(xué) 會(huì)調(diào)試修改,詳見(jiàn) VC+6.0使用方法中的 7. 調(diào)試程序PS:輸入法必須切換成英文輸入法!2 完成下面程序的運(yùn)行2) 輸入并運(yùn)行下面的程序,運(yùn)行后記錄并分析結(jié)果。#includemain()charc1,c2; /* 第 2 行*/ c1=97;c2=98; /* 第 3

8、行*/ printf( %c%cn ,c1,c2);在此基礎(chǔ)上:在程序最后增加一個(gè)語(yǔ)句,再運(yùn)行 , 并分析結(jié)果。printf( %d%dn ,c1,c2);/ ac9798將第 2 行改為:intc1,c2;再次運(yùn)行 , 并分析結(jié)果。 ac9798再將第 3 行改為:c1=305;c2=340;/ 1t305340N 位二進(jìn)制轉(zhuǎn)成 8 位的 char 再使之運(yùn)行 , 分析運(yùn)行結(jié)果。2 輸入并運(yùn)行下面的程序#includemain()charc1= a ,c2= b ,c3= c ,c4= 101 ,c5= 116 ; printf( a%cb%ctc%ctabcn ,c1,c2,c3); pr

9、intf( ttb%c%cn ,c4,c5); 在上機(jī)前先用人工分析程序,寫出應(yīng)得結(jié)果,上機(jī)后將二者對(duì)照。三案例項(xiàng)目1. 輸出你自己的生日,姓名拼音的首字母,用浮點(diǎn)型數(shù)輸出你的年齡 ( 如: 20.8)實(shí)驗(yàn)二基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 一實(shí)驗(yàn)?zāi)康模?練習(xí)使用基本類型的變量進(jìn)行編程2練習(xí)使用 C的運(yùn)算符二實(shí)驗(yàn)內(nèi)容 :1實(shí)驗(yàn)要求:熟練使用運(yùn)算符( %, +,- )2分析與設(shè)計(jì):求余運(yùn)算符要求兩個(gè)操作數(shù)都必須是整數(shù); +和- 要看清是先使用還 是先自增(減)3源代碼:程序 1:取出一個(gè)三位整數(shù)的各個(gè)位,并輸出 main()/ 缺少 #includeintx=123;charc1,c2,c3;c1=

10、x%10;c2=x/10%10;c3=x/100;printf( “%n”,c3,c2,c1); / “”,輸入法錯(cuò)誤運(yùn)行結(jié)果為:1,2,3程序 2:練習(xí)自增和自減運(yùn)算符的使用#includemain()inti,j,m,n;i=8;j=10;m=+i; /* 第5行*/n=j+; /* 第6行*/printf( %d,%d,%d,%dn ,i,j,m,n);運(yùn)行程序,注意 i 、j 、m、n 各變量的值;然后分別作以下改動(dòng)并運(yùn)行: 將第 5、6 行改為如下以后再運(yùn)行:m=i+;n=+j;將程序改為:#includemain()inti,j;i=8;j=10;printf( %d,%dn ,i

11、+,j+); /* 第5行*/在的基礎(chǔ)上,將第 5 行 printf 語(yǔ)句改為:printf( %d,%dn ,+i,+j);再將 printf 語(yǔ)句改為:printf( %d,%d,%d,%dn ,i,j,i+,j+);/ 先執(zhí)行所有的 i 輸出操作,再執(zhí)行 i+1將程序改為:#includemain() inti,j,m=0,n=0;i=8;j=10; m+=i+;n-=-j; printf( i=%d,j=%d,m=%d,n=%dn ,i,j,m,n); 三案例項(xiàng)目 (參考附 1:c 語(yǔ)言函數(shù)庫(kù) )1. 隨機(jī)生成 2個(gè) 099之間的正整數(shù),作為你 2門課的成績(jī)。 平均成績(jī) (如果結(jié)果是整

12、數(shù),要求轉(zhuǎn)換成浮點(diǎn)數(shù) ) ,計(jì)算所有成績(jī)的標(biāo)準(zhǔn)差 要求必須用數(shù)學(xué)庫(kù)函數(shù) rand() , sqrt 。標(biāo)準(zhǔn)差公式如下:2. 用數(shù)學(xué)庫(kù)函數(shù)實(shí)現(xiàn)你學(xué)過(guò)的數(shù)學(xué)公式,使用的庫(kù)函數(shù)越多,考核分?jǐn)?shù)越高實(shí)驗(yàn)三輸入、輸出函數(shù)的使用 一實(shí)驗(yàn)?zāi)康模菏炀毷褂酶袷捷敵龊瘮?shù) printf() 和格式輸入函數(shù) scanf() 二實(shí)驗(yàn)內(nèi)容 :1. 實(shí)驗(yàn)要求 : 格式輸入函數(shù) scanf() 和格式輸出函數(shù) printf() 的使用2分析與設(shè)計(jì) : 輸入函數(shù)中的普通字符需要原樣輸入,并注意分隔符的使用;輸出函數(shù) 中的格式控制符和輸出項(xiàng)數(shù)要一一對(duì)應(yīng)。3源代碼 :程序 1:為使得 a=1,b=2,c= A,d=5.5, 在鍵盤上

13、如何輸入? #include main() inta,b; charc; floatd;scanf( “a=%db=%”d ,&a,&b);scanf( “%c%en”,&c,&d); 程序在運(yùn)行時(shí),輸入: a=1b=2A5.50 程序 2:判斷下面程序的運(yùn)行結(jié)果。main()intx=3,y=2,z=1;printf( “%d, n”,(+x,y+),z+2); 運(yùn)行結(jié)果: 2,3 分析得到此結(jié)果的原因。程序 3:以下程序的功能是從鍵盤輸入一個(gè)整型數(shù),一個(gè)實(shí)型數(shù)和一個(gè)字符型數(shù),并把他們?cè)谄聊簧陷敵?。完成以下填空,并把程序調(diào)通,寫出當(dāng)輸入為45,34.5,A時(shí)程序的運(yùn)行結(jié)果。#includem

14、ain()inta;floatb;charc;scanf( %d,%f,%c ,&a,&b,&c);printf( a=%dn ,a);printf( b=%fn ,b);printf( c=%cn ,c);程序 4:指出以下程序的錯(cuò)誤并改正,并上機(jī)把程序調(diào)通。#includemain()inta;scanf( %f ,a);/scanf( %d ,a);printf( a=%f,a);/printf( a=%d,a);charc;c=A;/ c=A ;printf( %f,c)/printf( %c,c); 三案例項(xiàng)目 1. 用 scanf,printf 進(jìn)行如下的輸入和輸出:1)輸入自己的

15、生日,姓名拼音的首字母,年齡 ( 如:20.8) ,然后輸出。 注意使用 fflush(stdin) 函數(shù)清除緩存區(qū)域, pp89,例 4-6 第 15 行2)輸入自己上學(xué)期所有課程的成績(jī) ( 不一定跟真實(shí)成績(jī)一模一樣 ), 計(jì)算平均成績(jī)和標(biāo)準(zhǔn) 差,將其輸出。3)輸出“學(xué)生管理系統(tǒng)”的菜單,如下:實(shí)驗(yàn)四選擇結(jié)構(gòu)程序設(shè)計(jì)一實(shí)驗(yàn)?zāi)康模?熟練掌握分支結(jié)構(gòu) if 語(yǔ)句及其嵌套2掌握分析具體問(wèn)題的方法 二實(shí)驗(yàn)內(nèi)容:1實(shí)驗(yàn)要求:利用 if 語(yǔ)句和 scanf 函數(shù)模擬簡(jiǎn)單的 ATM取款機(jī)界面 2分析與設(shè)計(jì) : 用戶先輸入密碼, 密碼正確后, 可以進(jìn)行帳戶的操作, 如查詢, 取款等。 3源代碼 : 模擬 A

16、TM 取款機(jī)界面#include/#includemain() intpassword,op,number=0,count=1000,n=0;printf(pleaseinputpassword:); scanf(%d,&password);while(password!=1234)/* 有三次輸入密碼的機(jī)會(huì) */n+;if(n=3)printf(youhaveinput3,cannotinputagain!n);getch();return;printf(passworderror!pleaseinputagain:);scanf(%d,&password);loop: printf(nwe

17、lcome!Pleasechoiceoneoperate:(1,2,3)n); printf(1:countn2:getmoneyn3:returnn);scanf(%d,&op);/* 輸入一種操作 */switch(op) case1:printf(nyourcountis%d.n,count);gotoloop;/* 帳戶查詢 */ case2:printf(npleaseinputcountthatyouwanttoget:); scanf(%d,&number);if(numbercount|number0)printf(nerror); elseprintf(nnow,youcan

18、takemoney!);count-=number; gotoloop;/* 取款 */case3:break;/* 返回 */default:printf(noperateerror!);gotoloop;三案例項(xiàng)目1. 輸入 3 門課的成績(jī),并輸出所有成績(jī)中最大的一門課。用邏輯,關(guān)系運(yùn)算判斷:如果所有 成績(jī)中至少有一門課大于 90,則輸出 good;2. 先輸入一個(gè)學(xué)生 A 的姓名和生日,再輸入一個(gè)學(xué)生 B 的姓名和生日。用邏輯,關(guān)系運(yùn)算 判斷:如果 A ,B 的姓名,生日都是正確的,則輸出 yes,否則輸出 no。3. 根據(jù)實(shí)驗(yàn)二中的“學(xué)生管理系統(tǒng)”的菜單,如果輸入 1,則輸出“顯示所有

19、學(xué)員信息”; 如果輸入 2 則輸出“查詢學(xué)員信息”;如果輸如 3,則。用 switch() 語(yǔ)句完成,運(yùn)行效果圖如下:實(shí)驗(yàn)五循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 一目的和要求1 掌握在設(shè)計(jì)條件型循環(huán)結(jié)構(gòu)時(shí),如何正確地設(shè)定循環(huán)條件,以及如何正確地控制計(jì)數(shù) 型循環(huán)結(jié)構(gòu)的次數(shù)。2 熟悉用 while 語(yǔ)句, do-while 語(yǔ)句和 for 語(yǔ)句實(shí)現(xiàn)循環(huán)的方法。3 掌握在程序設(shè)計(jì)中用循環(huán)的方法實(shí)現(xiàn)各種算法 ( 如窮舉、選代、遞推等 ) 。4 掌握選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)的嵌套。 二實(shí)驗(yàn)內(nèi)容1 程序分析 下面是一個(gè)計(jì)算 e 的近似值(使誤差小于給定的)的程序。#includemain() doublee=1.0,x=1.0,y

20、,delta;inti=1;printf( 請(qǐng)輸入給定的誤差: );scanf( %lf ,&delta);y=1/x;while(y=delta)e=e+y;i+;x=x*i;y=1/x;printf( 計(jì)算結(jié)果是: %12.10lfn ,e); 閱讀上面的程序,寫出程序所依據(jù)的計(jì)算公式。 1+1/(1*2)+1/2*3+1/6*4 當(dāng)輸入的 delta 是什么值時(shí),能分別使程序按下面的要求運(yùn)行: 不進(jìn)入循環(huán); delta1只循環(huán)一次; delta1/2只循環(huán)兩次; 1/2delta1/6 進(jìn)入死循環(huán) (程序?qū)⒂肋h(yuǎn)循環(huán)下去 ) 。Delta=0 為了能知道程序循環(huán)了多少次,應(yīng)該在程序中增加一

21、條什么樣的語(yǔ)句? printf( %dn ,i);原程序中 while 語(yǔ)句中的 y=delta ,分別換成 ydelta,y=delta,ydelta,y=detax 觀察程序運(yùn)行將會(huì)有什么變化。把程序中的 while 結(jié)構(gòu)改寫成 do-while 結(jié)構(gòu),再運(yùn)行程序,說(shuō)明兩種結(jié)構(gòu)的區(qū)別 將程序改成用 for 循環(huán)結(jié)構(gòu),計(jì)算前 50 項(xiàng),并運(yùn)行程序,寫出運(yùn)行結(jié)果。2 有一數(shù)列: 2/1,3/2,5/3,8/5, 求出這個(gè)數(shù)列的前 10 項(xiàng)之和。 #includemain()intn,t; floata=2,b=1,s=0; for(n=1;n=10;n+) s=s+a/b;t=a; a=a+b

22、;b=t;printf( %fn ,s);要求:跟蹤執(zhí)行,觀察 s、t 、a、b 的變化方法:使用功能鍵 F10 單步跟蹤執(zhí)行程序, 可以在監(jiān)視窗口設(shè)置要觀察的變量或表達(dá)式實(shí)驗(yàn)六數(shù)組一實(shí)驗(yàn)?zāi)康? 掌握一維數(shù)組和二維數(shù)組的定義、賦值和輸入輸出的方法;2 掌握字符數(shù)組和字符串函數(shù)的使用;3 掌握與數(shù)組有關(guān)的算法(特別是排序算法)二、實(shí)驗(yàn)內(nèi)容 編程序并上機(jī)調(diào)試運(yùn)行。1 調(diào)試下列錯(cuò)誤程序,使之具有如下功能:輸入 12 個(gè)整數(shù),按每行 3 個(gè)數(shù)輸出這些整 數(shù),最后輸出 12 個(gè)整數(shù)的平均值。寫出調(diào)試過(guò)程。#include #defineN12 main() inti,aN,av;/av=0for(i=0

23、;iN;i+)scanf( %d ,ai);/&aifor(i=0;iN;i+)printf( %d ,ai);if(i%3=0)printf( n );/if(i+1)%3=0)printf( n ) for(i=0;i!=N;i+)av+=ai;/av/=N; printf( av=%fN ,av);/printf( av=%d ,av) 上面給出的程序有錯(cuò)誤和缺陷,請(qǐng)找出程序中的錯(cuò)誤并改正。2. 按照下面算法編一個(gè)程序,將兩個(gè)字符串連接起來(lái),不能用 strcat 函數(shù)。 定義整型變量 i 、j,字符串 s1、s2 輸入字符串 s1、 s2 當(dāng)字符串 s1 尚未結(jié)束,改變字符串 s1的下標(biāo)

24、,使之到 s1結(jié)束處 當(dāng)字符串 s2尚未結(jié)束,將字符串 s2逐個(gè)字符連接到字符串 s1 的后面 為字符串 s1 添加結(jié)束標(biāo)志 輸出連接后的字符串三案例項(xiàng)目1. 輸入 3 門成績(jī),并用數(shù)組記錄 .在輸入前顯示提示文字“請(qǐng)輸入第 i 門課成績(jī)”。 然后用數(shù)組與循環(huán)語(yǔ)句求成績(jī)的均值 ,并輸出均值 ,每門課的成績(jī)2. 用二維數(shù)組記錄 3 個(gè)同學(xué)的所有成績(jī),并輸出所有人的成績(jī)3. 用數(shù)組記錄學(xué)生 A 姓名的字符串,并輸出。再輸入一個(gè)學(xué)生 B 的姓名字符串,與 A 的姓 名字符串比較,如果一樣則輸出 yes,否則 no4(選做)用數(shù)組存放 4 個(gè)學(xué)生的學(xué)號(hào),用冒泡排序法將學(xué)號(hào)升序放置在原數(shù)組中 , 并輸出

25、數(shù)組數(shù)據(jù)實(shí)驗(yàn)七簡(jiǎn)單函數(shù)一實(shí)驗(yàn)?zāi)康模?理解函數(shù)的概念和應(yīng)用。2. 掌握無(wú)參無(wú)返回函數(shù)的使用二案例項(xiàng)目1. 完成主函數(shù)中的下列自定義函數(shù) :1)無(wú)參無(wú)返回的函數(shù)2)無(wú)參無(wú)返回的函數(shù)3)無(wú)參有返回的函數(shù)4)無(wú)參有返回的函數(shù)5)無(wú)參有返回的函數(shù)6)無(wú)參無(wú)返回的函數(shù)3. 掌握無(wú)參有返回函數(shù)的使用 inputInfo() :/輸入一個(gè)學(xué)生的信息 (name,number,score3) OutputInfo();/ 輸出一個(gè)學(xué)生的信息 (name,number, score3) Average():求成績(jī)的均值 .Max(): 求成績(jī)的最大值 .Standar():求成績(jī)的方差 .Sort():對(duì)成績(jī)進(jìn)行

26、排序 2.用上述自定義函數(shù)完成主函數(shù)的編寫 voidmain()/ 輸入學(xué)生 A 的信息 (name, number,score3) /輸出學(xué)生 A 的信息 (name, number, score3) /求成績(jī)的均值,并輸出 /求成績(jī)最大值,并輸出 /求成績(jī)方差,并輸出 /對(duì)成績(jī)進(jìn)行排序,并將排序后的成績(jī)輸出/輸入學(xué)生 B 的信息 (name,number, score3) /輸出學(xué)生 B 的信息 (name,number,score3) /求成績(jī)的均值,并輸出 /求成績(jī)最大值,并輸出 /求成績(jī)方差,并輸出 /對(duì)成績(jī)進(jìn)行排序,并將排序后的成績(jī)輸出實(shí)驗(yàn)八高級(jí)函數(shù)一實(shí)驗(yàn)?zāi)康模?1理解函數(shù)形參和實(shí)

27、參的概念和應(yīng)用。2. 掌握有參無(wú)返回函數(shù)的使用。3. 掌握有參有返回函數(shù)的使用。三案例項(xiàng)目1.定義一個(gè)帶參數(shù)并有返回值的函數(shù) Average(intscore3),計(jì)算學(xué)生成績(jī) score3的均值,并將 其返回。然后在主程序中調(diào)用 Average()求均值,并輸出均值。2.用一個(gè)數(shù)組 Student1000,記錄 N 個(gè)學(xué)生的學(xué)號(hào)。定義一個(gè)函數(shù) AddStudent(intnumber), 向 Student 數(shù)組中添加一個(gè)學(xué)生的學(xué)號(hào)。 然后用該函數(shù)添加 3 個(gè)學(xué)生的學(xué)號(hào), 并輸出所有學(xué) 號(hào)。3. 用一個(gè)數(shù)組 Student1000,記錄 N 個(gè)學(xué)生的學(xué)號(hào)。 定義一個(gè)函數(shù) modify(int

28、i,intnumber), 修改 Studenti的學(xué)號(hào)為參數(shù) number,用主程序輸入 i 和 number,調(diào)用 modify()函數(shù) ,并輸出4. 用一個(gè)數(shù)組 Student1000,記錄 N 個(gè)學(xué)生的學(xué)號(hào)。定義一個(gè)函數(shù) del(inti), 刪除 Studenti的學(xué) 號(hào),并把 Student1000數(shù)組中的后續(xù)數(shù)據(jù)前移。用主程序輸入 i,調(diào)用 del()函數(shù) ,并輸出刪除 后的所有學(xué)號(hào)。實(shí)驗(yàn)九指針一實(shí)驗(yàn)?zāi)康? 了解指針的概念,學(xué)會(huì)定義和使用指針變量。2掌握函數(shù)的值調(diào)用和引用調(diào)用的含義 3掌握簡(jiǎn)單變量、數(shù)組和指針作為函數(shù)參數(shù)進(jìn)行傳遞的形式 二、實(shí)驗(yàn)內(nèi)容1.運(yùn)行下列程序,寫出運(yùn)行結(jié)果。

29、#include stdio.h main() inta5,*p,j;for(j=0;j5;j+)aj=j+1;p=a;for(j=0;j5;j+)printf( *(p+%d)=%dn ,j,*(p+j);/*(p+j)改為 pj2. 想使指針變量 pt1 指向 a和 b中的大者, pt2 指向小者,以下程序能否實(shí)現(xiàn)此目的? swap(int*p1,int*p2)int*p; p=p1;p1=p2;p2=p;/inta;a=*p1;*p1=*p2;*p2=a;main() inta,b;int*pt1,*pt2;scanf( %d,%d ,&a,&b); pt1=&a;pt2=&b; if(

30、ab)swap(pt1,pt2); printf( %d,%dn ,*pt1,*pt2); 上機(jī)調(diào)試此程序。如果不能實(shí)現(xiàn)題目要求,指出原因并修改之。 1編寫自定義函數(shù):進(jìn)行兩個(gè)數(shù)據(jù)之間的交換。分析與設(shè)計(jì) : 使用兩種參數(shù)傳遞方法, 進(jìn)行數(shù)據(jù)的交換,比較下面程序的運(yùn)行結(jié)果有何不同。程序 1:參數(shù)的值傳遞。voidswap(intx,inty) intt;t=x;x=y;y=t; printf( “x=%dty=%dn” ,x,y);main()inta,b;printf( “pleaseinputa,b: ” );scanf( “%d,%d”,&a,&b);swap(a,b);printf( “

31、a=%dtb=%dn” ,a,b);程序 2:參數(shù)的地址傳遞。voidswap(int*x,int*y)intt;t=*x;*x=*y;*y=t;printf( “x=%dty=%dn” ,*x,*y);main()inta,b;printf( “pleaseinputa,b: ” );scanf( “%d,%d”,&a,&b);swap(a,b);/swap(&a,&b);printf( “a=%dtb=%dn” ,a,b);三案例項(xiàng)目1.用指針變量記錄一門課的成績(jī) a,并用指針輸出 a 的值;2.用指針數(shù)組 score記錄兩個(gè)學(xué)生的成績(jī) a3,b3, 并用 score輸出所有成績(jī) .3(選

32、做 ).輸入學(xué)生課程的數(shù)目,并用指針與動(dòng)態(tài)內(nèi)存分配函數(shù)malloc()記錄一個(gè)學(xué)生的成績(jī):pp2811)函數(shù) malloc實(shí)驗(yàn)十自定義數(shù)據(jù)、文件一實(shí)驗(yàn)?zāi)康? 掌握結(jié)構(gòu)體類型的概念和定義方法與使用。2 掌握指向結(jié)構(gòu)體變量的指針變量的概念和應(yīng)用。 二案例項(xiàng)目1. 完成下列自定義函數(shù):1)定義一個(gè)學(xué)生信息結(jié)構(gòu)體 Student_Info(其成員變量有姓名,學(xué)號(hào),成績(jī)數(shù)組 ,平均分 ),并在 main()函數(shù)中用結(jié)構(gòu)體變量記錄一個(gè)學(xué)生的信息,然后輸出該學(xué)生的所有信息。2)用一個(gè)結(jié)構(gòu)體數(shù)組 Student_InfoStudent1000,記錄 N 個(gè)學(xué)生的結(jié)構(gòu)體變量。定義一個(gè)函數(shù) AddStudent(

33、structStudent_Infos),向 Student數(shù)組中添加一個(gè)學(xué)生的信息。3) 定義一個(gè)函數(shù) find(intnumber)查找指定學(xué)號(hào) number 的學(xué)員,并返回該學(xué)生在 Student1000 數(shù)組中的下標(biāo) i ,如果指定學(xué)號(hào)不存在,返回 -1;4) 定義一個(gè)函數(shù) voidquery(intnumber):用 find(intnumber) 函數(shù)根據(jù)學(xué)號(hào)查找學(xué)生在 Student1000數(shù)組中的下標(biāo) i,并顯示該學(xué)員的所有信息。5) 定義一個(gè)函數(shù) voiddel(intnumber),根據(jù)學(xué)號(hào)查找學(xué)生,并刪除該學(xué)員信息6) 定義一個(gè)函數(shù) voidmodify(intnumbe

34、r) ,根據(jù)學(xué)號(hào)查找并修改學(xué)員的信息2.用上述自定義函數(shù)完成主函數(shù)的編寫 /定義一個(gè)結(jié)構(gòu)體數(shù)組 Student_InfoStudent1000, main()/ 用 AddStudent函數(shù)添加 3 個(gè)學(xué)生的信息,并輸出所有學(xué)生的信息。/用 query()函數(shù)查找一個(gè)學(xué)生,并輸出該有學(xué)生的信息。/用 del()函數(shù)刪除一個(gè)學(xué)生,并顯示刪除后所有學(xué)生的信息/用 modify() 函數(shù)修改一個(gè)學(xué)生,并顯示 modify 后所有學(xué)生的信息附 1: c 語(yǔ)言函數(shù)庫(kù)1. abs、 labs、fabs:求絕對(duì)值函數(shù)2. acos:反余弦函數(shù)3. asin:反正弦函數(shù)4. atan:反正切函數(shù)5. atan

35、2:反正切函數(shù)6. ceil:向上舍入函數(shù)7. cos:余弦函數(shù)8. cosh:雙曲余弦函數(shù)9. div、ldiv :除法函數(shù)10. exp:求 e 的 x 次冪函數(shù)11. floor :向下舍入函數(shù)12. fmod:求模函數(shù)13. frexp:分解浮點(diǎn)數(shù)函數(shù)14. hypot:求直角三角形斜邊長(zhǎng)函數(shù)15. ldexp:裝載浮點(diǎn)數(shù)函數(shù)16. log、 log10:對(duì)數(shù)函數(shù)17. modf:分解雙精度數(shù)函數(shù)18. pow、pow10:指數(shù)函數(shù)19. rand:產(chǎn)生隨機(jī)整數(shù)函數(shù)20. sin:正弦函數(shù)21. sinh:雙曲正弦函數(shù)22. sqrt:開(kāi)平方函數(shù)23. srand:設(shè)置隨機(jī)時(shí)間的種子函

36、數(shù)24. tan:正切函數(shù)25. tanh:雙曲正切函數(shù)1.abs、 labs、 fabs:求絕對(duì)值函數(shù)函數(shù)原型: intabs(intx); longlabs(longx); doublefabs(doublex);頭文件: #include 是否是標(biāo)準(zhǔn)函數(shù):是 函數(shù)功能:函數(shù) intabs(intx); 是求整數(shù) x 的絕對(duì)值;函數(shù) longlabs(longn);是求長(zhǎng)整型數(shù) x 的絕對(duì)值;函數(shù) doublefabs(doublex);是求浮點(diǎn)數(shù) x 的絕對(duì)值。返回值:返回計(jì)算結(jié)果。 例程如下:計(jì)算整數(shù)的絕對(duì)值。#include intmain(void)intx=-56; printf

37、(number:%dabsolutevalue:%dn,x,abs(x);return0;例程說(shuō)明:本例程通過(guò) abs函數(shù)計(jì)算出整型數(shù) -56 的絕對(duì)值 56,并在屏幕上顯示結(jié)果。本例程的運(yùn) 行結(jié)果為:number:-56absolutevalue:56 例程如下:計(jì)算長(zhǎng)整數(shù)的絕對(duì)值。#includeintmain(void)printf(number:%ldabsolutevalue:%ldn,x,labs(x);return0; 例程說(shuō)明: 例程如下:計(jì)算浮點(diǎn)數(shù)的絕對(duì)值。#include intmain(void) floatx=-128.0;printf(number:%fabsolut

38、evalue:%fn,x,fabs(x);return0; 例程說(shuō)明: 本例程通過(guò) fabs函數(shù)計(jì)算出浮點(diǎn)數(shù) -128.0 的絕對(duì)值 128.0,并在屏幕上顯示結(jié)果。本例 程的運(yùn)行結(jié)果為:number:-128.000000absolutevalue:128.0000002.acos:反余弦函數(shù) 函數(shù)原型: doubleacos(doublex); 頭文件: #include 是否是標(biāo)準(zhǔn)函數(shù):是 函數(shù)功能:求 x 的反余弦值,這里, x 為弧度, x 的定義域?yàn)?-1.0,1.0,arccosx 的值 域?yàn)?,。返回值:計(jì)算結(jié)果的雙精度值。 例程如下:求 arccosx。#include#in

39、cludeintmain(void)doubleresult;doublex=1.0;result=acos(x);printf(arccos%lf=%lfn,x,result);return0; 例程說(shuō)明: 本例程應(yīng)用函數(shù) acos計(jì)算 1.0 的反余弦值,即: arccos1。返回計(jì)算結(jié)果的雙精度值。本例程 的運(yùn)行結(jié)果是: arccos1.000000=0.0000003.asin:反正弦函數(shù) 函數(shù)原型: doubleasin(doublex); 頭文件: #include是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:求 x 的反正弦值,這里, x 為弧度,x 的定義域?yàn)?-1.0,1.0,arcsinx

40、值域?yàn)?- /2, +/2。返回值:計(jì)算結(jié)果的雙精度值。例程如下:求 arcsinx。 #include #include intmain(void)doubleresult;doublex=1.0; result=asin(x);printf(arcsin%lfis%lfn,x,result);return(0);例程說(shuō)明:本例程應(yīng)用函數(shù) asin計(jì)算 1.0 的反正弦值,即: arcsin1。返回計(jì)算結(jié)果的雙精度值。本例程 的運(yùn)行結(jié)果是:4. atan:反正切函數(shù)函數(shù)原型: doubleatan(doublex);頭文件: #include 是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:求 x 的反正切值,

41、這里, x 為弧度, x 的定義域?yàn)?(- ,+),arctanx的值域 為(-/2,+/2)。返回值:計(jì)算結(jié)果的雙精度值。例程如下:求 arctanx。 #include #include intmain(void)doubleresult;doublex=1.0; result=atan(x);printf(arctan%lf=%lfn,x,result);return(0);例程說(shuō)明:本例程應(yīng)用函數(shù) atan計(jì)算 1.0 的反正切值,即: arctan1。并返回計(jì)算結(jié)果的雙精度值。本例 程的運(yùn)行結(jié)果是:arctan1.000000=0.7853985. atan2:反正切函數(shù) 2 函數(shù)原

42、型: doubleatan2(doubley,doublex); 頭文件: #include 是否是標(biāo)準(zhǔn)函數(shù):是 函數(shù)功能:求 y/x 的反正切值。 返回值:計(jì)算結(jié)果的雙精度值。 例程如下:求 arctan(x/y)。#include #include intmain(void) doubleresult; doublex=10.0,y=5.0; result=atan2(y,x); printf(arctan%lf=%lfn,(y/x),result);return0; 例程說(shuō)明:本例程應(yīng)用函數(shù) atan2計(jì)算 10.0/5.0 的反正切值,即:arctan0.5。并返回計(jì)算結(jié)果的雙精度值。

43、 本例程的運(yùn)行結(jié)果是:arctan0.500000=0.4636486. ceil:向上舍入函數(shù) 函數(shù)原型: doubleceil(doublex); 頭文件: #include 是否是標(biāo)準(zhǔn)函數(shù):是 函數(shù)功能:將雙精度數(shù) x 向上舍入,即:取它的最大整數(shù)。例如: ceil(123.400000)=124.000000。返回值:返回計(jì)算結(jié)果。 例程如下:數(shù)值的向上舍入。#include #include intmain(void) doublenum=123.400000;doubleup; up=ceil(num); printf(Theoriginalnumber%lfn,num); pri

44、ntf(Thenumroundedup%lfn,up);return0; 例程說(shuō)明: 本例程通過(guò)函數(shù) ceil 將雙精度數(shù) 123.400000向上舍入,得到的結(jié)果為 124.000000,并 在屏幕上顯示運(yùn)算結(jié)果。本例程的運(yùn)行結(jié)果為:Theoriginalnumber123.400000 Thenumroundedup124.0000007. cos:余弦函數(shù)函數(shù)原型: doublecos(doublex); 頭文件: #include 是否是標(biāo)準(zhǔn)函數(shù):是 函數(shù)功能:求 x的余弦值,這里, x 為弧度。 返回值:計(jì)算結(jié)果的雙精度值。例程如下:求 cosx。 #include #include

45、 intmain(void) doubleresult; doublex=M_PI; result=cos(x); printf(cos(PI)is%lfn,result);return0;例程說(shuō)明:本例程應(yīng)用 cos 函數(shù)計(jì)算的余弦值, 即:cos,再返回計(jì)算結(jié)果的雙精度值。本例程的運(yùn) 行結(jié)果是: cos(PI)is-1.0000008. cosh:雙曲余弦函數(shù) 函數(shù)原型: dlublecosh(doublex); 頭文件: #include 是否是標(biāo)準(zhǔn)函數(shù):是 函數(shù)功能:計(jì)算 x 的雙曲余弦值。其中 ch(x)=(ex+e-x)/2。 返回值:計(jì)算結(jié)果的雙精度值。例程如下:求 x 的雙曲余

46、弦值 ch(x) 。#include #include intmain(void)doubleresult; doublex=0.5; result=cosh(x); printf(ch(%lf)=%lfn,x,result);return0; 例程說(shuō)明:本例程應(yīng)用函數(shù) cosh計(jì)算 0.5 的雙曲余弦值,即: ch(0.5),并返回計(jì)算結(jié)果的雙精度值。本 例程的運(yùn)行結(jié)果是: ch(0.500000)=1.1276269. div 、ldiv :除法函數(shù) 函數(shù)原型: div_tdiv(intnumber,intdenom); ldiv_tldiv(longlnumer,longldenom);

47、 頭文件: #include 是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:函數(shù) div 是將兩個(gè)整數(shù) numbe和 denom相除 ,返回商和余數(shù)。函數(shù) ldiv 是將 兩個(gè)長(zhǎng)整數(shù) lnumbe 和 ldenom相除 ,返回商和余數(shù)。返回值:函數(shù) div 返回 div_t 類型的值;函數(shù) ldiv 返回 ldiv_t 類型的值。 例程如下:兩整數(shù)相除,求其商和余數(shù)。#include #include div_tx;intmain(void) x=div(11,5); printf(11div5=%dremainder%dn,x.quot,x.rem);return0; 例程說(shuō)明:本例程通過(guò) div 函數(shù)將 1

48、1和 5相除,返回其商和余數(shù)。注意: div 函數(shù)并不是 中的函數(shù),而是 中的函數(shù)。 中包含存 儲(chǔ)分配函數(shù)和一些雜項(xiàng)函數(shù)。但由于 div 函數(shù)具有數(shù)學(xué)計(jì)算的功能,因此將其歸類到數(shù)學(xué)函 數(shù)中。div_t 是 中定義的數(shù)據(jù)類型,它是一個(gè)結(jié)構(gòu)體,定義如下: typedefstructintquot;/* 商 */ intrem;/* 余數(shù)*/div_t;其中包含兩個(gè)域:商和余數(shù)。 div 函數(shù)將兩個(gè)整數(shù)相除 ,返回一個(gè) div_t 類型的值。 該函數(shù)的運(yùn)行結(jié)果是:11div2=5remainder1 例程如下:兩長(zhǎng)整數(shù)相除,求其商和余數(shù)。#include #include ldiv_tlx;intm

49、ain(void) lx=ldiv(200000L,70000L); printf(200000div70000=%ldremainder%ldn,lx.quot,lx.rem);return0; 例程說(shuō)明:本例程通過(guò) ldiv 函數(shù)將長(zhǎng)整數(shù) 200000與 70000相除,并返回其商和余數(shù)。 注意:同函數(shù) div 一樣,函數(shù) ldiv 是 中的函數(shù)。ldiv_t 是 中定義的數(shù)據(jù)類型,它是一個(gè)結(jié)構(gòu)體,定義如下: typedefstruct longquot;longrem; ldiv_t;其中包含兩個(gè)域:商和余數(shù)。 ldiv 函數(shù)將兩個(gè)長(zhǎng)整數(shù)相除 ,返回一個(gè) ldiv_t 類型的值。該函數(shù)的

50、運(yùn)行結(jié)果是:200000div70000=2remainder6000010. exp:求 e 的 x 次冪函數(shù) 函數(shù)原型: doubleexp(doublex);頭文件: #include 是否是標(biāo)準(zhǔn)函數(shù):是 函數(shù)功能:計(jì)算自然常數(shù) e的 x冪。 返回值:返回計(jì)算結(jié)果的雙精度值。#include #include intmain(void)doubleresult;doublex=3.0; result=exp(x); printf(eraisedtothepowerof%lf(e%lf)=%lfn,x,x,result);return0; 例程說(shuō)明: 本例程應(yīng)用函數(shù) exp 計(jì)算 e3,該

51、函數(shù)返回計(jì)算結(jié)果的雙精度值。本例程的運(yùn)行結(jié)果為: eraisedtothepowerof3.000000(e3.000000)=20.08553711. floor:向下舍入函數(shù) 函數(shù)原型: doublefloor(doublex);頭文件: #include 是否是標(biāo)準(zhǔn)函數(shù):是 函數(shù)功能:將雙精度數(shù) x 向下舍入,即:取它的最小整數(shù)。例如: floor(123.400000)=123.000000。返回值:返回計(jì)算結(jié)果。 例程如下:數(shù)值的向下舍入。#include #include intmain(void) doublenum=123.400000;doubleup; up=floor(n

52、um); printf(Theoriginalnumber%lfn,num); printf(Thenumroundeddown%lfn,up);return0; 例程說(shuō)明: 本例程通過(guò)函數(shù) floor 將雙精度數(shù) 123.400000 向下舍入,得到的結(jié)果為 123.000000,并 在屏幕上顯示運(yùn)算結(jié)果。本例程的運(yùn)行結(jié)果為:Theoriginalnumber123.400000 Thenumroundeddown123.00000012. fmod:求模函數(shù)函數(shù)原型: doublefmod(doublex,doubley); 頭文件: #include 是否是標(biāo)準(zhǔn)函數(shù):是 函數(shù)功能:計(jì)算 x 對(duì) y 的模 ,即 x/y 的余數(shù)。 返回值:返回計(jì)算結(jié)果,即余數(shù)的雙精度。 例程如下:計(jì)算兩數(shù)的余數(shù)。#include #include intmain(void) floatx,y;x=12.580000; y=2.600000; printf(12.580000/2.600000:%fn,fmod(x,y); getchar();return0;例程說(shuō)明:本例程通過(guò)函數(shù) fmod 求雙精度數(shù) 12

溫馨提示

  • 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)論