版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C語言程序設(shè)計實驗指導(dǎo)書電氣與電子工程學(xué)院重要說明:上機實驗?zāi)康暮鸵骾一實驗報告要求每次實驗,提交一份實驗報告。具體格式見“實驗報告格式范文”將代碼和運行截圖粘貼到“C改革實驗指導(dǎo)書24學(xué)時”word的相應(yīng)位 置。如下圖,程序運行的截圖如下:旨-C:UserswdDeskto卩垃譴言改革救材垃改華匚家例改30鵬學(xué)生信息營酩野請輸A.要查詢的學(xué)生的學(xué)號律號 姓名語文數(shù)學(xué)英語平均分13456.6778-023.0285.7按任意鍵進入主目錄-15 電 7 班企且 1 實驗扌艮告.doc2二上機實驗的目的上機實驗的目的,絕不僅僅是為了驗證教材和講課的內(nèi)容,或者驗證自己所編程序正確 與否。學(xué)習(xí)程序語
2、言,上機實驗的目的如下:1加深對講授內(nèi)容的理解,尤其是一些語法規(guī)定,光靠課堂講授,既枯燥無味又難以記 住,通過多次上機,就能自然、熟練地掌握語法規(guī)定。2了解和熟悉C語言程序開發(fā)環(huán)境。 熟悉一兩種環(huán)境 (計算機系統(tǒng)的軟件和硬件條件) 再遇到其他的系統(tǒng)時便會觸類旁通,很快學(xué)會。3學(xué)會上機調(diào)試程序,也就是善于發(fā)現(xiàn)程序中的錯誤,并且能很快地排除這些錯誤,使 程序能夠正確地運行。要真正掌握計算機應(yīng)用技術(shù),就不僅應(yīng)當了解和熟悉有關(guān)理論和方法, 而且要求自己動手實踐能力強。4在做實驗時千萬不要在程序通過后就認為萬事大吉,完成任務(wù)了,應(yīng)當在通過的程序 上做一些調(diào)試和修改,看看會得到什么結(jié)果。多動腦筋思考,將會
3、對你有很大幫助。三上機實驗前的準備工作1了解所用的計算機系統(tǒng)的性能和使用方法;2復(fù)習(xí)和掌握與本實驗有關(guān)的教學(xué)內(nèi)容;3準備好上機所用的程序,切忌自己不思考、不編制程序或抄襲別人的程序;4準備好調(diào)試和運行時所需的數(shù)據(jù)。四上機實驗的步驟1調(diào)出C語言編譯系統(tǒng),進入C語言工作環(huán)境;2輸入自己編制好的程序;3檢查輸入是否有錯,及時更正;4進行編譯和連接;5運行程序,分析結(jié)果。3重要說明:上機實驗?zāi)康暮鸵?0實驗一C語言上機基礎(chǔ).4實驗二基本數(shù)據(jù)類型、運算符和表達式.7實驗三輸入、輸出函數(shù)的使用.9實驗四選擇結(jié)構(gòu)程序設(shè)計.11實驗五循環(huán)結(jié)構(gòu)程序設(shè)計.13實驗六數(shù)組.16實驗七簡單函數(shù).18實驗八高級函數(shù).
4、19實驗九指針.20實驗十自定義數(shù)據(jù)、文件.22附1:c語言函數(shù)庫.244實驗一 C 語言上機基礎(chǔ)特別聲明:為了教學(xué)的便捷以及學(xué)生自學(xué)的方便,我們選擇了便于下載和安裝的MicrosoftVisual C+ 6.0軟件作為編譯環(huán)境。但在實際工作中使用的編譯環(huán)境應(yīng)該是visual studio系列軟件(如visual studio 2010)。所以同學(xué)們課下必須 自己百度(visualstudio 2010使用手冊),學(xué)習(xí)visual studio的基本用法!PS:輸入法必須切換成英文輸入法! !一實驗?zāi)康?熟悉C語言運行環(huán)境-Microsoft Visual C+ 6.0中文版。2掌握C語言程序
5、的書寫格式和C語言程序的結(jié)構(gòu),初步了解C源程序的特點。3掌握C語言上機步驟,了解如何編輯、編譯、調(diào)試和運行一個C程序的方法。4掌握C語言數(shù)據(jù)類型,熟悉如何定義一個整型、字符型和實型的變量,以及對他們賦 值的方法。二實驗內(nèi)容1C語言上機步驟 開機,啟動Microsoft Visual C+ 6。 建立工程文件:在“文件”菜單中選擇“新建”命令項,在彈出的“新建”對話框 的“工程”選項卡中選擇Win 32 Con sole Applicatio n”選項,在工程”框中輸入工程文件名sy1,在“c:位置”下拉框中輸入或選擇文件夾,單擊“確定”;在以下彈出的兩個對話 框中分別單擊命令按鈕“完成”和“確
6、定”。 建立C+源文件:在“工程”菜單中選擇“添加到工程”一“新建”命令項,在彈出 的“新建”對話框的“文件”選項卡中選擇“C+ Source File”,在右邊的“文件”框中輸入文件名sy11后單擊“確定”。 輸入源程序:在彈出的文件編輯窗口中輸入下面的源程序:#in clude void mai n() printf( Hello,World!n ”);printf( Welcome to the C Ian guage world!n);printf( Every one has bee n wait ing for.n);5 編譯:用“編譯”菜單的“編譯”命令項對源文件syll.cpp
7、進行編譯,如果程序有語法或語義錯誤,在屏幕下面的窗口會出現(xiàn)錯誤信息;這時候要修改源程序、保存后重新編 譯。直到修改了全部錯誤,屏幕下面的窗口會出現(xiàn)下面的信息:Configuration *利1 - Win32 Debugsy11.obj - 0 error(s), D uarning(s)IL |H J._ ”T” syl -創(chuàng)天中ZStVC+ - yll.tpp文忡盤揖查看插入工程編譚工貝窗口幫助Compiling51/11Tcpp膽 OS Q1 GlobalzJ|(AI1g迪件syl.ewe因重建全部批構(gòu)件F7Workspaccf syj! 1-53 syl files$ _j Sourc
8、e Files國syl1 .cpp口Header Files_| Resource File牙始調(diào)試調(diào)試程芋遠程連接! syl.exe Ctrl+F5啟潼可遠行配直配養(yǎng)篋檔小( Step IntoFU* Runtfi Cursor Ctrl+FIDattach h? Processn,.6PS: 輸入法必須切換成英文輸入法!2完成下面程序的運行2)輸入并運行下面的程序,運行后記錄并分析結(jié)果。#include main() char c1,c2; /*第2行*/ c1=97;c2=98; /*第3行*/ printf ( %c %cn ,c1,c2);在此基礎(chǔ)上: 在程序最后增加一個語句,再運行
9、,并分析結(jié)果。printf ( %d %dn , c1, c2);/a c 97 98 將第2行改為:int c1,c2;再次運行,并分析結(jié)果。a c 97 98 再將第3行改為:c1=305;c2=340; / 1 t 305 340 N位二進制轉(zhuǎn)成8位的char再使之運行,分析運行結(jié)果。2輸入并運行下面的程序#include main() char c1= a,c2=b,c3=c,c4=101,c5= 116 ; 運行:最后用“編譯”菜單的“!執(zhí)行sy1.exe”命令項運行可執(zhí)行程序文件sy.exe。運行結(jié)果如下:阿E:sy 1 Debugsyi.exe*He LLu.Uorld!Uele
10、one to the C language world!Everyone h技 wbeen waiting for.Ppess any key to continue耐I.縮譯XM窗口藉肋砂編桂l+F7拘件syl.exe F7全部批構(gòu)件漬潔開躺調(diào)試執(zhí)行釘l,e汨Ctrl+FE蝕置可遠行配萱配養(yǎng)債檔(8)程序可能出錯,要學(xué)會調(diào)試修改,詳見VC+6.0使用方法中的7.調(diào)試程序7printf( a%c b%ctc%ctabcn ,c1, c2, c3); printf( ttb%c%cn , c4, c5);在上機前先用人工分析程序,寫出應(yīng)得結(jié)果,上機后將二者對照。三 案例項目1.輸出你自己的生日,
11、姓名拼音的首字母,用浮點型數(shù)輸出你的年齡實驗二 基本數(shù)據(jù)類型、運算符和表達式一實驗?zāi)康模?練習(xí)使用基本類型的變量進行編程2練習(xí)使用C的運算符 二實驗內(nèi)容:1實驗要求 :熟練使用運算符 (%,+,-)2分析與設(shè)計 : 求余運算符要求兩個操作數(shù)都必須是整數(shù);+和-要看 清是先使用還是先自增(減)3源代碼: 程序1:取出一個三位整數(shù)的各個位,并輸出main()/缺少#includeint x=123; char c1,c2,c3;c1=x%10; c2=x/10%10; c3=x/100; printf(“%n”,c3,c2,c1); /“”,輸入法錯誤運行結(jié)果為:1,2,3程序2:練習(xí)自增和自減運
12、算符的使用#include main() int i,j,m,n;i=8;j=10;m=+i;/*第5行*/n=j+;/*第6行*/printf( %d,%d,%d,%dn ,i,j,m,n);運行程序,注意i、j、m、n各變量的值;然后分別作以下改動并運行: 將第5、6行改為如下以后再運行:m=i+;n=+j;(如:20.8)8將程序改為:#i nclude main () int i,j;i=8;j=10;printf( %d,%dn ,i+,j+);/*第5行*/ 在的基礎(chǔ)上,將第5行printf語句改為:printf( %d,%dn ,+i,+j);再將printf語句改為:print
13、f( %d,%d,%d,%dn ,i,j,i+,j+);/先執(zhí)行所有的i輸出操作,再執(zhí)行i+1將程序改為:#i nclude main () int i,j,m=0,n=0;i=8;j=10;m+=i+; n 二-j;printf(i=%d,j=%d,m=%d,n=%din ,i,j,m,n);三案例項目(參考附1:c語言函數(shù)庫)1.隨機生成2個099之間的正整數(shù),作為你2門課的成績。平均成績(如果結(jié)果是整數(shù),要求轉(zhuǎn)換成浮點數(shù)),計算所有成績的標準差 要求必須用數(shù)學(xué)庫函數(shù)rand(),sqrt。標準差公式如下:標準計算公式:亙設(shè)有一組數(shù)直冷&冷.xn(皆為實數(shù)),其平均恒(.轉(zhuǎn).術(shù)平均
14、備)為小 公式如圖仁標準差也被稱為標準幣差,或者實驗標準差,公式為二1192.用數(shù)學(xué)庫函數(shù)實現(xiàn)你學(xué)過的數(shù)學(xué)公式,使用的庫函數(shù)越多,考核分數(shù)越高實驗三輸入、輸出函數(shù)的使用一.實驗?zāi)康模菏炀毷褂酶袷捷敵龊瘮?shù)printf()和格式輸入函數(shù)seanf()二.實驗內(nèi)容:1.實驗要求:格式輸入函數(shù)seanf()和格式輸出函數(shù)printf()的使用2分析與設(shè)計:輸入函數(shù)中的普通字符需要原樣輸入,并注意分隔符的使用;輸出函數(shù)中的格式控制符和輸出項數(shù)要-對應(yīng)。3.源代碼:程序1:為使得a=1,b=2,e=A,d=5.5,在鍵盤上如何輸入?#i nclude mai n()int a,b;char c;float
15、 d;scanf(“a=%d b=%d,&a,&b);scanf(“%c %e n”,&c,&d);程序在運行時,輸入:a=1 b=2A 5.5 0程序2:判斷下面程序的運行結(jié)果。mai n()int x=3,y=2,z=1;printf(“%d n”,(+x,y+),z+2);運行結(jié)果:2,3分析得到此結(jié)果的原因。程序3:以下程序的功能是從鍵盤輸入一個整型數(shù),一個實型數(shù)和一個字符型數(shù),并把他們在屏幕上輸出。完成以下填空,并把程序調(diào)通,寫出當輸入為45,34.5,A回車時程序的運行結(jié)果。#in clude main () int a; float b; char
16、 c;scanf(%d,%f,%c,&a, &b, &cprintf(a=%dn ,a);printf(b= %fn ,b);printf(c=%cn ,c);10程序4:指出以下程序的錯誤并改正,并上機把程序調(diào)通。#in elude main () int a;scanf( %f ,a); scanf(%d ,a);printf(a=%f, a);/ printf(a=%d, a);char c;c=A;c=A;printf(%f,c) printf(%c,c);三案例項目1.用scanf, printf進行如下的輸入和輸出:1)輸入自己的生日,姓名拼音的首字母,年齡
17、(如:20.8),然后輸出。注意使用fflush(stdin)函數(shù)清除緩存區(qū)域,pp89,例4-6第15行2)輸入自己上學(xué)期所有課程的成績(不一定跟真實成績一模一樣),計算平均 成績和標準差,將其輸出。3)輸出“學(xué)生管理系統(tǒng)”的菜單,如下:11實驗四 選擇結(jié)構(gòu)程序設(shè)計一實驗?zāi)康模?熟練掌握分支結(jié)構(gòu)if語句及其嵌套2掌握分析具體問題的方法 二實驗內(nèi)容:1實驗要求:利用if語句和seanf函數(shù)模擬簡單的ATM取款機界面2分析與設(shè)計:用戶先輸入密碼,密碼正確后,可以進行帳戶的操作,如查詢,取款等。3源代碼:模擬ATM取款機界面#inelude /#inelude main()int password
18、,op,number=0,eount=1000,n=0; printf(please input password:);seanf(%d,&password);while(password!=1234)/*有三次輸入密碼的機會*/ n+;if(n=3)printf(you have input 3,ean not input again!n);geteh();return;printf(password error!please input again:); seanf(%d,&password);loop: printf(nweleome! Please ehoiee one
19、 operate:(1,2,3)n); printf(1:eountn2:get moneyn3:returnn); seanf(%d,&op); /*輸入一種操作*/ switeh(op)ease 1:printf(nyour eount is %d.n,eount);goto loop;/*帳戶查詢*/ease 2:printf(n please input eount that you want to get:); seanf(%d,&number);if(numbereount|number0)printf(nerror);else printf(nnow ,you e
20、an take money!);eount-=number; goto loop;12/*取款*/case 3:break;/*返回*/default:pri ntf(n operate error!);goto loop;三案例項目1.輸入3門課的成績,并輸出所有成績中最大的一門課。用邏輯,關(guān)系運算判斷: 如果所有成績中至少有一門課大于90,則輸出good;2.先輸入一個學(xué)生A的姓名和生日,再輸入一個學(xué)生 關(guān)系運算判斷:如果A,B的姓名,生日都是正確的,3.根據(jù)實驗二中的“學(xué)生管理系統(tǒng)”的菜單,如果輸入1,則輸出“顯示所有學(xué) 員信息”;如果輸入2則輸出“查詢學(xué)員信息”;如果輸如3,貝 U 0
21、 0 0 0 0 用switch()語句完成,運行效果圖如下:B的姓名和生日。用邏輯,則輸出yes否則輸出no13實驗五 循環(huán)結(jié)構(gòu)程序設(shè)計一 目的和要求1掌握在設(shè)計條件型循環(huán)結(jié)構(gòu)時,如何正確地設(shè)定循環(huán)條件,以及如何正確地控制計數(shù) 型循環(huán)結(jié)構(gòu)的次數(shù)。2熟悉用while語句,do-while語句和for語句實現(xiàn)循環(huán)的方法。3掌握在程序設(shè)計中用循環(huán)的方法實現(xiàn)各種算法(如窮舉、選代、遞推等)。4掌握選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)的嵌套。實驗內(nèi)容1程序分析F面是一個計算e的近似值(使誤差小于給定的S)的程序。#include main() double e=1.0,x=1.0,y,delta;int i=1;pri
22、ntf( 請輸入給定的誤差: );scanf( %lf ,&delta);y=1/x;while(y=delta) e=e+y;i+;x=x*i;y=1/x;printf( 計算結(jié)果是:%12.10lfn ,e); 閱讀上面的程序,寫出程序所依據(jù)的計算公式。1+1/(1*2)+1/2*3+1/6*4 當輸入的delta是什么值時,能分別使程序按下面的要求運行:i不進入循環(huán);delta1ii只循環(huán)一次;delta1/214iii只循環(huán)兩次;1/2delta1/6iv進入死循環(huán)(程序?qū)⒂肋h循環(huán)下去)。Delta=0V為了能知道程序循環(huán)了多少次,應(yīng)該在程序中增加一條什么樣的語句?printf
23、( %dn ,i); 原程序中while語句中的y=delta,分別換成ydelta,y=delta,ydelta,y=detax觀察程序運行將會有什么變化。 把程序中的while結(jié)構(gòu)改寫成do-while結(jié)構(gòu),再運行程序,說明兩種結(jié)構(gòu)的區(qū)別。 將程序改成用for循環(huán)結(jié)構(gòu),計算前50項,并運行程序,寫出運行結(jié)果。2有一數(shù)列:2/1,3/2,5/3,8/5,求出這個數(shù)列的前10項之和。#in clude main () int n,t;float a=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í)
24、行,觀察s、t、a、b的變化。方法:使用功能鍵F10單步跟蹤執(zhí)行程序,可以在監(jiān)視窗口設(shè)置要觀察的變量或表達式。j專倉環(huán)國 g 囪幣眇 P |(ftf |園畫園匡停止調(diào)試運行的程序單步運行此處include For(n=1 ;n1 0;n+)5-S+a/b;aa+b;b=t;15案例項目1輸入3門成績,用for循環(huán)求平均值。 提示:每次循環(huán)輸入一門成績,并將其加入總和2,用do-while編寫一個循環(huán)程序,用戶不停的進行“學(xué)生管理系統(tǒng)”菜單的選擇, 直到用戶輸入數(shù)字0。運行效果圖如下:16實驗六 數(shù)組實驗?zāi)康?掌握一維數(shù)組和二維數(shù)組的定義、賦值和輸入輸出的方法;2掌握字符數(shù)組和字符串函數(shù)的使用;
25、3掌握與數(shù)組有關(guān)的算法(特別是排序算法)二、實驗內(nèi)容編程序并上機調(diào)試運行。1調(diào)試下列錯誤程序,使之具有如下功能:輸入12個整數(shù),按每行3個數(shù)輸出這些整 數(shù),最后輸出12個整數(shù)的平均值。寫出調(diào)試過程。#include #define N 12main() int i,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+=ai;/av/=N;printf(
26、av=%fN ,av); /printf( av=%d ,av)上面給出的程序有錯誤和缺陷,請找出程序中的錯誤并改正。172.按照下面算法編一個程序,將兩個字符串連接起來,不能用strcat函數(shù)。 定義整型變量i、j,字符串s1、s2 輸入字符串s1、s2 當字符串s1尚未結(jié)束,改變字符串s1的下標,使之到s1結(jié)束處 當字符串s2尚未結(jié)束, 將字符串s2逐個字符連接到字符串si的后面 為字符串s1添加結(jié)束標志 輸出連接后的字符串三案例項目1.輸入3門成績,并用數(shù)組記錄.在輸入前顯示提示文字 “請輸入第i門課成績” 然后用數(shù)組與循環(huán)語句求成績的均值,并輸出均值,每門課的成績2.用二維數(shù)組記錄3個
27、同學(xué)的所有成績,并輸出所有人的成績3.用數(shù)組記錄學(xué)生A姓名的字符串,并輸出。再輸入一個學(xué)生B的姓名字符串, 與A的姓名字符串比較,如果一樣則輸出yes,否則no4 (選做)用數(shù)組存放4個學(xué)生的學(xué)號,用冒泡排序法將學(xué)號升序放置在原數(shù)組中 并輸出數(shù)組數(shù)據(jù)18實驗七 簡單函數(shù)實驗?zāi)康模?理解函數(shù)的概念和應(yīng)用。2.掌握無參無返回函數(shù)的使用3.掌握無參有返回函數(shù)的使用。案例項目1.完成主函數(shù)中的下列自定義函數(shù)1)無參無返回的函數(shù)inputInfo( ):/輸入一個學(xué)生的信息(name,number,score 3)2)無參無返回的函數(shù)OutputInfo();/輸出一個學(xué)生的信息(name,number
28、,score 3)Average():求成績的均值. Max():求成績的最大值.Standar()求成績的方差.Sort():對成績進行排序2.用上述自定義函數(shù)完成主函數(shù)的編寫void main() /輸入學(xué)生A的信息(name,number,score 3) /輸出學(xué)生A的信息(name,number,score 3) /求成績的均值,并輸出/求成績最大值,并輸出/求成績方差,并輸出/對成績進行排序,并將排序后的成績輸出/輸入學(xué)生B的信息(name,number,score 3)/輸出學(xué)生B的信息(name,number,score 3) /求成績的均值,并輸出/求成績最大值,并輸出/求成
29、績方差,并輸出/對成績進行排序,并將排序后的成績輸出實驗八 高級函數(shù)一實驗?zāi)康模?理解函數(shù)形參和實參的概念和應(yīng)用。2.掌握有參無返回函數(shù)的使用。3.掌握有參有返回函數(shù)的使用。3)無參有返回的函數(shù)4)無參有返回的函數(shù)5)無參有返回的函數(shù)6)無參無返回的函數(shù)19三案例項目1.定義一個帶參數(shù)并有返回值的函數(shù)Average( int score3),計算學(xué)生成績score3的均值,并將其返回。然后在主程序中調(diào)用Average。求均值,并輸出均值。2.用一個數(shù)組Student1OOO,記錄N個學(xué)生的學(xué)號。定義一個函數(shù)AddStudent(intnumber),向Student數(shù)組中添加一個學(xué)生的學(xué)號。然
30、后用該函數(shù)添加3個學(xué)生的 學(xué)號,并輸出所有學(xué)號。3.用一個數(shù)組Student1OOO記錄N個學(xué)生的學(xué)號。定義一個函數(shù)modify(int i,intnumber)修改Studenti的學(xué)號為參數(shù)number,用主程序輸入i和number,調(diào)用modify()函數(shù),并輸出4.用一個數(shù)組Student1OOO,記錄N個學(xué)生的學(xué)號。定義一個函數(shù)del(int i),刪除Studenti的學(xué)號,并把Student1OOO數(shù)組中的后續(xù)數(shù)據(jù)前移。用主程序輸入i,調(diào) 用del()函數(shù),并輸出刪除后的所有學(xué)號。20實驗九 指針一 實驗?zāi)康?了解指針的概念,學(xué)會定義和使用指針變量。2掌握函數(shù)的值調(diào)用和引用調(diào)用的
31、含義3掌握簡單變量、數(shù)組和指針作為函數(shù)參數(shù)進行傳遞的形式二、實驗內(nèi)容1.運行下列程序,寫出運行結(jié)果。#include stdio.h main() int a5,*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指向小者,以下程序能否實 現(xiàn)此目的?swap(int *p1,int *p2) int *p;p=p1;p1=p2;p2=p;/ int a; a=*p1;*p1=*p2;*p2=a;main() int a,b;
32、 int *pt1,*pt2 ;scanf( %d,%d ,&a,&b);pt1=&a; pt2=&b ;if(ab) swap(pt1,pt2);printf( %d,%d n ,*pt1,*pt2) ;21上機調(diào)試此程序。如果不能實現(xiàn)題目要求,指出原因并修改之。1編寫自定義函數(shù):進行兩個數(shù)據(jù)之間的交換。分析與設(shè)計:使用兩種參數(shù)傳遞方法,進行數(shù)據(jù)的交換,比較下面程序的運行結(jié)果有何不同。程序1:參數(shù)的值傳遞。void swap(int x,int y)int t; t=x; x=y; y=t;printf(“x=%dty=%dn”,x,y);main()int
33、a,b;printf(“please input a,b:”);scanf(“%d,%d”,&a,&b);swap(a,b);printf(“a=%dtb=%dn”,a,b);程序2:參數(shù)的地址傳遞。void swap(int *x,int *y)int t;t=*x; *x=*y; *y=t;printf(“x=%dty=%dn”,*x,*y);main()int a,b;printf(“please input a,b:”);scanf(“%d,%d”,&a,&b); swap(a,b);/ swap(&a,&b);printf(“a=%dt
34、b=%dn”,a,b);三案例項目1用指針變量記錄一門課的成績a,并用指針輸出a的值;2.用指針數(shù)組score記錄兩個學(xué)生的成績a3, b3,并用score輸出所有成績.223 (選做).輸入學(xué)生課程的數(shù)目,并用指針與動態(tài)內(nèi)存分配函數(shù)malloc()記錄一個學(xué) 生的成績:pp2811)函數(shù)malloc實驗十 自定義數(shù)據(jù)、文件實驗?zāi)康?掌握結(jié)構(gòu)體類型的概念和定義方法與使用。2掌握指向結(jié)構(gòu)體變量的指針變量的概念和應(yīng)用 二 案例項目1.完成下列自定義函數(shù):1)定義一個學(xué)生信息結(jié)構(gòu)體Stude nt_lnfo(其成員變量有姓名,學(xué)號,成績數(shù)組,平 均分),并在main()函數(shù)中用結(jié)構(gòu)體變量記錄一個學(xué)生
35、的信息,然后輸出該學(xué)生的所 有信息。2)用一個結(jié)構(gòu)體數(shù)組Student_lnfo Student1000記錄N個學(xué)生的結(jié)構(gòu)體變量。定義 一個函數(shù)AddStudent(struct Student_lnfo s),向Student數(shù)組中添加一個學(xué)生的信 息。3)定義一個函數(shù)find(int number)查找指定學(xué)號number的學(xué)員,并返回該學(xué)生在Student1000擻組中的下標i,如果指定學(xué)號不存在,返回-1;4)定義一個函數(shù)void query(int number):用find(int number)函數(shù)根據(jù)學(xué)號查找學(xué)生在Student1000數(shù)組中的下標i,并顯示該學(xué)員的所有信息。5
36、)定義一個函數(shù)void del(int number),根據(jù)學(xué)號查找學(xué)生,并刪除該學(xué)員信息6)定義一個函數(shù)void modify(int number),根據(jù)學(xué)號查找并修改學(xué)員的信息2.用上述自定義函數(shù)完成主函數(shù)的編寫/定義一個結(jié)構(gòu)體數(shù)組Student_InfoStudent1000, main() /用AddStudent函數(shù)添加3個學(xué)生的信息,并輸出所有學(xué)生的信息。 用query()函數(shù)查找一個學(xué)生,并輸出該有學(xué)生的信息。/用del()函數(shù)刪除一個學(xué)生,并顯示刪除后所有學(xué)生的信息23/用modify()函數(shù)修改一個學(xué)生,并顯示modify后所有學(xué)生的信息24附 1:c 語言函數(shù)庫1.abs
37、、labs、fabs:求絕對值函數(shù)2.acos: 反余弦函數(shù)3.asin: 反正弦函數(shù)4.ata n:反正切函數(shù)5.ata n2:反正切函數(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:分解浮點數(shù)函數(shù)14. hypot:求直角三角形斜邊長函數(shù)15. ldexp:裝載浮點數(shù)函數(shù)16. log、log10:對數(shù)函數(shù)17. modf:分解雙精度數(shù)函數(shù)18. pow、pow10:指數(shù)函數(shù)19. rand:產(chǎn)生隨機整數(shù)函數(shù)20. sin:
38、正弦函數(shù)21. sinh: 雙曲正弦函數(shù)22. sqrt:開平方函數(shù)23. srand:設(shè)置隨機時間的種子函數(shù)24. tan: 正切函數(shù)25. tanh:雙曲正切函數(shù)251. abs labs、fabs:求絕對值函數(shù)函數(shù)原型:int abs(int x); long labs(long x); double fabs(double x);頭文件:#include是否是標準函數(shù):是函數(shù)功能:函數(shù)int abs(int x);是求整數(shù)x的絕對值;函數(shù)long labs(long n);是 求長整型數(shù)x的絕對值;函數(shù)double fabs(double x);是求浮點數(shù)x的絕對值。返回值:返回計算結(jié)
39、果。 例程如下: 計算整數(shù)的絕對值。#include int main(void)int x = -56;printf(number: %d absolute value: %dn,x, abs(x);return 0;例程說明:本例程通過abs函數(shù)計算出整型數(shù)-56的絕對值56,并在屏幕上顯示結(jié)果。本 例程的運行結(jié)果為:number: -56 absolute value: 56例程如下:計算長整數(shù)的絕對值。#include int main(void)long x = -L;printf(number: %ld absolute value: %ldn, x,labs(x);return
40、0;例程說明:本例程通過labs函數(shù)計算出長整型數(shù)-的絕對值,并在屏幕上顯示結(jié)果。本例 程的運行結(jié)果為:number: - absolute value:例程如下:計算浮點數(shù)的絕對值。#include int main(void)float x = -128.0; printf(number: %f absolute value: %fn, x, fabs(x);return 0;例程說明:本例程通過fabs函數(shù)計算出浮點數(shù)-128.0的絕對值128.0,并在屏幕上顯示結(jié) 果。本例程的運行結(jié)果為:number: -128.000000 absolute value: 128.0000002.
41、acos: 反余弦函數(shù)函數(shù)原型:double acos(double x);頭文件:#include是否是標準函數(shù):是函數(shù)功能:求x的反余弦值,這里,x為弧度,x的定義域為-1.0,1.0, arccosx的值域為0, n。返回值:計算結(jié)果的雙精度值。例程如下: 求arccosx。#include 26#include int main(void)double result;double x = 1.0;result = acos(x);printf(arccos %lf=%lfn, x, result);return 0;例程說明:本例程應(yīng)用函數(shù)acos計算1.0的反余弦值,即:arccos
42、l。返回計算結(jié)果的雙精度 值。本例程的運行結(jié)果是:arccos 1.000000=0.000000#include 3. asin: 反正弦函數(shù)函數(shù)原型:double asin(double x);頭文件:#include是否是標準函數(shù):是函數(shù)功能:求x的反正弦值,這里,x為弧度,x的定義域為-1.0,1.0, arcsinx值域為-n/2,+n/2。返回值:計算結(jié)果的雙精度值。例程如下:求arcsinx。#include 27int main(void)double result;double x = 1.0;result = asin(x);printf(arcsin %lf is %lf
43、n, x, result);return(0);例程說明:本例程應(yīng)用函數(shù)asin計算1.0的反正弦值,即:arcsinl。返回計算結(jié)果的雙精度值。本例程的運行結(jié)果是:arcsin 1.000000 is 1.5707964. ata n:反正切函數(shù)函數(shù)原型:double atan(double x);頭文件:#include是否是標準函數(shù):是函數(shù)功能:求x的反正切值,這里,x為弧度,x的定義域為(-g,+g), arctanx的值域為(-n/2,+n/2)。返回值:計算結(jié)果的雙精度值。例程如下: 求arctanx。#include 28#include int main(void)double
44、 result;double x = 1.0;result = atan(x);printf(arctan %lf = %lfn, x, result);return(0);例程說明:本例程應(yīng)用函數(shù)atan計算1.0的反正切值,即:arctan1。并返回計算結(jié)果的雙精度 值。本例程的運行結(jié)果是:arctan 1.000000 = 0.7853986. ceil:向上舍入函數(shù)函數(shù)原型:double ceil(double x);頭文件:#include是否是標準函數(shù):是295. atan2:反正切函數(shù)2函數(shù)原型:double atan2(double y, double x);頭文件:#incl
45、ude是否是標準函數(shù):是 函數(shù)功能:求y/x的反正切值。 返回值:計算結(jié)果的雙精度值。例程如下:求arctan(x/y)。#include #include int main(void)double result;double x = 10.0, y = 5.0;result = atan2(y, x);printf(arctan%lf = %lfn, (y / x), result);return 0;例程說明:本例程應(yīng)用函數(shù)atan2計算10.0/5.0的反正切值,即:arctan0.5o并返回計算結(jié)果 的雙精度值。本例程的運行結(jié)果是:arctan0.500000 = 0.46364830
46、函數(shù)功能: 將雙精度數(shù)x向上舍入,即: 取它的最大整數(shù)。例如:ceil(123.400000)=124.000000。返回值:返回計算結(jié)果。例程如下: 數(shù)值的向上舍入。#include #include int main(void)double num = 123.400000;double up;up = ceil(num);printf(The original number %lfn, num);printf(The num rounded up %lfn, up);return 0;例程說明:本例程通過函數(shù)ceil將雙精度數(shù)123.400000向上舍入,得到的結(jié)果為124.000000
47、,并在屏幕上顯示運算結(jié)果。本例程的運行結(jié)果為:The original number 123.400000The num rounded up 124.0000006. ceil:向上舍入函數(shù)函數(shù)原型:double ceil(double x);頭文件:#include是否是標準函數(shù):是317. cos:余弦函數(shù) 函數(shù)原型:double cos(double x);頭文件:#include是否是標準函數(shù):是 函數(shù)功能:求x的余弦值,這里,x為弧度。 返回值:計算結(jié)果的雙精度值。 例程如下: 求cosx。#include #include int main(void)double result;
48、double x = M_PI;result = cos(x);printf(cos(PI) is %lfn, result);return 0;例程說明:本例程應(yīng)用cos函數(shù)計算 n 的余弦值,即:cosn,再返回計算結(jié)果的雙精度值。本例程的運行結(jié)果是:cos(PI) is -1.000000328. cosh: 雙曲余弦函數(shù)函數(shù)原型:dluble cosh(double x);頭文件:#include是否是標準函數(shù):是 函數(shù)功能:計算x的雙曲余弦值。其中ch(x)=(ex+e-x)/2。 返回值:計算結(jié)果的雙精度值。 例程如下: 求x的雙曲余弦值ch(x)。#include #includ
49、e int main(void)double result;double x = 0.5;result = cosh(x);printf(ch(%lf) = %lfn, x, result);return 0;例程說明:本例程應(yīng)用函數(shù)cosh計算0.5的雙曲余弦值,即:ch(0.5),并返回計算結(jié)果的雙 精度值。本例程的運行結(jié)果是:ch(0.500000) = 1.127626339. div、ldiv:除法函數(shù)函數(shù)原型:div_t div(int number, int denom);ldiv_t ldiv(long lnumer, long ldenom);頭文件:#include是否是標
50、準函數(shù):是 函數(shù)功能:函數(shù)div是將兩個整數(shù)numbe和denom相除,返回商和余數(shù)。函 數(shù)ldiv是將兩個長整數(shù)lnumbe和ldenom相除,返回商和余數(shù)。返回值:函數(shù)div返回div_t類型的值;函數(shù)ldiv返回ldiv_t類型的值。 例程如下:兩整數(shù)相除,求其商和余數(shù)。#include #include div_t x;int main(void)x = div(11,5);printf(11 div 5 = %d remainder %dn, x.quot, x.rem);return 0;例程說明:本例程通過div函數(shù)將11和5相除,返回其商和余數(shù)。注意:div函數(shù)并不是中的函數(shù),
51、而是中的函數(shù)。中包含存儲分配函數(shù)和一些雜項函數(shù)。 但由于div函數(shù)具有數(shù)學(xué)計算的功能, 因此 將其歸類到數(shù)學(xué)函數(shù)中。div_t是中定義的數(shù)據(jù)類型,它是一個結(jié)構(gòu)體,定義如下:typedef structint quot;/*商*/int rem;/*余數(shù)*/div_t;其中包含兩個域: 商和余數(shù)。div函數(shù)將兩個整數(shù)相除,返回一個div_t類型的 值。該函數(shù)的運行結(jié)果是:11 div 2 = 5 remainder 1例程如下:兩長整數(shù)相除,求其商和余數(shù)。#include #include ldiv_t lx;int main(void)lx = ldiv(200000L, 70000L);pr
52、intf(200000 div 70000 = %ld remainder %ldn, lx.quot, lx.rem);return 0;34例程說明:本例程通過ldiv函數(shù)將長整數(shù)200000與70000相除,并返回其商和余數(shù)。注意:同函數(shù)div樣,函數(shù)Idiv是stdlib.h中的函數(shù)。ldiv_t是stdlib.h中定義的數(shù)據(jù)類型,它是一個結(jié)構(gòu)體,定義如下:typedef struct longquot;longrem; ldiv_t;其中包含兩個域:商和余數(shù)。ldiv函數(shù)將兩個長整數(shù)相除,返回一個ldiv_t類 型的值。該函數(shù)的運行結(jié)果是:200000 div 70000 = 2 r
53、emainder 6000010. exp:求e的x次幕函數(shù)函數(shù)原型:double exp(double x);頭文件:#include是否是標準函數(shù):是函數(shù)功能:計算自然常數(shù)e的x幕。35返回值:返回計算結(jié)果的雙精度值。例程如下:計算ex(說明:e=2.8.)。#include #include int main(void)double result;double x = 3.0;result = exp(x);prin tf(e raised to the power of %lf (eA%lf) = %lfn, x, x, result);return 0;例程說明:本例程應(yīng)用函數(shù)exp
54、計算e3,該函數(shù)返回計算結(jié)果的雙精度值。本例程的運 行結(jié)果為:e raised to the power of 3.000000 (e A 3.000000) = 20.0855373611. floor:向下舍入函數(shù)函數(shù)原型:double floor(double x);頭文件:#include是否是標準函數(shù):是 函數(shù)功能: 將雙精度數(shù)x向下舍入,即:取它的最小整數(shù)。例如:floor(123.400000)=123.000000。返回值:返回計算結(jié)果。 例程如下:數(shù)值的向下舍入。#include #include int main(void)double num = 123.400000;d
55、ouble up;up = floor(num);printf(The original number %lfn, num);printf(The num rounded down %lfn, up);return 0;例程說明:本例程通過函數(shù)floor將雙精度數(shù)123.400000向下舍入,得到的結(jié)果為123.000000,并在屏幕上顯示運算結(jié)果。 本例程的運行結(jié)果為:The original number 123.400000 The numrounded down 123.000000是否是標準函數(shù):是函數(shù)功能:把浮點數(shù)或雙精度數(shù)val分解為數(shù)字部分(尾數(shù)部分)x和以2為底的指數(shù)部分n。
56、即val=x*2n,其中n存放在exp指向的變量中。返回值:返回尾數(shù)部分x的雙精度值,且0.5Wxv1。例程如下: 應(yīng)用函數(shù)frexp分解浮點數(shù)。3712. fmod:求模函數(shù)函數(shù)原型:double fmod(double x, double y);頭文件:#include是否是標準函數(shù):是 函數(shù)功能:計算x對y的模,即x/y的余數(shù)。 返回值:返回計算結(jié)果,即余數(shù)的雙精度。 例程如下:計算兩數(shù)的余數(shù)。#include #include int main(void)float x,y; x=12.580000; y=2.600000; printf(12.580000/2.600000: %fn
57、,fmod(x,y);getchar();return 0;例程說明:本例程通過函數(shù)fmod求雙精度數(shù)1 2 .580000和2 .600000的模,其結(jié)果為:2.180000。本例程的運行結(jié)果為:12.580000/2.600000: 2.1800003813. frexp:分解浮點數(shù)函數(shù)函數(shù)原型:double frexp(double val, int *exp);頭文件:#include#include #include int main(void)float x;int exp;x=frexp(64.0,&exp);prin tf(64.0=%.2f*2A%d,x,exp);g
58、etchar();return 0;例程說明:本例程通過函數(shù)frexp將浮點數(shù)64.0分解為尾數(shù)0.5和以2為底的指數(shù)7。該 函數(shù)將指數(shù)7存放在變量exp中,并返回一個雙精度的尾數(shù)0.500000。本例程的 運行結(jié)果為:64.0=0.50*27是否是標準函數(shù):是函數(shù)功能:把浮點數(shù)或雙精度數(shù)val分解為數(shù)字部分(尾數(shù)部分)x和以2為底的指數(shù)部分n。即val=x*2n,其中n存放在exp指向的變量中。返回值:返回尾數(shù)部分x的雙精度值,且0.5Wxv1。例程如下: 應(yīng)用函數(shù)frexp分解浮點數(shù)。3914. hypot:求直角三角形斜邊長函數(shù)函數(shù)原型:double hypot(double x, do
59、uble y);頭文件:#include是否是標準函數(shù):是 函數(shù)功能:x,y為給定的直角三角形兩直角邊,求該直角三角形的斜邊。 返回值:返回計算結(jié)果的雙精度值。例程如下: 根據(jù)兩直角邊求斜邊的長。#include #include int main(void)double result;double x = 3.0;double y = 4.0;result = hypot(x, y);printf(The hypotenuse is: %lfn, result);return 0;例程說明:本例程中,已知兩直角邊長度:x = 3.0; y = 4.0,應(yīng)用函數(shù)hypot求出其斜邊 長度。本例
60、程的運行結(jié)果為:The hypotenuse is: 5.000000函數(shù)功能:求對數(shù)。函數(shù)log是求以e為底的x的對數(shù)(自然對數(shù))即:Inx;函數(shù)loglO是求以10為底的x的對數(shù),即:Iog10 x。返回值:返回計算結(jié)果的雙精度值。例程如下: 計算lnx。#include 4015. Idexp:裝載浮點數(shù)函數(shù)函數(shù)原型:double ldexp(double val, int exp);頭文件:#incIude是否是標準函數(shù):是 函數(shù)功能:功能與函數(shù)frexp相反,將給定的尾數(shù),指數(shù)裝載成相應(yīng)的雙精度 數(shù)或浮點數(shù)。即計算vaI*2n,其中n為參數(shù)exp的值。返回值:返回vaI*2n的計算結(jié)果。 例程如下:應(yīng)用函數(shù)frexp裝載浮點數(shù)。#incIude #incIude int main(void)doubIe vaIue;doubIe x = 3.000000;vaIue
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度鋁合金門窗行業(yè)市場拓展與品牌推廣服務(wù)合同4篇
- 2025年旅游宣傳視頻拍攝制作合同模板3篇
- 2025年度毛竹砍伐與林業(yè)產(chǎn)業(yè)發(fā)展基金投資合同4篇
- 二零二五年度烤鴨店學(xué)員招收協(xié)議學(xué)費繳納條款3篇
- 2025年度土地承包經(jīng)營權(quán)流轉(zhuǎn)及轉(zhuǎn)讓合同4篇
- 2025年度鮮奶加工廠與奶農(nóng)合作協(xié)議范本3篇
- 2025年度智能工廠操作臨時工勞動合同范本4篇
- 二零二五年度跨區(qū)域基礎(chǔ)設(shè)施建設(shè)工程借款合同模板3篇
- 二零二五版林地生態(tài)補償與保護協(xié)議2篇
- 農(nóng)業(yè)土地租賃合同范本
- 《庖丁解?!帆@獎?wù)n件(省級公開課一等獎)-完美版PPT
- 化工園區(qū)危險品運輸車輛停車場建設(shè)標準
- 6月大學(xué)英語四級真題(CET4)及答案解析
- 氣排球競賽規(guī)則
- 電梯維修保養(yǎng)報價書模板
- 危險化學(xué)品目錄2023
- FZ/T 81024-2022機織披風(fēng)
- GB/T 33141-2016鎂鋰合金鑄錠
- JJF 1069-2012 法定計量檢定機構(gòu)考核規(guī)范(培訓(xùn)講稿)
- 綜合管廊工程施工技術(shù)概述課件
- 公積金提取單身聲明
評論
0/150
提交評論