第一篇:上機(jī)實(shí)驗(yàn)四
實(shí)驗(yàn)四 串的基本操作實(shí)現(xiàn)-堆存儲(chǔ)結(jié)構(gòu)的實(shí)現(xiàn)
一、實(shí)驗(yàn)?zāi)康?、熟悉visual C++上機(jī)環(huán)境,進(jìn)一步掌握C語(yǔ)言的結(jié)構(gòu)特點(diǎn)。
2、掌握串的基本操作:初始化串、判串為空、求串長(zhǎng)等運(yùn)算及C語(yǔ)言實(shí)現(xiàn)。
二、實(shí)驗(yàn)內(nèi)容(參照課本上的第72-75頁(yè))
編寫一個(gè)程序,實(shí)現(xiàn)求串長(zhǎng)length_str、串連接、串比較、求子串、串插入、串刪除操作。
三、實(shí)驗(yàn)報(bào)告要求(參照《數(shù)據(jù)結(jié)構(gòu)題集》第83頁(yè)實(shí)驗(yàn)報(bào)告模板)
實(shí)驗(yàn)報(bào)告必須有以下內(nèi)容:實(shí)驗(yàn)?zāi)康?、?shí)驗(yàn)內(nèi)容、實(shí)驗(yàn)要求、源程序、測(cè)試結(jié)果(打印界面的形式表示)。
第二篇:計(jì)算方法上機(jī)實(shí)驗(yàn)
龍格-庫(kù)塔
#include
#include
float function(float x,float y)
{
return(0-(y*y));//f(x,y)μ?±í′?ê? }
int main()
{
float x0,x1,y0,y1,k1,k2,k3,k4,a,b,c,n,h;int i;
scanf(“%f %f %f %f”,&a,&b,&c,&n);x0=a;
y0=c;
h=(b-a)/n;
for(i=1;i<=n;i++)
{
k1=h*function(x0,y0);
k2=h*function(x0+h/2,y0+k1/2);k3=h*function(x0+h/2,y0+k2/2);k4=h*function(x0+h,y0+k3);x1=x0+h;
y1=y0+(k1+2*k2+2*k3+k4)/6;
printf(“x%d=%f,y%d=%fn”,i,x1,i,y1);x0=x1;
y0=y1;
}
return 0;
}
拉格朗日
#include
#include
#include
#define maxlength 500
#define pi 3.14***
floata[maxlength],f[maxlength];
float n;
floatlagrange(floata[],floatf[],float x,int n)
{
int k=0,j;
floaty=0.0,l;
while(k<=n)
{
l=1.0;
// printf(“%lfn”,y);
for(j=0;j<=n;j++)
{
if(j!=k)
{
l=l*(x-a[j])/(a[k]-a[j]);// printf(“%lfn”,l);
}
}
//printf(“%lfn”,f[k]);
// printf(“%lfn”,l);
y=y+l*f[k];
k++;
}
printf(“x=%f,y=%fn”,x,y);
return y;
}
float fx1(floatx)
{
return(1/(1+x*x));
}
floatfx2(floatx)
{
return exp(x);
}
floatfx3(float x)
{
return sqrt(x);
}
void math1(float c,float n)
{
int i=0;
float h;
h=2*c/n;
while(i<=n)
{
a[i]=i*h-5;
i++;
}
}
void math2()
{
int i=0;
while(i<=n)
{
a[i]=cos((2*i+1)*pi/2/(n+1));
i++;
}
}
int main()
{
n=20;
int i;
math1(5,n);
for(i=0;i<=n;i++)
{
f[i]=fx1(a[i])
}
lagrange(a,f,0.75,n);
return 0;
}
龍貝格
#include
#include
#include
double t[1000],r[1000];
double f(double x)
{
return(x*x*exp(x));
}
int main()
{
double h,a,b,e;
int i,N,m;
scanf(“%lf,%lf,%d,%lf”,&a,&b,&N,&e);
h=b-a;
m=0;
t[1]=0.5*h*(f(a)+f(b));
printf(“%lf”,t[1]);
r[0]=t[0];
while(1)
{
printf(“n”);
for(i=0;i<((m<4)?m:4);i++)
t[i]=r[i];
m++;
h=h/2;
r[0]=t[0]/2;
for(i=1;i<=pow(2,m);i++)
r[0]+=h*f(a+(i-0.5)*h)/2;
printf(“%lf”,r[0]);
r[1]=(4*r[0]-t[0])/3;
printf(“ %lf”,r[1]);
if(m==1)
continue;
r[2]=(16*r[1]-t[1])/15;
printf(“ %lf”,r[2]);
if(m==2)
continue;
r[3]=(64*r[2]-t[2])/63;
printf(“ %lf”,r[3]);
if(m==3)
continue;
if((fabs(r[3]-t[3])<=e)||(m==N))
break;
}
printf(“nthe current time is :%dn”,m);
return 0;
}
牛頓
#include
#include
#include
double function(double point)
{
return(point*point-2*point*exp(-point)+exp(-2*point));
}
double d_function(double point)
{
return(2*point+2*point*exp(-point)-2*exp(-point)-2*exp(-2*point));}
int main()
{
double beginner,error1,error2;
int max_times=0;
beginner=error1=error2=0;
scanf(“%lf %lf %lf %d”,&beginner,&error1,&error2,&max_times);int current_times=0;
while(current_times<=max_times)
{
if(fabs(function(beginner)) { printf(“%lfn”,beginner); return 0; } if(fabs(d_function(beginner)) { printf(“failuren”); return 0; } beginner=beginner-function(beginner)/d_function(beginner);if(fabs(function(beginner)/d_function(beginner)) printf(“%lfn”,beginner); return 0; } current_times++; } printf(“failuren”); return 0; } 實(shí)驗(yàn)八 折半查找 一、實(shí)驗(yàn)?zāi)康?、熟悉visual C++上機(jī)環(huán)境,進(jìn)一步掌握C語(yǔ)言的結(jié)構(gòu)特點(diǎn)。 2、進(jìn)一步掌握?qǐng)D的基本概念及其含義。 3、掌握查找的結(jié)構(gòu)特征,以及各種存儲(chǔ)結(jié)構(gòu)的特點(diǎn)及使用范圍。 4、掌握查找的基本運(yùn)算及其實(shí)現(xiàn)。 二、實(shí)驗(yàn)內(nèi)容(參照課本上的第220頁(yè)) 設(shè)計(jì)一個(gè)算法,實(shí)現(xiàn)折半查找算法。 三、實(shí)驗(yàn)要求 參照課本220頁(yè)算法9.2 四、實(shí)驗(yàn)報(bào)告要求(參照《數(shù)據(jù)結(jié)構(gòu)題集》第83頁(yè)實(shí)驗(yàn)報(bào)告模板) 實(shí)驗(yàn)報(bào)告必須有以下內(nèi)容:實(shí)驗(yàn)?zāi)康?、?shí)驗(yàn)內(nèi)容、實(shí)驗(yàn)要求、源程序、測(cè)試結(jié)果(打印界面的形式表示)。 上機(jī)實(shí)驗(yàn)要求 一、實(shí)驗(yàn)前的準(zhǔn)備工作 在上機(jī)實(shí)驗(yàn)前應(yīng)事先做好準(zhǔn)備工作,以提高上機(jī)實(shí)驗(yàn)的效率: 1.了解所用的計(jì)算機(jī)系統(tǒng)(包括C編譯系統(tǒng))的性能和使用方法。 2.復(fù)習(xí)和掌握與本實(shí)驗(yàn)有關(guān)的教學(xué)內(nèi)容。 3.準(zhǔn)備好上機(jī)所需程序。要仔細(xì)弄清題意,選擇和設(shè)計(jì)合適的算法。在選擇算法時(shí),應(yīng)當(dāng)是在理解現(xiàn)有算法的基礎(chǔ)上,自己動(dòng)手畫出流程圖再設(shè)計(jì)源程序。手編寫程序應(yīng)當(dāng)書寫整齊,并經(jīng)人工檢查無(wú)誤后才能上機(jī),以提高上機(jī)效率。切忌不編寫程序或抄襲他人程序,注意培養(yǎng)嚴(yán)謹(jǐn)踏實(shí)的學(xué)習(xí)作風(fēng)。 4.對(duì)運(yùn)行中可能出現(xiàn)的問(wèn)題應(yīng)率先作出估計(jì);對(duì)程序中自己有疑問(wèn)的地方,應(yīng)作上記號(hào),以便在上機(jī)時(shí)給予重視。 5.準(zhǔn)備好調(diào)試和運(yùn)行時(shí)所需的數(shù)據(jù)。 二、上機(jī)實(shí)驗(yàn)基本步驟 上機(jī)實(shí)驗(yàn)時(shí)應(yīng)該獨(dú)立上機(jī)。上機(jī)過(guò)程中出現(xiàn)的問(wèn)題,除了系統(tǒng)問(wèn)題外,一般應(yīng)自己獨(dú)立處理,不要輕易舉手問(wèn)教師。尤其對(duì)“出錯(cuò)信息”,應(yīng)善于自己分析判斷。這是學(xué)習(xí)調(diào)試程序的良好機(jī)會(huì),碰到困難時(shí)切忌輕易放棄。 上機(jī)實(shí)驗(yàn)一般應(yīng)包括以下步驟: 1.調(diào)出C編譯系統(tǒng),進(jìn)入C工作環(huán)境,如Turbo C2.0集成環(huán)境。 2.輸入自己編好的程序,注意正確的鍵盤輸入指法。 3.檢查一遍已經(jīng)輸入的程序是否有錯(cuò)(包括輸入錯(cuò)誤和編程中的錯(cuò)誤)。 4.進(jìn)行編譯。如果編譯和連接過(guò)程中發(fā)現(xiàn)錯(cuò)誤,屏幕上會(huì)出現(xiàn)“出錯(cuò)信息”,則根據(jù)提示找到出錯(cuò)位置和原因,加以改正,再進(jìn)行編譯??如此反復(fù),直到順利通過(guò)編譯和連接為止。 5.運(yùn)行程序,并分析運(yùn)行結(jié)果是否正確、合理。組織多組實(shí)驗(yàn)數(shù)據(jù),分別從不同情況下檢查程序的正確性。 6.輸出程序清單和運(yùn)行結(jié)果。特別要進(jìn)行上機(jī)調(diào)試記錄(尤其是出錯(cuò)情況和排錯(cuò)記錄),調(diào)試數(shù)據(jù)和運(yùn)行結(jié)果記錄、心得體會(huì)等。 三、撰寫實(shí)驗(yàn)報(bào)告 做完實(shí)驗(yàn)后要寫實(shí)驗(yàn)報(bào)告,對(duì)整個(gè)實(shí)驗(yàn)進(jìn)行總結(jié)和提高,這是整個(gè)實(shí)驗(yàn)過(guò)程的一個(gè)重要環(huán)節(jié),不要把它看成是一種不必要的負(fù)擔(dān),更不能敷衍了事。針對(duì)本課程的實(shí)驗(yàn)特點(diǎn),建議在書寫實(shí)驗(yàn)報(bào)告時(shí)應(yīng)包括如下內(nèi)容。 1.實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)作為教學(xué)的一個(gè)重要環(huán)節(jié),其目的在于更深入地理解和掌握課程教學(xué)中的有關(guān)基本概念和基本技術(shù),從而進(jìn)一步提高分析問(wèn)題和解決問(wèn)題的能力。因此,當(dāng)著手做一個(gè)實(shí)驗(yàn)的時(shí)候,必須明確實(shí)驗(yàn)?zāi)康模员WC達(dá)到課程所指定的基本要求。在寫實(shí)驗(yàn)報(bào)告時(shí),要進(jìn)一步確認(rèn)是否達(dá)到了預(yù)期的目的。 2.實(shí)驗(yàn)內(nèi)容 實(shí)驗(yàn)的目的是要通過(guò)解決一些具體問(wèn)題來(lái)達(dá)到的。根據(jù)教學(xué)安排、進(jìn)度、實(shí)驗(yàn)條件、可提供的上機(jī)時(shí)數(shù)、學(xué)生的基礎(chǔ)等因素,逐步完成。在實(shí)驗(yàn)報(bào)告中,實(shí)驗(yàn)內(nèi)容是指本次實(shí)驗(yàn)中實(shí)際完成的內(nèi)容,在每一個(gè)實(shí)驗(yàn)題目中,一般都提出了一些具體要求,其中有些具體要求是為了達(dá)到實(shí)驗(yàn)?zāi)康亩岢龅摹R虼?,在?shí)驗(yàn)內(nèi)容中,不僅要寫清楚具體的實(shí)驗(yàn)題目,還應(yīng)包括具體要求。 3.算法和流程圖 算法設(shè)計(jì)是程序設(shè)計(jì)過(guò)程中一個(gè)重要步驟。本章的某些實(shí)驗(yàn)題目給出了方法說(shuō)明,有的還提供了流程圖,但有的沒(méi)有給出流程圖。如果在做實(shí)驗(yàn)的過(guò)程中,使用的算法或流程圖和本書中給出的不一樣,或者書中沒(méi)有給出算法和流程圖,則在實(shí)驗(yàn)報(bào)告中應(yīng)給出較詳細(xì)的算法說(shuō)明與流程圖,并對(duì)其中的主要符號(hào)與變量作相應(yīng)的說(shuō)明。 4.程序清單 程序設(shè)計(jì)的產(chǎn)品就是程序,它應(yīng)與算法或流程圖相一致。程序要具有易讀性,符合模塊化和結(jié)構(gòu)化原則。 5.運(yùn)行結(jié)果 程序運(yùn)行結(jié)果一般是輸出語(yǔ)句所輸出的結(jié)果,對(duì)于不同的輸入,其輸出結(jié)果是不同的。因此,在輸出結(jié)果之前一般還應(yīng)注明輸入的數(shù)據(jù),以便對(duì)輸出結(jié)果進(jìn)行分析和比較。 6.調(diào)試分析和體會(huì) 這是實(shí)驗(yàn)報(bào)告中最重要的一項(xiàng),也是最容易忽視的一項(xiàng)。實(shí)驗(yàn)過(guò)程中大量的工作是程序測(cè)試,在調(diào)試過(guò)程中會(huì)遇到各種各樣的問(wèn)題,每解決一個(gè)問(wèn)題就能積累一點(diǎn)經(jīng)驗(yàn),提高編程的能力。因此,對(duì)實(shí)驗(yàn)的總結(jié),最主要的是程序調(diào)試經(jīng)驗(yàn)的總結(jié)。調(diào)試分析也包括對(duì)結(jié)果的分析。體會(huì)主要是指通過(guò)本次實(shí)驗(yàn)是否達(dá)到了實(shí)驗(yàn)?zāi)康?,有哪些基本概念得到了深入理解等?/p> 1、實(shí)驗(yàn)一:多線程程序設(shè)計(jì):炮打飛機(jī) 實(shí)驗(yàn)?zāi)康模簩W(xué)會(huì)使用多線程進(jìn)行并發(fā)程序設(shè)計(jì) 實(shí)驗(yàn)內(nèi)容:編寫一個(gè)應(yīng)用程序模擬大炮打飛機(jī)。在GUI界面上,飛機(jī)水平飛行,用界面上的按鈕控制大炮的運(yùn)行方向(如向左,向右,向上,向下)。當(dāng)炮彈碰著飛機(jī)后,飛機(jī)墜落。 2、實(shí)驗(yàn)二:數(shù)據(jù)庫(kù)編程:書目信息管理 實(shí)驗(yàn)?zāi)康模赫莆諗?shù)據(jù)庫(kù)編程技術(shù)。能正確連接數(shù)據(jù)庫(kù),能對(duì)數(shù)據(jù)庫(kù)中信息進(jìn)行查詢、插 入、刪除、修改。 實(shí)驗(yàn)內(nèi)容:在數(shù)據(jù)庫(kù)中創(chuàng)建一張書目信息表,包括書名、作者、出版社、出版日期、書 號(hào)、價(jià)格字段。設(shè)計(jì)一個(gè)GUI界面進(jìn)行書目管理。在該界面上有四個(gè)選項(xiàng)卡,分別是查詢、插入、刪除、修改。點(diǎn)擊查詢選項(xiàng)卡,出現(xiàn)的界面上有書名、作者、出版社、書號(hào)四個(gè)文本框,一個(gè)按鈕和一個(gè)只讀文本區(qū)。文本框內(nèi)容可以為空,輸入相應(yīng)的查詢信息后(例如根據(jù)書名查詢可以僅輸入書名),點(diǎn)擊界面上的“查詢”按鈕,可以在界面下方的文本區(qū)中顯示出符合條件的書目詳細(xì)信息。點(diǎn)擊插入選項(xiàng)卡,出現(xiàn)的界面上有書名、作者、出版社、出版日期、書號(hào)、價(jià)格文本框,一個(gè)按鈕。在文本框中輸入信息后,點(diǎn)擊“插入”按鈕,該書目信息插入數(shù)據(jù)庫(kù)表中。點(diǎn)擊刪除選項(xiàng)卡,出現(xiàn)的界面上有書名文本框和一個(gè)按鈕,輸入書名后點(diǎn)擊“刪除”按鈕,該書目信息從數(shù)據(jù)庫(kù)表中刪除。點(diǎn)擊修改選項(xiàng)卡,出現(xiàn)的界面上有書名、作者、出版社、出版日期、書號(hào)、價(jià)格文本框,一個(gè)按鈕。輸入的書名必須是已存在的,否則會(huì)彈出消息框顯示出錯(cuò)信息。輸入信息后,點(diǎn)擊“修改”按鈕,數(shù)據(jù)庫(kù)表中的相應(yīng)書目信息被修改為新值。 3、實(shí)驗(yàn)三:Applet編程:鴨子的移動(dòng) 實(shí)驗(yàn)?zāi)康模赫莆誂pplet程序設(shè)計(jì)的方法,學(xué)會(huì)在Applet中繪制圖片,能采用雙緩沖技術(shù)進(jìn)行圖片繪制,會(huì)在Applet中采用多線程進(jìn)行動(dòng)畫顯示。能在Applet中實(shí)現(xiàn)動(dòng)畫的平滑顯示,避免閃爍現(xiàn)象。 實(shí)驗(yàn)內(nèi)容:在Applet窗口中顯示一只鴨子圖片,要求這只鴨子以每秒100幀的速率水平移動(dòng),移到窗口邊界再返回移動(dòng)。在窗口中點(diǎn)擊鼠標(biāo),鴨子停止移動(dòng);再次點(diǎn)擊鼠標(biāo),鴨子恢復(fù)移動(dòng)。 4、實(shí)驗(yàn)四:網(wǎng)絡(luò)編程:聊天室的實(shí)現(xiàn) 實(shí)驗(yàn)?zāi)康模簳?huì)編寫客戶端和服務(wù)器程序?qū)崿F(xiàn)C/S模式下的通信,會(huì)使用多線程進(jìn)行網(wǎng)絡(luò)編程。 實(shí)驗(yàn)內(nèi)容:編寫一個(gè)聊天室程序:客戶端界面請(qǐng)自行設(shè)計(jì),可使其具有個(gè)性化特征; 可在實(shí)現(xiàn)基本的聊天室功能的基礎(chǔ)上添加個(gè)性化的功能。第三篇:上機(jī)實(shí)驗(yàn)八
第四篇:上機(jī)實(shí)驗(yàn)要求
第五篇:java上機(jī)實(shí)驗(yàn)