C語(yǔ)言實(shí)驗(yàn)指導(dǎo)書20163_第1頁(yè)
C語(yǔ)言實(shí)驗(yàn)指導(dǎo)書20163_第2頁(yè)
C語(yǔ)言實(shí)驗(yàn)指導(dǎo)書20163_第3頁(yè)
已閱讀5頁(yè),還剩24頁(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)書電氣與電子工程學(xué)院重要說(shuō)明:上機(jī)實(shí)驗(yàn)?zāi)康暮鸵笠粚?shí)驗(yàn)報(bào)告要求每次實(shí)驗(yàn),提交一份實(shí)驗(yàn)報(bào)告。具體格式見“實(shí)驗(yàn)報(bào)告格式文將代碼和運(yùn)行截圖粘貼到“C改革實(shí)驗(yàn)指導(dǎo)書24學(xué)時(shí)word的相應(yīng)位置。如以下圖,程序運(yùn)行的截圖如下:I:28位腳雙屏5度叩也語(yǔ)言改革教材任改革K案例改革初隔學(xué)生信息言理紊好青輸入要查詢的學(xué)生的學(xué)號(hào);1學(xué)號(hào)姓名語(yǔ)文藪學(xué)英諸平均分=c=*=S=-=-=134S6.0778_023.0285.7按任意鍵進(jìn)入王目錄.二上機(jī)實(shí)驗(yàn)的目的上機(jī)實(shí)驗(yàn)的目的,絕不僅僅是為了驗(yàn)證教材和講課的容,或者驗(yàn)證自己所編程序正確與否。學(xué)習(xí)程序語(yǔ)言,上機(jī)實(shí)驗(yàn)的目的如下:1加深對(duì)講授容的理解,尤

2、其是一些語(yǔ)法規(guī)定,光靠課堂講授,既枯燥無(wú)味又難以記住,通過(guò)屢次上機(jī),就能自然、熟練地掌握語(yǔ)法規(guī)定。2了解和熟悉C語(yǔ)言程序開發(fā)環(huán)境。熟悉一兩種環(huán)境計(jì)算機(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)的性能和

3、使用方法;2復(fù)習(xí)和掌握與本實(shí)驗(yàn)有關(guān)的教學(xué)容;3準(zhǔn)備好上機(jī)所用的程序,切忌自己不思考、不編制程序或抄襲別人的程序;4準(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)康暮鸵?實(shí)驗(yàn)一C語(yǔ)言上機(jī)根底3實(shí)驗(yàn)二根本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式6實(shí)驗(yàn)三輸入、輸出函數(shù)的使用8實(shí)驗(yàn)四選擇結(jié)構(gòu)程序設(shè)計(jì)10實(shí)驗(yàn)五循環(huán)結(jié)構(gòu)程序設(shè)計(jì)11實(shí)驗(yàn)六數(shù)組14實(shí)驗(yàn)七簡(jiǎn)單函數(shù)15實(shí)驗(yàn)八高級(jí)函數(shù)16實(shí)驗(yàn)九指針17實(shí)驗(yàn)十自定義數(shù)據(jù)、文件19附1:c語(yǔ)言函數(shù)庫(kù)20實(shí)驗(yàn)一C語(yǔ)言上機(jī)根底特別

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

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

6、“確定。輸入源程序:在彈出的文件編輯窗口中輸入下面的源程序:#includevoidmain()printf(Hello,World!n);printf(WelcometotheClanguageworld!n);printf(Everyonehasbeenwaitingfor.n);編譯:用“編譯菜單的“編譯命令項(xiàng)對(duì)源文件sy11.cpp進(jìn)展編譯,如果程序有語(yǔ)法或語(yǔ)義錯(cuò)誤,在屏幕下面的窗口會(huì)出現(xiàn)錯(cuò)誤信息;這時(shí)候要修改源程序、保存后重新編譯。直到修改了全部錯(cuò)誤,屏幕下面的窗口會(huì)出現(xiàn)下面的信息:Configuration:sy1-Win32Debugm做典過(guò)編譯,生成了目標(biāo)程序sy11.obj。

