版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第12章實驗指導實驗1順序程序設計實驗2控制語句的使用實驗3數(shù)組與字符串實驗4指針的應用實驗5函數(shù)編程的應用實驗6結構體與共同體實驗7文件函數(shù)的應用
一、實驗目的
(1)熟悉TurboC2.0集成環(huán)境。
(2)掌握C語言的基本操作。
(3)掌握C語言中各種數(shù)據(jù)類型的區(qū)別與應用。
(4)熟練掌握C語言中變量的定義、賦值和使用,表達式語句、輸入/輸出語句的使用。實驗1順序程序設計
(5)掌握C語言中輸入/輸出函數(shù)的使用。
(6)能夠進入C集成編譯環(huán)境進行編輯、保存、編譯、連接及運行,并能進行簡單的程序調試。
(7)在C語言中編制簡單的完整的源程序。
二、實驗要求
(1)調試程序,記錄調試過程中出現(xiàn)的問題及解決辦法。
(2)給出每個問題的算法或畫出流程圖。
(3)編寫程序要規(guī)范、正確,上機調試過程和結果要有記錄,并注意調試程序集成環(huán)境的掌握及應用,不斷積累編程及調試經(jīng)驗。
(4)做完實驗后給出本實驗的實驗報告。
三、實驗設備、環(huán)境
奔騰以上計算機,裝有TurboC2.0軟件。
四、實驗步驟及內容
(一)教師演示講解TurboC環(huán)境的使用
1.重點講解TurboC編譯環(huán)境怎樣編輯C源程序,以及對源程序的編譯、連接、運行。
2.重點介紹TurboC編譯環(huán)境的配置。
(二)讓學生調試程序和編寫簡單的程序
1.調試如下程序,要求將輸入/輸出的值都記錄在實驗報告中:
(1)
#include<stdio.h>
main()
{ints,t,p,sum;
scanf("%d%d%d",&s,&t,&p);
sum=s+t+p;
printf("sum=%d",sum);’
}
(2)
#include<stdio.h>
main()
{charc;
c=getchar();
if((c>='a')&&(c<='z'))c=c-32;
printf("Charis%c",c);
}
(3)
#include<stdio.h>
main()
{intx=1,y=1,z=1;
y=y+z;x=x+y;
printf("%d",x<y?y:x);
printf("%d",x<y?x++:y++);
printf("%d",x);
}
(4)
#include<stdio.h>
main()
{chars[50];
printf("Pleaseinputastring:");
gets(s);/*scanf("%s",s);*/
printf("\nYouinputstringis:%s",s);
}
試比較一下用gets()函數(shù)與scanf()函數(shù)輸入字符串時的區(qū)別。
2.問題:完成以下三個程序,分別以文件名A01.c、A02.c和A03.c進行保存。
(1)定義兩個整型變量x和y,要求利用scanf()函數(shù)從鍵盤對x和y賦值,然后利用printf()輸出兩者之和。
(2)定義兩個變量:整型x和實型y,要求利用scanf()函數(shù)從鍵盤對x和y賦值,然后利用printf()輸出兩者之積。
(3)定義兩字符型變量ch1和ch2,分別用getchar()和putchar()函數(shù)進行輸入/輸出。
要求:
(1)從鍵盤輸入的時候,注意用多種分隔符的方法。
(2)輸出時,格式控制中要包含一些提示字符。
五、討論、思考題
1.是不是任何情況下字符型數(shù)據(jù)都與整型數(shù)據(jù)相通?
2.為什么在格式化輸入函數(shù)scanf()中的變量名前要加&?
實驗2控制語句的使用
一、實驗目的
(1)掌握C語言中控制語句的使用。
(2)進一步加深對C語言中各種數(shù)據(jù)類型及輸入/輸出的理解。
(3)熟練掌握各類控制語句的書寫格式,理解控制語句的作用,能夠結合具體問題正確地應用控制語句來解決。
(4)重點掌握if-else、for、while、do-while語句的使用。實驗2控制語句的使用
二、實驗要求
(1)調試程序,記錄調試過程中出現(xiàn)的問題及解決辦法。
(2)給出每個問題的算法或畫出流程圖。
(3)編寫程序要規(guī)范、正確,上機調試過程和結果要有記錄,并注意調試程序集成環(huán)境的掌握及應用,不斷積累編程及調試經(jīng)驗。
(4)做完實驗后給出本實驗的實驗報告。
三、實驗設備、環(huán)境
奔騰以上計算機,裝有TurboC2.0軟件。
四、實驗步驟及內容
1.調試程序
調試運行下列程序,并對運行結果進行分析。
(1)
#include<stdio.h>
main()
{intI,j,m=0,n=1;
for(I=0;I<3;I++)
for(j=0;j<3;j++)
if(j>I)m=1;
n++;
printf("%d\n",n);
}
調試運行上面的程序,查看運行結果,思考為什么輸出的結果會是這樣?
(2)下面是判斷一個學生考試成績及格與否的程序(成績A,或B,或C者為及格;成績?yōu)镈者為不及格),調試并改進如下程序使其能滿足上述輸出的需要(提示:程序中有三處與題目要求不符或錯誤,請經(jīng)過調試后更正)。
#include<stdio.h>
main()
{charmark="A";
switch(mark)
{case"A":
case"B":
case"C":printf(">=60\n");
case"D":printf("<60\n");
default:printf("Error\n");
}
}
(3)
#include<stdio.h>
main()
{intk=2;
if(k=3)printf("***");
elseprintf("###");
}
本程序的輸出結果是什么?請從本例中體會一下“=”和“==”的區(qū)別。
(4)
#include<stdio.h>
main()
{intk=0;
do
{printf("k=%d\n",k);
}while(k++>0);
}
思考一下:本程序有輸出嗎?循環(huán)條件并不成立,為什么還會有輸出呢?
2.編寫程序
問題1:有一函數(shù):
編寫程序要求:x的值從鍵盤輸入,根據(jù)不同的x值計算出對應的y值,并以“x=?,y=?”的形式輸出。問題2:
求1
+
2
+
3
+
…
+
100之和,如果求的是1
+
2
+
3
+…
+
n呢?分別用for、
while、do-while語句實現(xiàn),然后進行對比。
問題3:求表達式1!+2!+3!+4!+5!+6!+7!+8!+9!+10!之和。
要求:
(1)用while語句實現(xiàn);
(2)用do-while語句實現(xiàn);
(3)用for語句實現(xiàn)。
注意存放最后結果的變量類型。五、實驗注意事項
1.賦值號“=”與關系運算符“==”的區(qū)別。
2.
if-elseif-elseif-else語句中條件隱含的問題。
3.
while與do-while的區(qū)別。
4.復合語句必須用{}括起來,如第1個調試程序。
5.三種循環(huán)語句在應用時的轉換問題。
六、討論、思考題
1.有一分數(shù)序列
1,1,2,3,5,8,…
求此序列的前n項之和,應該如何實現(xiàn)?
2.考慮如下題目:出一百分制成績,要求輸出等級“A”、“B”、“C”、“D”和“E”中,90分以上為A,80~89為B,70~79為C,60~69為D,60分以下為E。
3.思考如下題目:求(1!)!+(2!)!+…+(5!)!。
4.輸入4個數(shù),從小到大排序,并將排序前后的數(shù)輸出。
一、實驗目的
(1)掌握數(shù)組這種構造數(shù)據(jù)類型的特點及使用。
(2)熟練掌握一維數(shù)組的定義、初始化及使用。
(3)熟練掌握字符數(shù)組的定義、初始化及使用。
(4)掌握二維數(shù)組的定義、初始化及檢索、計數(shù)(求和、求積)的應用。實驗3數(shù)組與字符串
二、實驗要求
(1)調試程序,記錄調試過程中出現(xiàn)的問題及解決辦法。
(2)給出每個問題的算法或畫出流程圖。
(3)編寫程序要規(guī)范、正確,上機調試過程和結果要有記錄,并注意調試程序集成環(huán)境的掌握及應用,不斷積累編程及調試經(jīng)驗。
(4)做完實驗后給出本實驗的實驗報告。
三、實驗設備、環(huán)境
奔騰以上計算機,裝有TurboC2.0軟件。
四、實驗步驟及內容
編寫并調試如下程序:
問題1:求100之內的所有素數(shù),并打印輸出(要求每行輸出5個)。
要求:(1)定義一個整型數(shù)組,長度為100。
(2)數(shù)組各元素數(shù)據(jù)要求利用for語句進行賦值。
(3)找到的所有素數(shù)按每行5個數(shù)據(jù)的形式輸出。
說明:素數(shù)是指只能被1和自身整除的數(shù)。
問題2:將一個數(shù)組中的值按逆序重新存放。說明:
(1)數(shù)組的長度不限,自行定義。
(2)本題請分別用以下兩種方法實現(xiàn):
①定義兩個數(shù)組,將源數(shù)組中的數(shù)據(jù)逆序寫入目的數(shù)組。
②只用一個數(shù)組在自身上實現(xiàn)。
問題3:找出二維數(shù)組中的最大值,輸出該最大值及其行、列下標。
要求:(1)先定義并初始化二維數(shù)組。
(2)求出最大值并輸出。
問題4:輸入一個字符串,要求統(tǒng)計出該字符串的長度。
要求:分別用庫函數(shù)和不用庫函數(shù)兩種方法實現(xiàn)。
問題5:輸入一個字符串,查找并刪除其中某一個字符(該字符可以輸入)。
五、實驗注意事項
(1)實驗過程中注意愛護計算機,實驗完畢要按正常操作關閉計算機。
(2)問題2中用一個數(shù)組實現(xiàn)時,必須引入中間變量,還要特別注意循環(huán)結束條件的
設置。
(3)字符串的輸入,可以用gets(),也可以用scanf(),借鑒實驗1并注意它們的
區(qū)別。
(4)找最大值(最小值)的算法:先將第一個值認為是最大(小)的,檢索以后的值,判斷如果當前數(shù)組元素值比保留在變量中的最大(小)值大(小),則用當前數(shù)組元素值替換該變量中的值。
六、討論、思考題
1.分別用一維數(shù)組和二維數(shù)組實現(xiàn)打印以下圖形。
******
******
******
******
2.輸入10個浮點數(shù),統(tǒng)計出其中正數(shù)的個數(shù)、零的個數(shù)、負數(shù)的個數(shù),并分別輸出。
3.求一個3
×
3矩陣主對角線元素之和,另求出其輔對角線元素之和,最后輸出兩個和值。
4.編寫程序輸出3
×
4矩陣中最小元素的值及其行列下標。
5.不用庫函數(shù),分別實現(xiàn)strcpy()、strcmp()、strlwr()、strcat()函數(shù)的功能。
6.猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個;第二天又將剩下的桃子吃掉一半,又多吃一個;以后每天都吃了前一天剩下的一半零一個。到第10天想再吃時,見只剩一個桃子了。編程計算第一天共摘了多少個桃子。
一、實驗目的
(1)理解C語言中指針的本質,區(qū)分指針與指針變量,掌握有關指針的應用。
(2)掌握指針的定義,掌握指向普通變量的指針的使用,掌握如何用指針來處理與數(shù)組有關的問題。實驗4指針的應用
二、實驗要求
(1)調試程序,記錄調試過程中出現(xiàn)的問題及解決辦法。
(2)給出每個問題的算法或畫出流程圖。
(3)編寫程序要規(guī)范、正確,上機調試過程和結果要有記錄,并注意調試程序集成環(huán)境的掌握及應用,不斷積累編程及調試經(jīng)驗。
(4)做完實驗后給出本實驗的實驗報告。
三、實驗設備、環(huán)境
奔騰以上計算機,裝有TurboC2.0軟件。
四、實驗步驟及內容
1.調試運行如下兩個程序,比較輸出結果并進行分析。
程序1:main()
{inta=10,b=20,x,*pa,*pb;
pa=&a;pb=&b;
printf("%d,%d,%d,%d",a,b,*pa,*pb);
x=*pa;*pa=*pb;*pb=x;
printf("%d,%d,%d,%d",a,b,*pa,*pb);
}程序2:main()
{inta=10,b=20,*p,*pa=&a,*pb=&b;
printf("%d,%d,%d,%d",a,b,*pa,*pb);
p=pa;pa=pb;pb=p;
printf("%d,%d,%d,%d",a,b,*pa,*pb);
}
2.調試下面的程序:
#include<stdio.h>
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10},k,*p;
p=a+2;
printf("%d%d",*(p+3),*(p-1));
}
試想一下,為什么是這樣的輸出結果?
3.編寫程序
問題1:用指針操作將從鍵盤輸入的一段英文句子(不超過80個字符)中的所有空格
刪除。
要求:只能定義一個字符數(shù)組,不能用兩個字符數(shù)組。
問題2:交換兩個變量的值。要求:
(1)兩變量在main中給出。
(2)交換的過程在子函數(shù)中進行。
(3)子函數(shù)無返回值,定義為void型。
問題3:輸入三個字符串,按由小到大的順序輸出。
問題4:有15個數(shù)存放在一個數(shù)組中,輸入一個數(shù),要求用折半查找法找出該數(shù)在數(shù)組中的位置。如果該數(shù)不在數(shù)組中,則輸出“Error!”。要求用指針引用數(shù)組元素。
五、實驗注意事項
1.對計算機執(zhí)行程序過程中分配存儲空間及地址的理解。
2.變量的直接引用與間接引用的區(qū)別。
六、討論、思考題
1.分別用下標法和指針引用數(shù)組中的每個元素,該如何實現(xiàn)?比較兩者的異同。
2.輸入一個二維整型數(shù)組,利用指針引用二維數(shù)組中的元素,找出“鞍點”。所謂“鞍點”,就是指該位置上的元素在該行上最大,在該列上最小。
3.編寫程序將數(shù)組中的最大值與最后一個數(shù)交換,最小值與第一個數(shù)交換。如果再將次大的數(shù)與倒數(shù)第二個數(shù)交換,次小的數(shù)與第二個數(shù)交換,依此類推,程序應該怎樣改呢?注:此法為雙向選擇排序法。
一、實驗目的
(1)理解C語言中函數(shù)的概念與作用。
(2)掌握函數(shù)的應用。
(3)掌握編寫自定義函數(shù)的方法。
(4)掌握函數(shù)調用中的實參與形參的關系。
(5)掌握遞歸思想,能編寫簡單遞歸程序。
(6)重點掌握數(shù)組名(或指針)作為函數(shù)參數(shù)的應用。實驗5函數(shù)編程的應用二、實驗要求
(1)調試程序,記錄調試過程中出現(xiàn)的問題及解決辦法。
(2)給出每個問題的算法或畫出流程圖。
(3)編寫程序要規(guī)范、正確,上機調試過程和結果要有記錄,并注意調試程序集成環(huán)境的掌握及應用,不斷積累編程及調試經(jīng)驗。
(4)做完實驗后給出本實驗的實驗報告。
三、實驗設備、環(huán)境
奔騰以上計算機,裝有TurboC2.0軟件。
四、實驗步驟及內容
1.調試程序
調試下面要求的程序,并分析結果。
(1)
#include<stdio.h>
intfunc(inta,intb)
{return(a+b);}
main()
{intx=3,y=8,z=4,r;
r=func(func(x,y),z);
printf("r=%d\n",r);
}
(2)
int*swap(int*a,int*b)
{int*p;
p=a;a=b;b=p;
return(a);
}
main()
{intx=3,y=4,z=5;
swap(swap(&x,&y),&z);
printf("%d,%d,%d",x,y,z);
}思考:上面程序中函數(shù)swap()本來是想將兩個數(shù)的值相互交換,但運行結果交換了嗎?如果沒有,為什么?請改寫程序,并實現(xiàn)交換。
(3)調試并運行第8章例8.6,體會一下變量的作用域范圍。
(4)調試并運行第8章例8.7,思考一下:如果將static去掉,得到的結果一樣嗎?為什么?
2.編寫程序
問題1:判斷一個數(shù)是否為素數(shù)。
要求:
(1)將實驗3中求素數(shù)的過程做成一個子函數(shù),然后在主函數(shù)中輸入數(shù)值,通過調用子函數(shù)來判斷其是否為素數(shù),通過返回值將是否是素數(shù)的結果帶回主函數(shù)。
(2)主函數(shù)主要完成輸入和輸出,輸出時,如果是素數(shù)則輸出信息“yes”,若不是則輸出“no”。
問題2:編寫兩個求字符串長度的函數(shù),在一個函數(shù)中用庫函數(shù)strlen()實現(xiàn),而另一個函數(shù)中不用庫函數(shù),在主函數(shù)中輸入字符串,分別調用兩個函數(shù),并將結果輸出。
要求:在main函數(shù)中只負責輸入字符串和輸出字符串長度,求字符串長度都在自定義函數(shù)中完成。問題3:使用遞歸方法,編寫一個求解S
=
1
+
2
+
3
+…+
n的函數(shù)。
要求:在主函數(shù)中輸入n的值,并且輸出最后結果S;而在子函數(shù)中只求解1~n之和。
問題4:對10個數(shù)從小到大排序(排序方法用冒泡法)。
要求:主函數(shù)中只負責輸入排序前的10個數(shù)和輸出排序后的10個數(shù);排序工作應在自定義函數(shù)中完成。
五、實驗注意事項
(1)調用系統(tǒng)函數(shù)要用包含相應頭文件。
(2)字符串的結束標志是'\0'。
(3)理解數(shù)組名作函數(shù)參數(shù)的本質。
六、討論、思考題
1.通過指針為什么能從被調用函數(shù)帶回值?
2.用遞歸法將一個整數(shù)n轉換成字符串。例如,輸入980,應輸出“980”。說明:n的位數(shù)不確定,可以是任意位數(shù)的整數(shù),并且在主函數(shù)中輸入。
3.編寫一個函數(shù)比較兩個字符串的大小。要求:自定義函數(shù)負責比較兩個字符串,而主函數(shù)負責輸入字符串和輸出最后比較結果(不使用strcmp()函數(shù))。
4.用函數(shù)指針作為變量能調用不同的函數(shù),請思考一下為什么?
5.試利用本實驗編寫的程序組成一個項目。
一、實驗目的
(1)熟悉結構體和共同體的概念。
(2)熟悉結構體變量和共同體變量的定義、賦值與使用。
(3)掌握結構體變量和共同體變量對存儲空間的占用情況。
(4)掌握鏈表的概念,初步學會對鏈表進行操作。實驗6結構體與共同體
二、實驗要求
(1)調試程序,記錄調試過程中出現(xiàn)的問題及解決辦法。
(2)給出每個問題的算法或畫出流程圖。
(3)編寫程序要規(guī)范、正確,上機調試過程和結果要有記錄,并注意調試程序集成環(huán)境的掌握及應用,不斷積累編程及調試經(jīng)驗。
(4)做完實驗后給出本實驗的實驗報告。
三、實驗設備、環(huán)境
奔騰以上計算機,裝有TurboC2.0軟件。
四、實驗步驟及內容
1.調試運行下列程序,記錄調試過程,并分析運行結果。
(1)
structaa
{intx,*y;}*p;
inta[8]={10,20,30,40,50,60,70,80};
structaab[4]={100,&a[1],200,&a[3],10,&a[5],20,&a[7]};
main()
{p=b;
printf(″%d″,*++p->y);
printf(″%d\n″,++(p->x));
}
(2)
strucSTU
{charname[10];
intnum;
};
voidf1(structSTUC)
{structSTUb={"LiSiGuo",2042};
c=b;
}
voidf2(structSTU*C)
{structSTUb={"SunDan",2044};
*c=b;
}
main()
{structSTUa={"YangSan",2041},b={"WangYin",2043};
f1(A);f2(&B);
printf("%d%d\n",a.num,b.num);
}
(3)
uniondata
{intk[2];
floata;
longb;
charc[4];
}u;
main()
{scanf("%d,%d",&u.k[0],&u.k[1]);
printf("k[0]=%d,k[1]=%d,a=%f,b=%ld,c[0]=%c,c[1]=%c,c[2]
=%c,c[3]=%c",u.k[0],u.k[1],u.a,u.b,u.c
[0],u.c[1],u.c[2],u.c[3]);
}
2.編程解決下列問題
問題1:有10個學生,每個學生的數(shù)據(jù)包括學號、姓名和三門課成績。從鍵盤上輸入10個學生的數(shù)據(jù),要求計算出三門課的平均成績并按平均成績排序,然后輸出10個學生的數(shù)據(jù)。
問題2:建立一個鏈表,每個結點包括學號、姓名、性別、年齡。輸入一個年齡,如果鏈表中的結點所包含的年齡等于此年齡,則將此結點刪去。
五、實驗注意事項
1.結構體變量占用的存儲空間是各成員占用的空間之和,而共同體占用的存儲空間是占空間最大的成員占用的空間,程序設計過程中應特別注意這一點。
2.對鏈表的檢索應從鏈表起始結點開始,順著鏈一直找下去,直到找到符合要求的結點或到達鏈表結尾(鏈表指針為NULL)。
六、討論、思考題
1.編寫一個程序,在屏幕上顯示一行字符串中重復出現(xiàn)的字符,并輸出每個字符及重復出現(xiàn)的次數(shù)。
2.編制一個檔案管理程序,檔案內容包括職工號(3位數(shù)字)、姓名、職稱(professor、assiprof、lecturer)、年齡。
要求:
(1)屏幕輸出年齡在45歲以上(含45歲)且職稱是教授的人數(shù)。
(2)輸入任意職工號,顯示該職工的情況。
(3)輸出年齡最高的職工的情況。
提示:方法一,可以用結構體數(shù)組來解決。
方法二,可以使用鏈表來完成。
一、實驗目的
(1)熟悉文件打開、關閉、寫入、讀出的方法;學會使用文件操作函數(shù)。
(2)掌握文件打開、關閉函數(shù)的使用方法。
(3)掌握文本文件讀/寫函數(shù)的使用方法。
(4)掌握二進制文件函數(shù)的使用方法。
溫馨提示
- 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年度項目經(jīng)理部勞動合同范本(含員工離職手續(xù)及注意事項)3篇
- 高壓鈉燈內管課程設計
- 用數(shù)組打課程設計怎么
- 鋼混課程設計內容
- 虛幻5課程設計
- 質量管理工程課程設計
- 移風易俗繪畫課程設計
- 案例課程設計思路
- 高等數(shù)學課程設計可
- 純堿吸氨塔課程設計
- 2024年08月云南省農(nóng)村信用社秋季校園招考750名工作人員筆試歷年參考題庫附帶答案詳解
- 防詐騙安全知識培訓課件
- 心肺復蘇課件2024
- 2024年股東股權繼承轉讓協(xié)議3篇
- 2024年認證行業(yè)法律法規(guī)及認證基礎知識
- 江蘇省建筑與裝飾工程計價定額(2014)電子表格版
- 鑄造工廠設備管理(共21頁)
- 農(nóng)產(chǎn)品收購臺賬(登記經(jīng)營單位及個體經(jīng)營者投售的農(nóng)產(chǎn)品
- 分紅保險精算規(guī)定
- Proud-of-you中英文歌詞
- 基因的表達與調控.ppt
評論
0/150
提交評論