第一篇:C程序設(shè)計(jì)教案(第7章 實(shí)驗(yàn)9)專題
實(shí)驗(yàn)9
指針使用和數(shù)組的指針一、二、1.2.3.4.實(shí)驗(yàn)學(xué)時(shí):2課時(shí) 實(shí)驗(yàn)?zāi)繕?biāo)
掌握指針的概念、指針變量的定義和使用指針變量;
掌握指針變量的運(yùn)算(取地址運(yùn)算&、取內(nèi)容運(yùn)算*、指針移動(dòng)的運(yùn)算等)學(xué)會(huì)使用數(shù)組的指針和指向數(shù)組的指針變量; 掌握指針與數(shù)組的關(guān)系;
實(shí)驗(yàn)要求:
三、1.在上實(shí)驗(yàn)課之前,每個(gè)同學(xué)必須預(yù)習(xí)指針變量的定義、賦值和取地址運(yùn)算&、取內(nèi)容運(yùn)算*、指針移動(dòng)的運(yùn)算等操作,數(shù)組元素的多種便是方法; 2.每個(gè)同學(xué)必須將實(shí)驗(yàn)的題目、程序編寫完畢,做好充分的準(zhǔn)備。3.所有實(shí)驗(yàn)環(huán)節(jié)均由每位同學(xué)獨(dú)立完成,嚴(yán)禁抄襲他人實(shí)驗(yàn)結(jié)果,若發(fā)現(xiàn)有結(jié)果雷同者,按實(shí)驗(yàn)課考核辦法處理。
四、實(shí)驗(yàn)步驟和內(nèi)容
1.分析下列程序的運(yùn)行結(jié)果,并上機(jī)驗(yàn)證。1)void main(){
int i, j, *pi, *pj;pi=&i;pj=&j;i=5;j=7;
printf(“%dt%dt%dt%d”, i, j, pi, pj);
printf(“n%dt%dt%dt%dn”, &i, *&i, &j, *&j);}
程序的運(yùn)行結(jié)果是:______________________ 2)void main(){
int a[ ]={ 1, 2, 3 };int *p, i;p=a;
for(i=0;i<3;i++)
printf(“%d %d %d %dn”, a[i], p[i], *(p+i), *(a+i));} 程序的運(yùn)行結(jié)果是:______________________ 3)void main(){
int a[ ]={ 2, 5, 3, 6, 8 };int *p, i=1, s=0;
for(p=a;p 1)用地址法輸入輸出二維數(shù)組各元素。2)用指針法輸入輸出二維數(shù)組各元素。 五、思考題 1.數(shù)組的指針和指向數(shù)組的指針變量的區(qū)別 2.分析指針與數(shù)組的關(guān)系 六、實(shí)驗(yàn)小結(jié): 實(shí)驗(yàn)9 多分支程序設(shè)計(jì) 1、實(shí)驗(yàn)內(nèi)容 用P1.0、P1.1控制流水燈的變化 P1.0、P1.1=00燈全滅 P1.0、P1.1=01單燈亮左循環(huán) P1.0、P1.1=10單燈亮右循環(huán) P1.0、P1.1=11雙燈亮左循環(huán) 燈亮的時(shí)時(shí)為1秒。用軟件延時(shí)實(shí)現(xiàn)。*用T0定時(shí)選作。 2、實(shí)驗(yàn)步驟 1)打開PV32編程序。匯編正確進(jìn)入調(diào)試界面。否則修改程序重新匯編直到通過。 2)打開P0、P1窗口給 3)調(diào)試燈全滅、單燈亮左循環(huán)、單燈亮右循環(huán)、雙燈亮左循環(huán)程序觀察并記祿寄存器、內(nèi)存的變化。判斷程序是否正確。若發(fā)現(xiàn)問題重返編輯界面,修改、存盤、匯編。返回調(diào)試界面調(diào)試通過。 4)設(shè)斷點(diǎn)調(diào)試主程序觀察并記祿寄存器、內(nèi)存的變化。判斷程序是否正確。若發(fā)現(xiàn)問題重返編輯界面,修改、存盤、匯編。返回調(diào)試界面調(diào)試通過。 首先將P1.0、P1.1置00觀察P2窗口燈是否全滅,然后改變P1.0、1.1的設(shè)置觀察流水燈運(yùn)行是否正確。 5)流水燈運(yùn)行中改變P1.0、1.1看流燈能否隨之變化。若執(zhí)行正確程序通過。否則在每個(gè)流水子程序中加入讀P1口散轉(zhuǎn)子程序。 3.實(shí)驗(yàn)報(bào)告 1.寫出主程序流程圖、子程序流程圖、程序清單 2.根據(jù)記淥數(shù)據(jù)給程序加注解 3.調(diào)試心得 《C程序設(shè)計(jì)》實(shí)驗(yàn)教案 一、實(shí)驗(yàn)的目的與任務(wù): 《C程序設(shè)計(jì)》是一門實(shí)踐性很強(qiáng)的課程。通過實(shí)驗(yàn)使學(xué)生加深對(duì)課堂講授的概念、語法、算法、編程技術(shù)的理解;熟悉C程序設(shè)計(jì)的開發(fā)環(huán)境;掌握程序設(shè)計(jì)和調(diào)試的基本技能。并通過實(shí)踐激發(fā)學(xué)生進(jìn)一步學(xué)習(xí)的積極性,培養(yǎng)學(xué)生的學(xué)習(xí)興趣和創(chuàng)新思維。通過8個(gè)實(shí)驗(yàn),使學(xué)生經(jīng)過一定數(shù)量的上機(jī)訓(xùn)練,了解和掌握C程序設(shè)計(jì)的環(huán)境、程序的數(shù)據(jù)表示、程序的執(zhí)行流程控制、程序的整體結(jié)構(gòu)等C程序設(shè)計(jì)的基本概念和應(yīng)用技術(shù)。 二、實(shí)驗(yàn)項(xiàng)目與要求 實(shí)驗(yàn)一:C程序的運(yùn)行環(huán)境和運(yùn)行一個(gè)C程序的方法(2學(xué)時(shí)) 實(shí)驗(yàn)性質(zhì):驗(yàn)證性實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?/p> 1.了解所用的計(jì)算機(jī)系統(tǒng)的基本操作方法,學(xué)會(huì)獨(dú)立使用該系統(tǒng)。2.了解在該系統(tǒng)上如何編輯、編譯、連接和運(yùn)行一個(gè)C程序。3.通過運(yùn)行簡單的C程序,初步了解C源程序的特點(diǎn)。 二、實(shí)驗(yàn)內(nèi)容 1.調(diào)用編輯程序,輸入教材第一章習(xí)題1.1程序,并進(jìn)行編譯和運(yùn)行。應(yīng)了解所用的系統(tǒng)是用什么命令進(jìn)行編譯和連接運(yùn)行的。編譯和連接后所得到的目標(biāo)程序的后綴是什么形式的? 2.輸入并運(yùn)行教材第一章中習(xí)題1.4。 3.輸入并運(yùn)行教材第一章中習(xí)題1.9,了解如何在運(yùn)行時(shí)向程序變量輸入數(shù)據(jù)。 實(shí)驗(yàn)二 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式(2學(xué)時(shí)) 實(shí)驗(yàn)性質(zhì):驗(yàn)證性實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?/p> 1.掌握C語言數(shù)據(jù)類型,熟悉如何定義一個(gè)整型、字符型、實(shí)型變量,以及對(duì)它們賦值的方法,了解以上類型數(shù)據(jù)輸出時(shí)所用格式轉(zhuǎn)換符。 2.學(xué)會(huì)使用C的有關(guān)算術(shù)運(yùn)算符,以及包含這些運(yùn)算符的表達(dá)式,特別是自加(++)和自減(--)運(yùn)算符的使用。 3.進(jìn)一步熟悉C程序的編輯、編譯、連接和運(yùn)行的過程。 二、實(shí)驗(yàn)內(nèi)容 1.輸入并運(yùn)行教材第三章例3.6.即: #include printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); } 在此基礎(chǔ)上 ①將第二行改為: int c1,c2;再使之運(yùn)行,分析結(jié)果。②再將第三行、第四行改為: c1=300;c2=400;再使之運(yùn)行,分析其運(yùn)行結(jié)果。 2.輸入并運(yùn)行教材第三章習(xí)題3.6,在上機(jī)前先用人工分析程序?qū)懗鰬?yīng)得結(jié)果,上機(jī)后將二者對(duì)照。 3.輸入并運(yùn)行習(xí)題3.10。即: #include printf(“%d,%d,%d,%d”,i,j, i++,j++);⑤程序改為: main(){int i,j,m=0,n=0;;i=8;j=10;m+=i++;n-=--j;printf(“i=%d,j=%d,m=%d,n=%d”,i,j,m,n);} 實(shí)驗(yàn)三 最簡單的C程序設(shè)計(jì)(2學(xué)時(shí)) 實(shí)驗(yàn)性質(zhì):驗(yàn)證性實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?/p> 1.掌握C語言中使用最多的一種語句—賦值語句的使用。2.掌握數(shù)據(jù)的輸入輸出的方法,能正確使用各種格式轉(zhuǎn)換符。 二、實(shí)驗(yàn)內(nèi)容 1.輸入并運(yùn)行以下程序: #include void main(){int a,b; float d,e; char c1,c2; double f,g; long m,n; unsigned int p,q; a=61;b=62; c1=’a’;c2=’b’; d=3.56;e=-6.87; f=3157.890121;g=0.123456789; m=50000;n=-60000; p=32768;q=40000; printf(“a=%d,b=%dn c1=%c,c2=%cnd=%6.2f,e=%6.2fn”,a,b,c1,c2,d,e); printf(“f=%15.6f,g=%15.12fnm=%ld,n=%ldnp=%u,q=%un”,f,g,m,m,p,q); } 在此基礎(chǔ)上,做以下改動(dòng): ① 將程序第8-13行改為: a=61;b=62; c1=a;c2=b; f=3157.890121;g=0.123456789; d=f;e=g; p=a=m=50000;q=b=n=-60000; 運(yùn)行程序,分析結(jié)果。 ② 在①的基礎(chǔ)上將printf語句改為: printf(“a=%d,b=%dn c1=%c,c2=%cnd=%15.6f,e=%15.12fn”,a,b,c1,c2,d,e); printf(“f=%f,g=%fn m=%ld,n=%ldn p=%d,q=%dn”,f,g,m,n,p,q); 運(yùn)行程序。 2.編寫程序,用getchar函數(shù)讀入兩個(gè)字符c1、c2,然后分別用putchar函數(shù)和printf函數(shù)輸出這兩個(gè)字符。 上機(jī)運(yùn)行程序,比較用printf和putchar函數(shù)輸出字符的特點(diǎn)。 實(shí)驗(yàn)四 選擇結(jié)構(gòu)程序設(shè)計(jì)(2學(xué)時(shí)) 實(shí)驗(yàn)性質(zhì):設(shè)計(jì)性實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?/p> 1.了解C語言表示邏輯量的方法(以0代表“假”,以1代表“真”); 2.學(xué)會(huì)正確使用邏輯運(yùn)算符和邏輯表達(dá)式; 3.熟練掌握if語句和switch語句。 二、實(shí)驗(yàn)內(nèi)容 先編程序,解決以下問題,然后上機(jī)調(diào)試運(yùn)行程序。1.有一個(gè)函數(shù) ?x?y??2x?1?3x?11?x?11?x?10 x?10用scanf函數(shù)輸入x的值(分別為x<1、1~ 10、≥10三種情況),求y值。2.給出一個(gè)百分制成績,要求輸出成績等級(jí)‘A’,‘B’,‘C’,‘D’,‘E’。90分以上為‘A’,80~89分為‘B’,70~79分為‘C’,60~69分為‘D’,60分以下為‘E’。 實(shí)驗(yàn)五 循環(huán)控制(4學(xué)時(shí)) 實(shí)驗(yàn)性質(zhì):設(shè)計(jì)性實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?/p> 1.熟悉用while語句,do-while語句和for語句實(shí)現(xiàn)循環(huán)的方法。2.掌握在程序設(shè)計(jì)中用循環(huán)的方法實(shí)現(xiàn)各種算法(如窮舉、迭代、遞推等)。 二、實(shí)驗(yàn)內(nèi)容 編程序并上機(jī)調(diào)試運(yùn)行。 1.輸入兩個(gè)正整數(shù),求其中最大公約數(shù)和最小公倍數(shù)。2.用牛頓迭代法求方程2x-4x+3x-6=0在1.5附近的根。 32實(shí)驗(yàn)六 數(shù)組(4學(xué)時(shí)) 實(shí)驗(yàn)性質(zhì):設(shè)計(jì)性實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?/p> 1.掌握一維數(shù)組和二維數(shù)組的定義、賦值和輸入輸出的方法; 2.掌握字符數(shù)組和字符串函數(shù)的使用。3.掌握與數(shù)組有關(guān)的算法(特別是排序算法)。 二、實(shí)驗(yàn)內(nèi)容 編程序并上機(jī)調(diào)試運(yùn)行。 1.用選擇法對(duì)10個(gè)整數(shù)排序。10個(gè)整數(shù)用scanf函數(shù)輸入。2.將兩個(gè)字符串連接起來,不要用strcat函數(shù)。 實(shí)驗(yàn)七 函數(shù)(4學(xué)時(shí)) 實(shí)驗(yàn)性質(zhì):設(shè)計(jì)性實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?/p> 1.掌握定義函數(shù)的方法; 2.掌握函數(shù)實(shí)參與形參的對(duì)應(yīng)關(guān)系,以及“值傳遞”的方式; 3.掌握函數(shù)的嵌套調(diào)用和遞歸調(diào)用的方法; 4.掌握全局變量和局部變量,動(dòng)態(tài)變量和靜態(tài)變量的概念和使用方法。 二、實(shí)驗(yàn)內(nèi)容 編程序并上機(jī)調(diào)試運(yùn)行。 1.寫一個(gè)判斷素?cái)?shù)的函數(shù),在主函數(shù)輸入一個(gè)整數(shù),輸出是否是素?cái)?shù)的信息。2.求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù),用一個(gè)函數(shù)求最大公約數(shù)。用另一函數(shù)根據(jù)求出的最大公約數(shù)求最小公倍數(shù)。 (1)用全局變量的方法。將兩個(gè)整數(shù)的最大公約數(shù)、最小公倍數(shù)都設(shè)為全局變 量。 (2)不用全局變量,兩個(gè)整數(shù)在主函數(shù)中輸入,并傳送給函數(shù)1,求出的最大公約數(shù)返回主函數(shù),然后再與兩個(gè)整數(shù)一起作為實(shí)參傳遞給函數(shù)2,以求出最小公倍數(shù),返回到主函數(shù)輸出最大公約數(shù)和最小公倍數(shù)。 實(shí)驗(yàn)八 預(yù)處理命令(2學(xué)時(shí)) 實(shí)驗(yàn)性質(zhì):設(shè)計(jì)性實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?/p> 1.掌握宏定義的方法; 2.掌握文件包含處理方法; 3.掌握條件編譯的方法。 二、實(shí)驗(yàn)內(nèi)容 編程序并上機(jī)調(diào)試運(yùn)行。 1.定義一個(gè)帶參數(shù)的宏,使兩個(gè)參數(shù)的值互換。在主函數(shù)中輸入兩個(gè)數(shù)作為使用宏的實(shí)參,輸出已交換后的兩個(gè)值。 說明:在程序主函數(shù)使用宏時(shí)只能用兩個(gè)實(shí)參,如SWAP(a,b),不能用三個(gè)參數(shù)。2.用條件編譯方法實(shí)現(xiàn)以下功能: 輸入一行電報(bào)文字,可以任選兩種輸出,一為原文輸出;一為將字母變成其下字母(如‘a(chǎn)’變成‘b’,?,‘z’變成‘a(chǎn)’。其它字符不變)。用#define命令來控制是否要譯成密碼。例如: #define CHANGE 1 則輸出密碼。若 #define CHANGE 0 則不譯成密碼,按原碼輸出。用條件編譯方法來處理。 實(shí)驗(yàn)九 指針(4學(xué)時(shí)) 實(shí)驗(yàn)性質(zhì):設(shè)計(jì)性實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?1.掌握指針的概念,會(huì)定義和使用指針變量; 2.學(xué)會(huì)使用數(shù)組的指針和指向數(shù)組的指針變量; 3.學(xué)會(huì)使用字符串的指針和指向字符串的指針變量; 4.學(xué)會(huì)使用指向函數(shù)的指針變量; 二、實(shí)驗(yàn)內(nèi)容 編程序并上機(jī)調(diào)試運(yùn)行程序(都要求用指針處理)。1.輸入三個(gè)整數(shù),按由小到大的順序輸出。 2.將一個(gè)3*3的矩陣轉(zhuǎn)置,用一函數(shù)實(shí)現(xiàn)之。在主函數(shù)中用scanf函數(shù)輸入以下矩陣元素: ?17 ????1339155??11 ?19??將數(shù)組名作為函數(shù)實(shí)參。函數(shù)調(diào)用后在主函數(shù)中輸出已轉(zhuǎn)置的矩陣。3.用一個(gè)函數(shù)實(shí)現(xiàn)兩個(gè)字符串的比較,即自己寫一個(gè)strcmp函數(shù): strcmp(s1,s2)如果s1=s2,則函數(shù)返回值為0;如果s1≠s2,返回它們二者第一個(gè)不同字符的ASCII碼差值(如“BOY”與“BAD”,第二個(gè)字母不同,“O”與“A”之差為79-65=14);如果s1>s2,則輸出正值;如s1 兩個(gè)字符串s1,s2由main函數(shù)輸入,strcmp函數(shù)的返回值也在main函數(shù)輸出。 實(shí)驗(yàn)十 結(jié)構(gòu)體和共用體(4學(xué)時(shí)) 實(shí)驗(yàn)性質(zhì):設(shè)計(jì)性實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?/p> 1.掌握結(jié)構(gòu)體類型變量的定義和使用; 2.掌握結(jié)構(gòu)體類型數(shù)組的概念和應(yīng)用; 3.掌握共用體的概念與使用。 二、實(shí)驗(yàn)內(nèi)容 編程序,然后上機(jī)調(diào)試運(yùn)行。 1.有5個(gè)學(xué)生,每個(gè)學(xué)生的數(shù)據(jù)包括學(xué)號(hào)、姓名、三門課的成績,從鍵盤輸入5 8 個(gè)學(xué)生數(shù)據(jù),要求打印出三門課總平均成績,以及最高分的學(xué)生的數(shù)據(jù)(包括學(xué)號(hào)、姓名、三門課的成績、平均分?jǐn)?shù))。 要求用一個(gè)input函數(shù)輸入5個(gè)學(xué)生數(shù)據(jù);用一個(gè)average函數(shù)求總平均分;用max函數(shù)找出最高分學(xué)生數(shù)據(jù);總平均分和最高分的學(xué)生的數(shù)據(jù)都在主函數(shù)中輸出。 2.輸入和運(yùn)行以下程序: #include union data {int i[2]; float a; long b; char c[4]; }; void main(){union data u; scanf(“%d,%d”,&u.i[0],&u.i[1]); printf(“i[0]=%d,i[1]=%dna=%fnb=%ldnc[0]=%c,c[1]=%c,c[2]=%c,c[3]=%cn”,u.i[0],u.i[1],u.a,u.b,u.c[0],u.c[1],u.c[2],u.c[3]);} 輸入兩個(gè)整數(shù)10000、20000給u.i[0]和u.i[1]。分析運(yùn)行結(jié)果。 然后將scanf語句改為: scanf(“%ld”,&u.b); 輸入60000給b。分析運(yùn)行結(jié)果。 實(shí)驗(yàn)十一 文件(2學(xué)時(shí)) 實(shí)驗(yàn)性質(zhì):設(shè)計(jì)性實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?1.掌握文件以及緩沖文件系統(tǒng)、文件指針的概念; 2.學(xué)會(huì)使用文件打開、關(guān)閉、讀、寫等文件操作函數(shù)。3.學(xué)會(huì)用緩沖文件系統(tǒng)對(duì)文件進(jìn)行簡單的操作。 二、實(shí)驗(yàn)內(nèi)容 1.從鍵盤輸入一個(gè)字符,將其中的小寫字母全部轉(zhuǎn)換成大寫字母,然后輸出到一個(gè)磁盤文件“test”中保存。輸入的字符以“!”結(jié)束。 實(shí)驗(yàn)十二 學(xué)生成績管理(4學(xué)時(shí)) 實(shí)驗(yàn)性質(zhì):綜合性設(shè)計(jì)性實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?/p> 1.綜合運(yùn)用C程序設(shè)計(jì)知識(shí),解決實(shí)際問題。 二、實(shí)驗(yàn)內(nèi)容 1.有5個(gè)學(xué)生,每個(gè)學(xué)生有3門課的成績,從鍵盤輸入以上數(shù)據(jù)(包括學(xué)生號(hào)、姓名、三門課成績),計(jì)算出平均成績,將原有數(shù)據(jù)和計(jì)算出的平均分?jǐn)?shù)存放在磁盤文件“stud”中。 2.將上題“stud”文件中的學(xué)生數(shù)據(jù),按平均分進(jìn)行排序處理,將已排序的學(xué)生數(shù)據(jù)存入一個(gè)新文件“stu-sort”中。 3.將上題已排序的學(xué)生成績文件進(jìn)行插入處理。插入一個(gè)學(xué)生的三門課成績。程序先計(jì)算新插入學(xué)生的平均成績,然后將它按成績高低順序插入,插入后建立一個(gè)新文件。 學(xué)生的原有數(shù)據(jù)為: 91101 Wang 89,98,67.5 91103 Li 60,80,90 91106 Fun 75.5,91.5,99 91110 Ling 100,50,62.5 91113 Yuan 58,68,71 要插入的學(xué)生數(shù)據(jù)為: 91108 Xin 90,95,60 10 C語言程序設(shè)計(jì)實(shí)驗(yàn)教案 目 錄 實(shí)驗(yàn)一visual c++編譯環(huán)境的使用..............................................................................2 實(shí)驗(yàn)二 順序程序設(shè)計(jì)...............................................................................................6 實(shí)驗(yàn)三 選擇結(jié)構(gòu)程序設(shè)計(jì)........................................................................................9 實(shí)驗(yàn)四 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)......................................................................................13 實(shí)驗(yàn)五 函數(shù)...........................................................................................................17 實(shí)驗(yàn)六 指針...........................................................................................................22 實(shí)驗(yàn)七 數(shù)組...........................................................................................................25 實(shí)驗(yàn)八 結(jié)構(gòu)體........................................................................................................32 實(shí)驗(yàn)一visual c++編譯環(huán)境的使用 實(shí)驗(yàn)?zāi)康模?/p> 1.掌握c程序設(shè)計(jì)編程環(huán)境visual c++,掌握運(yùn)行一個(gè)c程序設(shè)計(jì)的基本步驟,包括編輯、編譯、連接和運(yùn)行。 2.掌握c語言程序設(shè)計(jì)的基本框架,能夠編寫簡單的c程序。3.了解程序調(diào)試的思想,能找出并改正c程序中的語法錯(cuò)誤。實(shí)驗(yàn)內(nèi)容: 1.在“我的電腦”上新建一個(gè)文件夾,用于存放c程序,文件夾名字可以是學(xué)號(hào)姓名。2.調(diào)試示例,在屏幕上顯示一個(gè)短句“Hello World!”。 源程序 #include Hello World!基本步驟:(要求熟練掌握)1)啟動(dòng)VC++ “開始”->“程序”->“Microsoft Visual Studio 6.0”->“Microsoft Visual C++6.0”進(jìn)入VC++編程環(huán)境。2)新建文件(*.cpp) “文件”->“新建”,單擊“文件”選項(xiàng)卡,選擇“C++Source Files”,修改文件保存“目錄”和“文件”(文件名),單擊“確定”。 3)編輯和保存(注意:源程序一定要在英文狀態(tài)下輸入,即字符標(biāo)點(diǎn)都要在半角狀態(tài)下,同時(shí)注意大小寫,一般都用小寫) 在編輯窗口輸入源程序,然后執(zhí)行“文件”->“保存”或“文件”->“另存為” 4)編譯(*.obj) 用來檢查語法錯(cuò)誤 “編譯”->“編譯”或Ctrl+F7,在產(chǎn)生的工作區(qū)隊(duì)話框中,選擇“是”。5)連接(*.exe)“編譯”->“構(gòu)件”或F7 6)運(yùn)行 “編譯”->“執(zhí)行”或Ctrl+F5 7)關(guān)閉程序工作區(qū) “文件”->“關(guān)閉工作區(qū)” 8)打開文件 “文件”->“打開” 9)查看C源文件、目標(biāo)文件和可執(zhí)行文件的存放位置。 源文件在保存目錄下,目標(biāo)文件和可執(zhí)行文件在“保存目錄Debug”中 3.編程,在屏幕上顯示一個(gè)短句“this is my first c program.”。4.調(diào)試示例,在屏幕上顯示一個(gè)短句“welcome to you!”。源程序(有錯(cuò)誤的程序)#include 1)按照實(shí)驗(yàn)2中介紹的步驟1)~3)輸入上述源程序并保存。 2)編譯,“編譯”->“編譯”(Ctrl+F7),信息窗口中顯示編譯出錯(cuò)信息,如下圖所示。3)找出錯(cuò)誤,在信息窗口中依次雙擊出錯(cuò)信息,編輯窗口就會(huì)出現(xiàn)一個(gè)箭頭指向程序出錯(cuò)的位置,一般在箭頭的當(dāng)前行或上一行,可以找到出錯(cuò)語句。 第4行,出錯(cuò)信息:Welcome是一個(gè)未定義的變量,但Welcome并不是變量,出錯(cuò)的原因是Welcome前少了一個(gè)雙引號(hào)。 4)改正錯(cuò)誤,重新編譯,得下如下圖所示出錯(cuò)信息。 出錯(cuò)信息:“}”前少了分號(hào)。 5)再次改正錯(cuò)誤,在“}”前即printf()后加上“;”(英文狀態(tài)),生新編譯,顯示正確 6)連接,“編譯”->“構(gòu)件”(F7),出現(xiàn)如下出錯(cuò)信息。 出錯(cuò)信息:缺少主函數(shù)。 7)改正錯(cuò)誤,即把“mian”改為“main”后,重新連接,信息窗口顯示連接正確。8)運(yùn)行,“編譯”->“執(zhí)行”(Ctrl+F5),觀察結(jié)果是否與要求一致。5.改錯(cuò),改正下列程序中的錯(cuò)誤,在屏幕上顯示以下3行信息。 **************** Welcome **************** 源程序(有錯(cuò)誤的程序)#include } 實(shí)驗(yàn)報(bào)告要求 將以上各題的源程序、運(yùn)行結(jié)果,以及實(shí)驗(yàn)中遇到的問題和解決問題的方法,以及實(shí)驗(yàn)過程中的心得體會(huì),寫在實(shí)驗(yàn)報(bào)告上。 Printf(“ Welcome”)Printf(“****************n”); 實(shí)驗(yàn)二 順序程序設(shè)計(jì) 【實(shí)驗(yàn)?zāi)康摹?/p> 1.學(xué)會(huì)順序程序設(shè)計(jì)的思想 2.進(jìn)一步熟悉Turbo C集成編譯環(huán)境的使用,達(dá)到熟練使用的目的 3.熟練掌握各種數(shù)據(jù)類型的輸入輸出格式,并學(xué)會(huì)使用輸入輸出函數(shù) 4.學(xué)會(huì)使用表達(dá)式 【實(shí)驗(yàn)內(nèi)容】 1.在屏幕中輸出一行文字“Hello,Welcome!” 說明: (1)只需要在屏幕中顯示一行文字即可 參考程序如下: #include printf(“Hello,Welcome!n”);} 2. 輸入一個(gè)華氏溫度,要求輸出攝氏溫度。公式為 輸出要求有文字說明,取兩位小數(shù) 說明: (1)攝氏溫度F和華氏溫度c都應(yīng)用float類型變量存儲(chǔ)(2)注意表達(dá)式書寫中的各變量的順序問題(3)輸出時(shí)只需輸出兩位小數(shù) 參考程序如下: #include float F,c; printf(“input F:”); scanf(“%f”,&F); c=5*(F-32)/9; printf(“c=%.2fn”,c);} 3.輸入三角形三邊長a、b、c,求三角形周長和l面積s。用scanf輸入數(shù)據(jù),輸出計(jì)算結(jié)果,輸出時(shí)要求有文字說明,取消書店后兩位小數(shù)。說明: (1)程序設(shè)計(jì)中使用的所有變量均為float類型 c?59?F?32?(2)三角形周長公式:l?a?b?c a?b?c2(3)三角形面積公式;s?p(p?a)(p?b)(p?c),其中 p? (4)注意應(yīng)保證輸入數(shù)據(jù)能夠構(gòu)成三角形 (5)需要使用開根號(hào)函數(shù)sqrt,在程序頂部加上#include #include float a,b,c,l,s; float p; printf(“input a,b,c:”); scanf(“%f,%f,%f”,&a,&b,&c); l=a+b+c; p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); printf(“l(fā)=%.2fn”,l);printf(“s=%.2fn”,s);} 4.設(shè)圓半徑r?1.5,圓柱高h(yuǎn)?3,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數(shù)據(jù),輸出計(jì)算結(jié)果,輸出時(shí)要求有文字說明,取消書店后兩位小數(shù)。說明: (1)程序設(shè)計(jì)中使用的所有變量均為float類型(2)圓周長公式:l?2?r(3)圓面積公式:S1??r(4)圓球表面積公式:S2?4?r V1?4322(5)圓球體積公式: ?r3 (6)圓柱體積公式:V2??rh 參考程序如下: #include 2main(){ float r=1.5,h=3; float l,s1,s2,v1,v2; l=2*PI*r; s1=PI*r*r; s2=4*PI*r*r; v1=4*PI*r*r*r/3; v2=PI*r*r*h; printf(“l(fā)=%.2fn”,l);printf(“s1=%.2fn”,s1);printf(“s2=%.2fn”,s2);printf(“v1=%.2fn”,v1);printf(“v2=%.2fn”,v2);} 實(shí)驗(yàn)三 選擇結(jié)構(gòu)程序設(shè)計(jì) 【實(shí)驗(yàn)?zāi)康摹?/p> 1.了解C語言的邏輯運(yùn)算 2.學(xué)會(huì)使用if語句和switch語句 3.熟練掌握選擇結(jié)構(gòu)程序設(shè)計(jì)方法 【實(shí)驗(yàn)內(nèi)容】 1.有一函數(shù) y? x ?x?1? ?1?x?10? 2x? 13x?11 ?x?10? 寫一程序,輸入x,輸出y值 說明: (1)根據(jù)輸入x的不同求y的值,使用if語句 (2)分別輸入三個(gè)分段中的三個(gè)數(shù),判斷輸出結(jié)果是否正確,測(cè)試程序正確與否 參考程序如下: #include float x,y; printf(“input x:”); scanf(“%f”,&x); if(x<1) y=x; if(x>=1 && x<10) y=2*x-1; if(x>=10) y=3*x-11;printf(“y=%fn”,y);} 2.從鍵盤輸入一個(gè)字符,可以是數(shù)字、字母、或是標(biāo)點(diǎn)符號(hào),對(duì)輸入的字符進(jìn)行判斷,如果是數(shù)字則輸出“* is a number!”,如果是字母則輸出“* is a letter!”,如果是其他的字符怎輸出“* is the other!”(*為輸入的字符)說明: (1)從鍵盤輸入一個(gè)字符,用char類型變量存儲(chǔ)(2)使用if語句作判斷(3)判斷條件根據(jù)輸入字符的ASCII碼值的范圍,具體的ASCII碼值參看書后的ASCII碼表 參考程序如下: #include char c; printf(“input a char:”); scanf(“%c”,&c); if(c>=48 && c<=57) printf(“%c is a number!n”,c); else if((c>=65 && c<=90)||(c>=97 && c<=122)) printf(“%c is a letter!n”,c); else printf(“%c is the other!n”,c);} 3.輸入兩個(gè)實(shí)數(shù)a、b,保證變量a中存儲(chǔ)的是較大的數(shù),變量b中存儲(chǔ)的實(shí)較小的數(shù),并按照由大到小的順序輸出。說明: (1)需要對(duì)輸入的兩個(gè)數(shù)進(jìn)行比較,判斷是否需要交換兩個(gè)數(shù)(2)按照從大到小的順序輸出兩個(gè)數(shù) 參考程序如下: #include float a,b; float temp; printf(“input a,b:”); scanf(“%f,%f”,&a,&b); if(a { temp=a; } printf(“%f,%fn”,a,b);} 4.輸入一年份,判斷該年是否是閏年。說明: (1)判斷閏年的條件:能夠被4整除,但不能被100整除或者能被100整除,又能被400整除 (2)使用一個(gè)變量來代表是否是閏年 a=b;b=temp;10(3)如果是閏年則輸出“* is a leap year!”,否則輸出“* is not a leap year!”。*代表輸入的年份 參考程序如下: #include int year; int flag=0; printf(“input a year:”); scanf(“%d”,&year); if((year%4==0 && year%100!=0)||(year%100==0 && year%400==0)) flag=1; if(flag==1) printf(“%d is a leap year!n”,year); else printf(“%d is not a leap year!n”,year);} 5.從鍵盤輸入一個(gè)月號(hào),顯示輸出該月號(hào)的英文名稱 說明: (1)使用if語句較為麻煩,因?yàn)樾枰?2次比較(2)使用switch語句 (3)如果輸入月份超出范圍,則應(yīng)當(dāng)輸出錯(cuò)誤信息 參考程序如下: #include int month; printf(“input a month:”); scanf(“%d”,&month); switch(month) { case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: printf(“January!n”);printf(“February!n”);break;break;printf(“March!n”);break;printf(“April!n”);break;printf(“May!n”);break;printf(“June!n”);break;printf(“July!n”);break;printf(“August!n”);break;printf(“September!n”);break;case 10: printf(“October!n”);break;case 11: printf(“November!n”);break;case 12: printf(“December!n”);break; } } default: printf(“input error!n”);12 實(shí)驗(yàn)四 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 【實(shí)驗(yàn)?zāi)康摹?/p> 1.學(xué)會(huì)使用while、do-while、for語句 2.熟練掌握循環(huán)結(jié)構(gòu)程序設(shè)計(jì)方法 3.掌握選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)的嵌套 【實(shí)驗(yàn)內(nèi)容】 201.求和說明: ?n!n?1(即求1!+2!+??+20!) (1)首先要求出每一項(xiàng)的n!的值 (2)然后把各項(xiàng)相加得到所求的值 (3)存儲(chǔ)求和運(yùn)算結(jié)果的變量的初始值應(yīng)為0(4)存儲(chǔ)求積運(yùn)算結(jié)果的變量的初始值應(yīng)為1 參考程序如下: ①使用while循環(huán) #include float sum=0; float mid=1; int n=1; while(n!=21) { mid=mid*n; } printf(“sum=%fn”,sum);} ②使用for循環(huán) #include float sum=0; float mid=1; int n; for(n=1;n<=20;n++) { mid=mid*n;n++;sum=sum+mid; sum=sum+mid;} printf(“sum=%fn”,sum);} 2.求出100到200以內(nèi)最大的素?cái)?shù)和最小的素?cái)?shù),并求出兩者的差值 說明: (1)素?cái)?shù)的概念:只能被1和自身整除的正整數(shù) (2)分別求出這個(gè)兩個(gè)素?cái)?shù),并輸出,輸出格式為: big one:* small one:* 最小的素?cái)?shù)正序找出 最大的素?cái)?shù)倒序找出 (3)求出兩者的差,并輸出,輸出格式為: result:* 參考程序如下: #include int big,small; int result; } for(i=200;i>=100;i--){ int i,j;int flag;for(i=100;i<200;i++){ flag=0;for(j=2;j } if(i%j==0){ } flag=1;break;if(flag==0){ } small=i;break;flag=0;for(j=2;j { } if(flag==0){ } big=i;break;if(i%j==0){ flag=1;break;} } result=big-small;printf(“big:%dn”,big);printf(“small:%dn”,small);printf(“reslut:%dn”,result);} 3.輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù) 說明: (1)最大公約數(shù):能夠被m和n同時(shí)整除的最大正整數(shù)(2)最小公倍數(shù):m和n相乘的積除以最大公約數(shù) (3)使用for循環(huán),將m和n同時(shí)除以1到m(m為m和n兩者中較小者),直到找出最大的正整數(shù)即為最大公約數(shù)(4)輸出格式如下: The greatest common divisor is *! The least common multiple is *!參考程序如下: #include printf(“input m,n:”); scanf(“%d,%d”,&m,&n);if(m>n){ temp=m;m=n; n=temp;} for(i=1;i<=m;i++){ if(n%i==0 && m%i==0) great=i;} least=m*n/great;printf(“The greatest common divisor is %dn”,great);printf(“The least common multiple is %dn”,least);} 4.打印出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個(gè)3位數(shù),其各位數(shù)字立方和等于該數(shù)本書。例如,153是一水仙花數(shù),因?yàn)?53?1?5?3 說明:(1)“水仙花數(shù)”是三位數(shù),所以范圍是從100到999(2)使用for循環(huán) (3)循環(huán)中需要把數(shù)字的每一位都分離出來,然后求和,同原數(shù)字比較,進(jìn)行判斷 參考程序如下: #include int i;int temp;for(i=100;i<1000;i++){ a=i/100;b=(i-a*100)/10;c=i%10;temp=a*a*a+b*b*b+c*c*c;if(i==temp)printf(“%dn”,i); 33} } 實(shí)驗(yàn)五 函數(shù) 【實(shí)驗(yàn)?zāi)康摹?/p> 1.掌握C語言函數(shù)的定義、聲明以及函數(shù)的調(diào)用方法 2.了解主調(diào)函數(shù)和被調(diào)函數(shù)之間的參數(shù)傳遞方式 3.熟練掌握數(shù)組作為函數(shù)參數(shù)的用法 【實(shí)驗(yàn)內(nèi)容】 1.寫一個(gè)判斷素?cái)?shù)的函數(shù),在主函數(shù)輸入一個(gè)整數(shù),輸出是否素?cái)?shù)的信息。說明: (1)判斷素?cái)?shù)的函數(shù)名為Prime(2)傳遞參數(shù)為int類型的變量(3)輸出格式為: * is a prime!或者* is not a prime!參考程序如下: #include if(num%i==0) { } flag=1;break;} if(flag==0)printf(“%d is a prime!n”,num);else printf(“%d is not a prime!n”,num);} main(){ int num;printf(“input a num:”);scanf(“%d”,&num);Prime(num);} 2.寫一個(gè)函數(shù),用“冒泡法”對(duì)輸入的10個(gè)數(shù)字由小到大順序排列,并輸出。說明: (1)排序的函數(shù)名為Sort(2)排序前后的輸入輸出都應(yīng)在主函數(shù)中完成(3)使用數(shù)組作為函數(shù)參數(shù)(4)使用“冒泡法”排序 參考程序如下: #include } } main(){ int num[10];int i;printf(“input 10 numbers:”);for(i=0;i<10;i++) scanf(“%d”,&num[i]);Sort(num);printf(“the sorted numbers:”);for(i=0;i<10;i++) printf(“%d ”,num[i]);} 3.寫一函數(shù),使給定的一個(gè)二維數(shù)組(5×5)轉(zhuǎn)置,即行列互換。說明: (1)使用5×5的二維數(shù)組存放數(shù)據(jù) (2)矩陣轉(zhuǎn)置的函數(shù)名為Turn(2)轉(zhuǎn)置前后的輸入輸出都應(yīng)在主函數(shù)中完成(3)使用數(shù)組作為函數(shù)參數(shù) for(j=0;j<9-i;j++){ } if(num[j]>num[j+1]){ temp=num[j]; } num[j]=num[j+1];num[j+1]=temp;18 參考程序如下: #include } } main(){ int num[5][5]={{1,2,3,4,5},{6,7,8,9,0},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}}; int i,j;printf(“Before array be turned:n”);for(i=0;i<5;i++){ for(j=0;j<5;j++)printf(“%2d ”,num[i][j]);for(j=i;j<5;j++){ } temp=num[i][j];num[i][j]=num[j][i];num[j][i]=temp; printf(“n”);} Turn(num);printf(“After array be turned:n”);for(i=0;i<5;i++){ } } 4.寫一函數(shù),使輸入的字符串反序存放,在主函數(shù)中輸入和輸出字符串。說明: (1)字符串反序的函數(shù)名為Reverse(2)反序前后的輸入輸出都應(yīng)在主函數(shù)中完成(3)使用數(shù)組作為函數(shù)參數(shù) for(j=0;j<5;j++)printf(“%2d ”,num[i][j]);printf(“n”);19(4)需要使用strlen函數(shù)得到字符串長度,需要在源文件頭部加入#include #include } } main(){ char str[50];printf(“input a string:”);scanf(“%s”,str);Reverse(str);printf(“After reversed is %sn”,str);} 5.寫一函數(shù),將兩個(gè)字符串連接。 說明: (1)連接兩個(gè)字符串的函數(shù)名為:Connect(2)將連個(gè)字符串存入兩個(gè)字符串?dāng)?shù)組中,要保證第一個(gè)字符串的長度能夠容納兩個(gè)字符串之和 (3)連接兩個(gè)字符串主要是找到第一個(gè)字符串的結(jié)尾,然后將第二個(gè)字符串連接到第二個(gè)字符串的后邊 (4)輸出格式為: The connected string is *!(5)使用數(shù)組作為函數(shù)參數(shù) (6)連接前后的字符串輸出都要在主函數(shù)中完成,自定義函數(shù)只完成連接功能 參考程序如下: #include第二篇:單片機(jī)實(shí)驗(yàn)9 多分支程序設(shè)計(jì)
第三篇:《C程序設(shè)計(jì)》實(shí)驗(yàn)教案
第四篇:C語言程序設(shè)計(jì)實(shí)驗(yàn)教案