7、即11.cpp調(diào)試:接下來(lái)進(jìn)展調(diào)試,操作如以下圖所示。唯成制孟敝行商部帥sj1.exe。syl-創(chuàng)天中文VC+-syll.cpp0文件遍輯查看工程編譯工旦窗口幫助筐咨R#|瞪原山Global引Workspacesyl:1*is5111linniirillmilaM-Him-囹sy1fiks司_JSourceFilesfflsyll.cpp:IHeaderFiles1ResourceFile構(gòu)件即1exe圖重建全部拙構(gòu)件清潔開蛤調(diào)遠(yuǎn)CE+F7F7調(diào)鼠程序遠(yuǎn)強(qiáng)連接!執(zhí)行sylexeCtrl+F5成置可遠(yuǎn)行配置配置.簡(jiǎn)檔,運(yùn)行:最后用編譯菜單的!執(zhí)行sy1.exe命令項(xiàng).exe。運(yùn)行結(jié)果如下:運(yùn)行可

8、執(zhí)行程序文件sy錦譯工具窗口Ctr!+F7踢牛珂由重建全部批惻.,清港F7開蛤調(diào)試卜調(diào)試程序遠(yuǎn)程侄接,也行sl.exeCtrl+FS敢置可遠(yuǎn)行配置.,.配置呻BlT45tepIritaFit4RuntopurserCtrl+FlOAttachtoProces5.(8)程序可能出錯(cuò),要學(xué)會(huì)調(diào)試修改,詳見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行*/printf(%c%cn”,c1,c2);在此根底上:在程序

9、最后增加一個(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);printf(ttb%c%cn,c4,c5);在上機(jī)前先用人工分析程序,寫出應(yīng)得結(jié)果,上機(jī)后將二者對(duì)照。一. 三案例項(xiàng)目1.輸出你自己的生日,拼

10、音的首字母,用浮點(diǎn)型數(shù)輸出你的年齡(如:20.8)實(shí)驗(yàn)二根本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式實(shí)驗(yàn)?zāi)康模?. 練習(xí)使用根本類型的變量進(jìn)展編程二. 練習(xí)使用C的運(yùn)算符實(shí)驗(yàn)容:1 .實(shí)驗(yàn)要求:熟練使用運(yùn)算符+,-.分析與設(shè)計(jì):求余運(yùn)算符要求兩個(gè)操作數(shù)都必須是整數(shù);+和-要看活是先使用還是先自增減2. 源代碼:程序1:取出一個(gè)三位整數(shù)的各個(gè)位,并輸出main()/缺少#include(intx=123;charc1,c2,c3;c1=x%10;c2=x/10%10;c3=x/100;printf(d,%d,%dn,c3,c2,c1);/,輸入法錯(cuò)誤運(yùn)行結(jié)果為:1, 2,3程序2:練習(xí)自增和自減運(yùn)算符的使用#i

11、ncludemain()(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、mn各變量的值;然后分別作以下改動(dòng)并運(yùn)行:將第5、6行改為如下以后再運(yùn)行:m=i+;n=+j;將程序改為:#includemain()inti,j;i=8;j=10;printf(%d,%dn”,i+,j+);/*第5行*/在的根底上,將第5行printf語(yǔ)句改為:printf(%d,%dn,+i,+j);再將printf語(yǔ)句改為:printf(%d,%d,%d,%dn,i,j,i+,j+);/先執(zhí)行

12、所有的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);1. 案例項(xiàng)目(參考附1:c語(yǔ)言函數(shù)庫(kù))隨機(jī)生成2個(gè)099之間的正整數(shù),作為你2門課的成績(jī)。平均成績(jī)(如果結(jié)果是整數(shù),要求轉(zhuǎn)換成浮點(diǎn)數(shù)),計(jì)算所有成績(jī)的標(biāo)準(zhǔn)差要求必須用數(shù)學(xué)庫(kù)函數(shù)rand(),sqrt。標(biāo)準(zhǔn)差公式如下:修設(shè)有一蟾致值X.*,*.Xn皆為實(shí)數(shù)),其平均值算術(shù)平均值)為小公式切圖1標(biāo)準(zhǔn)差也梭稱為標(biāo)準(zhǔn)偈差.或者實(shí)受標(biāo)在羞,公式為。二IN】i=l用數(shù)學(xué)庫(kù)函數(shù)實(shí)現(xiàn)你學(xué)過(guò)的數(shù)學(xué)

13、公式,使用的庫(kù)函數(shù)越多,考核分?jǐn)?shù)越高實(shí)驗(yàn)三輸入、輸出函數(shù)的使用一. 實(shí)驗(yàn)?zāi)康模憾? 熟練使用格式輸出函數(shù)printf()和格式輸入函數(shù)scanf()實(shí)驗(yàn)容:1. 實(shí)驗(yàn)要求:格式輸入函數(shù)scanf()和格式輸出函數(shù)printf()的使用2.分析與設(shè)計(jì):輸入函數(shù)中的普通字符需要原樣輸入,并注意分隔符的使用;輸出函數(shù)中的格式控制符和輸出項(xiàng)數(shù)要對(duì)應(yīng)。2. 源代碼:程序1:為使得a=1,b=2,c=A,d=5.5,在鍵盤上如何輸入?#includemain()inta,b;charc;floatd;scanf(“a=%db=%d,&a,&b);scanf(“c%en,&c,&d);程序在運(yùn)行時(shí),輸入:a

14、=1b=2A5.50程序2:判斷下面程序的運(yùn)行結(jié)果。main()intx=3,y=2,z=1;printf(d%dn,(+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é)果。#includemain()(inta;floatb;charc;scanf(%d,%f,%c”,&a,&b,&c);printf(a=%dn”,a);printf(b=%fn”,b);printf(c=%cn”,c);程序4:指出以下程序的錯(cuò)

15、誤并改正,并上機(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)輸入自己的生日,拼音的首字母,年齡(如: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)的菜單,如

16、下:C:UsarDesktpCi言改童數(shù)材K改量,.C主廁i,請(qǐng)選擇功能5亍我人占除.顯查錄氟鍵入功能刖的數(shù)字后,按姓實(shí)驗(yàn)四選擇結(jié)構(gòu)程序設(shè)計(jì)一. 實(shí)驗(yàn)?zāi)康模?.熟練掌握分支結(jié)構(gòu)if語(yǔ)句與其嵌套二. 2.掌握分析具體問(wèn)題的方法實(shí)驗(yàn)容:1.實(shí)驗(yàn)要求:利用if語(yǔ)句和scanf函數(shù)模擬簡(jiǎn)單的ATM取款機(jī)界面2. 分析與設(shè)計(jì):用戶先輸入密碼,密碼正確后,可以進(jìn)展的操作,如查詢,取款等。3. 源代碼:模擬ATMX款機(jī)界面#include/#includemain()intpassword,op,number=0,count=1000,n=0;printf(pleaseinputpassword:);sca

17、nf(%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(nwelcome!Pleasechoiceoneoperate:(1,2,3)n);printf(1:countn2:getmoneyn3:returnn);scanf(%d,&op);/*輸入一種操作*/switch(

18、op)case1:printf(nyourcountis%d.n,count);gotoloop;/*查詢*/case2:printf(npleaseinputcountthatyouwanttoget:);scanf(%d,&number);if(numbercount|number0)printf(nerror);elseprintf(nnow,youcantakemoney!);count-=number;gotoloop;/*取款*/case3:break;/*返回*/default:printf(noperateerror!);gotoloop;1. 案例項(xiàng)目輸入3門課的成績(jī),并輸出

19、所有成績(jī)中最大的一門課。用邏輯,關(guān)系運(yùn)算判斷:2. 如果所有成績(jī)中至少有一門課大丁90,那么輸出good;先輸入一個(gè)學(xué)生A的和生日,再輸入一個(gè)學(xué)生B的和生日。用邏輯,關(guān)系運(yùn)算判斷:如果A,B的,生日都是正確的,那么輸出yes,否那么輸出no。3. 根據(jù)實(shí)驗(yàn)二中的“學(xué)生管理系統(tǒng)的菜單,如果輸入1,那么輸出“顯示所有學(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)

20、的方法。3掌握在程序設(shè)計(jì)中用循環(huán)的方法實(shí)現(xiàn)各種算法(如窮舉、選代、遞推等)。4掌握選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)的嵌套。二實(shí)驗(yàn)容1程序分析下面是一個(gè)計(jì)算e的近似值使誤差小于給定的a的程序。#includemain()doublee=1.0,x=1.0,y,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í),能分別使

21、程序按下面的要求運(yùn)行:i 不進(jìn)入循環(huán);delta1ii 只循環(huán)一次;delta1/2iii 只循環(huán)兩次;1/2delta1/6iv 進(jìn)入死循環(huán)(程序?qū)⒂肋h(yuǎn)循環(huán)下去)。Delta=0v 為了能知道程序循環(huán)了多少次,應(yīng)該在程序中增加一條什么樣的語(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

22、/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;b=t;printf(%fn”,s);要求:跟蹤執(zhí)行,觀察s、t、a、b的變化。方法:使用功能鍵F10單步跟蹤執(zhí)行程序,可以在監(jiān)視窗口設(shè)置要觀察的變量或表達(dá)式。停止調(diào)試運(yùn)行的程序單步運(yùn)行此處.案例項(xiàng)目1. 輸入3門成績(jī),用for循環(huán)求平均值。2, 提示:每次循環(huán)輸入一門成績(jī),并將其參加總和用do-while編寫一個(gè)循環(huán)程序,用戶不停的進(jìn)展“學(xué)生管理系統(tǒng)菜單的選擇,直到用戶輸入數(shù)字0。運(yùn)行效果圖如下:實(shí)驗(yàn)六數(shù)組實(shí)驗(yàn)?zāi)康?

23、掌握一維數(shù)組和二維數(shù)組的定義、賦值和輸入輸出的方法;2掌握字符數(shù)組和字符串函數(shù)的使用;3掌握與數(shù)組有關(guān)的算法特別是排序算法二、實(shí)驗(yàn)容編程序并上機(jī)調(diào)試運(yùn)行。3個(gè)數(shù)輸出這些整1調(diào)試以下錯(cuò)誤程序,使之具有如下功能:輸入12個(gè)整數(shù),按每行數(shù),最后輸出12個(gè)整數(shù)的平均值。寫出調(diào)試過(guò)程。#include#defineN12main()inti,aN,av;/av=0for(i=0;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+=

24、ai;/av/=N;printf(av=%fN,av);/printf(av=%d”,av)上面給出的程序有錯(cuò)誤和缺陷,請(qǐng)找出程序中的錯(cuò)誤并改正。2. 按照下面算法編一個(gè)程序,將兩個(gè)字符申連接起來(lái),不能用strcat函數(shù)。(1)定義整型變量i、j,字符申s1、s2輸入字符申s1、s2當(dāng)字符申s1尚未完畢,改變字符申s1的下標(biāo),使之到s1完畢處當(dāng)字符申s2尚未完畢,將字符申s2逐個(gè)字符連接到字符申s1的后面為字符申s1添加完畢標(biāo)志輸出連接后的字符申三.案例項(xiàng)目輸入3門成績(jī),并用數(shù)組記錄.在輸入前顯示提示文字“請(qǐng)輸入第i門課成績(jī)。然后用數(shù)組與循環(huán)語(yǔ)句求成績(jī)的均值,并輸出均值,每門課的成績(jī)用二維數(shù)組

25、記錄3個(gè)同學(xué)的所有成績(jī),并輸出所有人的成績(jī)用數(shù)組記錄學(xué)生A的字符申,并輸出。再輸入一個(gè)學(xué)生B的字符申,與A的字符申比擬,如果一樣那么輸出yes,否那么no4(選做)用數(shù)組存放4個(gè)學(xué)生的學(xué)號(hào),用冒泡排序法將學(xué)號(hào)升序放置在原數(shù)組中并輸出數(shù)組數(shù)據(jù)實(shí)驗(yàn)七簡(jiǎn)單函數(shù).實(shí)驗(yàn)?zāi)康模?. 理解函數(shù)的概念和應(yīng)用。2. 掌握無(wú)參無(wú)返回函數(shù)的使用。3. 掌握無(wú)參有返回函數(shù)的使用。1. .案例項(xiàng)目完成主函數(shù)中的以下自定義函數(shù):1) 無(wú)參無(wú)返回的函數(shù)inputInfo():/輸入一個(gè)學(xué)生的信息(name,number,score3)2)無(wú)參無(wú)返回的函數(shù)OutputInfo();/輸出一個(gè)學(xué)生的信息(name,number

26、,score3)3) 無(wú)參有返回的函數(shù)4) 無(wú)參有返回的函數(shù)5) 無(wú)參有返回的函數(shù)Average。:求成績(jī)的均值.Max():求成績(jī)的最大值.Standar():求成績(jī)的方差.6)無(wú)參無(wú)返回的函數(shù)Sort():對(duì)成績(jī)進(jìn)展排序用上述自定義函數(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,sc

27、ore3)/求成績(jī)的均值,并輸出/求成績(jī)最大值,并輸出/求成績(jī)方差,并輸出/對(duì)成績(jī)進(jìn)展排序,并將排序后的成績(jī)輸出實(shí)驗(yàn)八高級(jí)函數(shù)一. 實(shí)驗(yàn)?zāi)康模?. 理解函數(shù)形參和實(shí)參的概念和應(yīng)用。2. 掌握有參無(wú)返回函數(shù)的使用。3. 掌握有參有返回函數(shù)的使用。三.案例項(xiàng)目定義一個(gè)帶參數(shù)并有返回值的函數(shù)Average(intscore3),計(jì)算學(xué)生成績(jī)score3的均值,并將其返回。然后在主程序中調(diào)用Average()求均值,并輸出均值。1. 用一個(gè)數(shù)組Student1000,記錄N個(gè)學(xué)生的學(xué)號(hào)。定義一個(gè)函數(shù)AddStudent(intnumber),向Student數(shù)組中添加一個(gè)學(xué)生的學(xué)號(hào)。然后用該函數(shù)添加3

28、個(gè)學(xué)生的學(xué)號(hào),并輸出所有學(xué)號(hào)。2. 用一個(gè)數(shù)組Student1000,記錄N個(gè)學(xué)生的學(xué)號(hào)。定義一個(gè)函數(shù)modify(inti,intnumber),修改Studenti的學(xué)號(hào)為參數(shù)number,用主程序輸入i和number,調(diào)用modify()函數(shù),并輸出用一個(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)用的含義掌握簡(jiǎn)單變量、數(shù)組和指

29、針作為函數(shù)參數(shù)進(jìn)展傳遞的形式二、實(shí)驗(yàn)容1.運(yùn)行以下程序,寫出運(yùn)行結(jié)果。#includestdio.hmain()(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,&

30、b);pt1=&a;pt2=&b;if(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);1. 案例項(xiàng)目用指針變量記錄一門課的成績(jī)a,并用指針輸出a的值;用指針數(shù)組score記錄兩個(gè)學(xué)生的成績(jī)a3,b3,并用score輸出所有成績(jī).3(選做).輸入學(xué)生課程的數(shù)目,并用指針與動(dòng)態(tài)存分配函

32、數(shù)malloc()記錄一個(gè)學(xué)生的成績(jī):pp2811)函數(shù)malloc實(shí)驗(yàn)十自定義數(shù)據(jù)、文件實(shí)驗(yàn)?zāi)康?掌握結(jié)構(gòu)體類型的概念和定義方法與使用。1. 2掌握指向結(jié)構(gòu)體變量的指針變量的概念和應(yīng)用二案例項(xiàng)目完成以下自定義函數(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(structStudent_Infos),向Student數(shù)組中添加一個(gè)學(xué)生的信息

33、。3) 定義一個(gè)函數(shù)find(intnumber)查找指定學(xué)號(hào)number的學(xué)員,并返回該學(xué)生在Student1000數(shù)組中的下標(biāo)i,如果指定學(xué)號(hào)不存在,返回-1;定義一個(gè)函數(shù)voidquery(intnumber):用find(intnumber)函數(shù)根據(jù)學(xué)號(hào)查找學(xué)生在Student1000數(shù)組中的下標(biāo)i,并顯示該學(xué)員的所有信息。定義一個(gè)函數(shù)voiddel(intnumber),根據(jù)學(xué)號(hào)查找學(xué)生,并刪除該學(xué)員信息定義一個(gè)函數(shù)voidmodify(intnumber),根據(jù)學(xué)號(hào)查找并修改學(xué)員的信息用上述自定義函數(shù)完成主函數(shù)的編寫/定義一個(gè)結(jié)構(gòu)體數(shù)組Student_InfoStudent1000

34、,main()/用AddStudent函數(shù)添加3個(gè)學(xué)生的信息,并輸出所有學(xué)生的信息。/用query()函數(shù)查找一個(gè)學(xué)生,并輸出該有學(xué)生的信息。/用del()函數(shù)刪除一個(gè)學(xué)生,并顯示刪除后所有學(xué)生的信息1. /用modify()函數(shù)修改一個(gè)學(xué)生,并顯示modify后所有學(xué)生的信息附1:c語(yǔ)言函數(shù)庫(kù)abs、labs、fabs:求絕對(duì)值函數(shù)acos:反余弦函數(shù)asin:反正弦函數(shù)atan:反正切函數(shù)atan2:反正切函數(shù)ceil:向上舍入函數(shù)cos:余弦函數(shù)cosh:雙曲余弦函數(shù)div、ldiv:除法函數(shù)exp:求e的x次籍函數(shù)floor:向下舍入函數(shù)fmod:求模函數(shù)frexp:分解浮點(diǎn)數(shù)函數(shù)hy

35、pot:求直角三角形斜邊長(zhǎng)函數(shù)Idexp:裝載浮點(diǎn)數(shù)函數(shù)log、log10:對(duì)數(shù)函數(shù)modf:分解雙精度數(shù)函數(shù)powApow1Q指數(shù)函數(shù)rand:產(chǎn)生隨機(jī)整數(shù)函數(shù)sin:正弦函數(shù)sinh:雙曲正弦函數(shù)sqrt:開平方函數(shù)srand:設(shè)置隨機(jī)時(shí)間的種子函數(shù)tan:正切函數(shù)tanh:雙曲正切函數(shù)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ì)值

36、;函數(shù)doublefabs(doublex);是求浮點(diǎn)數(shù)x的絕對(duì)值。返回值:返回計(jì)算結(jié)果。例程如下:計(jì)算整數(shù)的絕對(duì)值。#includeintmain(void)intx=-56;printf(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)longx=-12345678L;printf(number:%ldabsolutevalu

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

38、28.000000absolutevalue:128.000000acos:反余弦函數(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#includeintmain(void)doubleresult;doublex=1.0;result=acos(x);printf(arccos%lf=%lfn,x,result);return0;例程說(shuō)明:本例程應(yīng)用函數(shù)acos計(jì)算1.0的反

39、余弦值,即:arccosl。返回計(jì)算結(jié)果的雙精度值。本例程的運(yùn)行結(jié)果是:3. arccos1.000000=0.000000asin:反正弦函數(shù)函數(shù)原型:doubleasin(doublex);頭文件:#include是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:求x的反正弦值,這里,x為弧度,x的定義域?yàn)?1.0,1.0,arcsinx值域?yàn)?兀/2,+兀/2。返回值:計(jì)算結(jié)果的雙精度值。例程如下:求arcsinx。#include#includeintmain(void)doubleresult;doublex=1.0;result=asin(x);printf(arcsin%lfis%lfn”,x,res

40、ult);return(0);例程說(shuō)明:本例程應(yīng)用函數(shù)asin計(jì)算1.0的反正弦值,即:arcsin1。返回計(jì)算結(jié)果的雙精度值。本例程的運(yùn)行結(jié)果是:4. arcsin1.000000is1.570796atan:反正切函數(shù)函數(shù)原型:doubleatan(doublex);頭文件:#include是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:求x的反正切值,這里,x為弧度,x的定義域?yàn)?-00,+8),arctanx的值域?yàn)?-兀/2,+兀/2)。返回值:計(jì)算結(jié)果的雙精度值。例程如下:求arctanx。#include#includeintmain(void)(doubleresult;doublex=1.0;r

41、esult=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ù)原型:doubleatan2(doubley,doublex);頭文件:#include是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:求y/x的反正切值。返回值:計(jì)算結(jié)果的雙精度值。例程如下:求arctan(x/y)。#include#includeintmain(void)doubleresult;do

42、ublex=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é)果的雙精度值。本例程的運(yùn)行結(jié)果是:6. arctan0.500000=0.463648ceil:向上舍入函數(shù)函數(shù)原型:doubleceil(doublex);頭文件:#include是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:將雙精度數(shù)x向上舍入,即:取它的最大整數(shù)。例如:ceil(123.400000)=124.000000。返回值:返回計(jì)算結(jié)果。例程

43、如下:數(shù)值的向上舍入。#include#includeintmain(void)doublenum=123.400000;doubleup;up=ceil(num);printf(Theoriginalnumber%lfn,num);printf(Thenumroundedup%lfn,up);return0;例程說(shuō)明:本例程通過(guò)函數(shù)ceil將雙精度數(shù)123.400000向上舍入,得到的結(jié)果為124.000000,并在屏幕上顯示運(yùn)算結(jié)果。本例程的運(yùn)行結(jié)果為:7. Theoriginalnumber123.400000Thenumroundedup124.000000cos:余弦函數(shù)函數(shù)原型:d

44、oublecos(doublex);頭文件:#include是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:求x的余弦值,這里,x為弧度。返回值:計(jì)算結(jié)果的雙精度值。例程如下:求cosx。#include#includeintmain(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é)果是:8. cos(PI)is-1.000000cosh:雙曲余弦函數(shù)函數(shù)原型:dlublecosh(doublex)

45、;頭文件:#include是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:計(jì)算x的雙曲余弦值。其中ch(x)=(ex+e-x)/2。返回值:計(jì)算結(jié)果的雙精度值。例程如下:求x的雙曲余弦值ch(x)。#include#includeintmain(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é)果是:9. ch(0.500000)=1.127626div、ldiv:除法函數(shù)函數(shù)原型

46、:div_tdiv(intnumber,intdenom);ldiv_tldiv(longlnumer,longldenom);頭文件:#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#includediv_tx;intmain(void)(x=div(11,5);printf(11div5=%dremainder%dn,x.quot

47、,x.rem);return0;例程說(shuō)明:本例程通過(guò)div函數(shù)將11和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)體,定義如下:typedefstruct(intquot;/*商*/intrem;/*余數(shù)*/div_t;其中包含兩個(gè)域:商和余數(shù)。div函數(shù)將兩個(gè)整數(shù)相除,返回一個(gè)div_t類型的值。該函數(shù)的運(yùn)行結(jié)果是:11div2=5remainder1例程如下:兩長(zhǎng)整數(shù)相除,求其商和余數(shù)。#include#includeldiv_

48、tlx;intmain(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)體,定義如下:typedefstructlongquot;longrem;ldiv_t;公中包含兩個(gè)域:商和余數(shù)。ldiv函數(shù)將兩個(gè)長(zhǎng)整數(shù)相除,返回一個(gè)ldiv_t類型的值。該函數(shù)的運(yùn)行結(jié)果是:10. 20000

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

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

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

52、下:計(jì)算兩數(shù)的余數(shù)。#include#includeintmain(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.580000和2.600000的模,其結(jié)果為:2.180000。本例程的運(yùn)行結(jié)果為:13. 12.580000/2.600000:2.180000frexp:分解浮點(diǎn)數(shù)函數(shù)函數(shù)原型:doublefrexp(doubleval,int*exp);頭文件:#include是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:把浮點(diǎn)數(shù)或雙精度數(shù)val分解為數(shù)字局部尾數(shù)局部x和以2為底的指數(shù)局部n。即val=

溫馨提示

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