第一篇:c語(yǔ)言上機(jī)實(shí)驗(yàn)指導(dǎo)
第三部分 上機(jī)實(shí)驗(yàn)指導(dǎo)
實(shí)驗(yàn)一 C語(yǔ)言的運(yùn)行環(huán)境和運(yùn)行過(guò)程
一、實(shí)驗(yàn)實(shí)訓(xùn)目的及要求
1、C++語(yǔ)言的運(yùn)行環(huán)境,了解所用的計(jì)算機(jī)系統(tǒng)的基本操作方法,學(xué)會(huì)獨(dú)立使用該系統(tǒng)。
2、了解在該系統(tǒng)上如何編輯、編譯、連接和運(yùn)行一個(gè)C++程序。
3、通過(guò)運(yùn)行簡(jiǎn)單的C++程序,初步了解C++源程序的特點(diǎn)。
二、實(shí)驗(yàn)內(nèi)容
1、C++的啟動(dòng)以及工作環(huán)境介紹。
2、在Visual C++環(huán)境中運(yùn)行C++語(yǔ)言源程序
三、實(shí)驗(yàn)實(shí)訓(xùn)指導(dǎo)
Visual C++提供了一個(gè)集源程序編輯、代碼編譯與調(diào)試于一體的開(kāi)發(fā)環(huán)境,這個(gè)環(huán)境稱為集成開(kāi)發(fā)環(huán)境,對(duì)于集成開(kāi)發(fā)環(huán)境的熟悉程度直接影響程序設(shè)計(jì)的效率。開(kāi)發(fā)環(huán)境是程序員同Visual C++的交互界面,通過(guò)它程序員可以訪問(wèn)C++源代碼編輯器、資源編輯器,使用內(nèi)部調(diào)試器,并且可以創(chuàng)建工程文件。Microsoft Visual C++是多個(gè)產(chǎn)品的集成。Visual C++從本質(zhì)上講是一個(gè)windows應(yīng)用程序。Visual C++有兩個(gè)版本,對(duì)于每一個(gè)版本,都有對(duì)應(yīng)的文檔:
(1)專業(yè)版本,它包括一個(gè)更高級(jí)的優(yōu)化編譯器,更廣泛的文檔,并能設(shè)計(jì)基于DOS的應(yīng)用程序。
(2)標(biāo)準(zhǔn)版本,其費(fèi)用較低,沒(méi)有那么高級(jí)的編譯器,文檔較少,且不能設(shè)計(jì)基于DOS的應(yīng)用程序。
用鼠標(biāo)單擊“開(kāi)始”、“程序”、“Microsoft Visual Studio 6.0”、“Microsoft Visual C++ 6.0”,然后打開(kāi)一個(gè)工程文件,就會(huì)顯示如圖1.5.1所示的窗口,圖中標(biāo)出了窗口中各組成部分的名稱,而且顯示了已裝入Graph工程文件的Visual C++ 6.0的開(kāi)發(fā)環(huán)境,這是在建立了工程文件之后的結(jié)果。
菜單欄
1.File菜單 2.Edit菜單 3.View菜單 4.Insert菜單 5.Project菜單 6.Build菜單 7.Tools菜單
如下圖 編輯C++源程序
[例]一個(gè)C++源程序。#include
int a,b;
a=5;
b=7;
int c=add(a,b);
cout<<”a+b=”< return x+y;} 四、實(shí)驗(yàn)實(shí)訓(xùn)思考題 1、輸入并運(yùn)行例題中程序,熟悉調(diào)試C程序的的方法與步驟。 2、寫(xiě)出一個(gè)C程序的構(gòu)成。 實(shí)驗(yàn)二 C語(yǔ)言的基礎(chǔ)知識(shí) 一、實(shí)驗(yàn)實(shí)訓(xùn)目的及要求 1、掌握C++語(yǔ)言數(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)行的過(guò)程。 二、實(shí)驗(yàn)實(shí)訓(xùn)內(nèi)容 1、輸入程序,運(yùn)行出結(jié)果。 mian(){ char c1 , c2; c1=97;c2=98; cout< 2、分析下程序,寫(xiě)出運(yùn)行結(jié)果,再輸入計(jì)算機(jī)運(yùn)行,將得到的結(jié)果與你分析得到的結(jié)果比較對(duì)照。 main(){ int i , j , m , n;i=8;j=10; m=++i;n=j++; cout< 三、實(shí)驗(yàn)實(shí)訓(xùn)指導(dǎo) 1、在此基礎(chǔ)上 1)將第二行改為: int c1, c2; 再使之運(yùn)行。 3)再將第三行改為: c1=300;c2=400; 再使之運(yùn)行,分析其運(yùn)行結(jié)果。 在該程序中,說(shuō)明了字符型數(shù)據(jù)在特定情況下可作為整型數(shù)據(jù)處理,整型數(shù)據(jù)有時(shí)也可以作為字符型數(shù)據(jù)處理。 2、此程序主要考查自加、自減運(yùn)算符以及復(fù)合運(yùn)算符的用法。 四、實(shí)驗(yàn)實(shí)訓(xùn)思考題 1、“=”和“==”有什么區(qū)別? 2、“&”和“&&”、“|”和“||”有什么區(qū)別? 實(shí)驗(yàn)三 簡(jiǎn)單的C++程序設(shè)計(jì) 一、實(shí)驗(yàn)實(shí)訓(xùn)目的及要求 1.理解C++語(yǔ)言程序的順序結(jié)構(gòu) 2.掌握常用的C++語(yǔ)言語(yǔ)句,熟練應(yīng)用賦值、輸入、輸出語(yǔ)句。 二、實(shí)驗(yàn)實(shí)訓(xùn)內(nèi)容 1、按格式要求輸入/輸出數(shù)據(jù) #include “iostream.h” main(){ int a,b;flost x,y;char c1,c2;cin>>a>>b;cin>>x>>y;cin>>c1>>&c2; cout< 2、輸入三角形三邊長(zhǎng),求三角形面積。 #include “math.h” main(){ float a,b,c,s,area;cin>>a>>b>>c;s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c));cout< 3、已知圓半徑,圓柱高,求圓周長(zhǎng),圓柱體積。 main(){ float r,h,l,v,pi;pi=3.1415926;cin>>r>>h;l=2*pi*r;v=pi*r*r*h;cout< 4、輸入一個(gè)攝氏溫度,要求輸出華氏溫度。公式為f=5/9*c+32.main(){ float c,f;cin>>c; f=5.0/9*c+32;cout< 三、實(shí)驗(yàn)實(shí)訓(xùn)指導(dǎo) 1、第一題運(yùn)行程序,必須按如下方式在鍵盤(pán)上輸入數(shù)據(jù) a=3,b=7 ↙ 8.5,71.82 ↙ a A ↙ 2、修改輸出格式控制符,觀察輸出結(jié)果的變化。 四、實(shí)驗(yàn)實(shí)訓(xùn)思考題 1、已知圓半徑r=1.5,圓柱高h(yuǎn)=3, 求圓周長(zhǎng),圓面積,圓球表面積,圓球體積,圓柱體積。 2、輸入一個(gè)華氏溫度,要求輸出攝氏溫度。公式為c=5/9*(f-32)。 實(shí)驗(yàn)四 選擇結(jié)構(gòu)程序設(shè)計(jì) 一、實(shí)驗(yàn)實(shí)訓(xùn)目的及要求 1、了解C語(yǔ)句表示邏輯量的方法(以0代表“假”以1代表“真”); 2、學(xué)會(huì)正確使用邏輯運(yùn)算符和邏輯表達(dá)式; 3、熟練掌握if語(yǔ)句和switch語(yǔ)句。 二、實(shí)驗(yàn)實(shí)訓(xùn)內(nèi)容 編寫(xiě)程序完成下列題目: 1、已知三個(gè)數(shù)a,b,c,找出最大值放于max中。 2、輸入某學(xué)生的成績(jī),經(jīng)處理后給出學(xué)生的等級(jí),等級(jí)分類如下: 90分以上(包括90): A 80至90分(包括80):B 70至80分(包括70):C 60至70分(包括60):D 60分以下:E 3、有一函數(shù): x?1?x ?1?x?10 y=?2x-1 ?3x-11 x?10 ?用scanf函數(shù)輸入x的值(分別為x<1,1~10,?10三種情況),求y值。 三、實(shí)驗(yàn)實(shí)訓(xùn)指導(dǎo) 1、分析:由已知可得在變量定義時(shí)定義四個(gè)變量a,b,c和max,a,b,c是任意輸入的三個(gè)數(shù),max是用來(lái)存放結(jié)果最大值的。第一次比較a和b,把大數(shù)存入max中,因a,b都可能是大值,所以用if語(yǔ)句中if——else 形式。第二次比較max和c,把最大數(shù)存入max中,用if語(yǔ)句的第一種形式if形式。Max即為a,b,c中的最大值。 #include “iostream.h” main(){ int a,b,c,max; /*定義四個(gè)整型變量*/ cin>>a>>b>>c;if(a>=b) max=a; /*a>=b*/ else max=b; /*amax) max=c; /*c是最大值*/ cout<<“max=”< 若輸入下列數(shù)據(jù),分析程序的執(zhí)行順序并寫(xiě)出運(yùn)行結(jié)果 (1)a=1,b=2,c=3 (2)a=2,b=1,c=3 (3)a=3,b=2,c=1 (4)a=3,b=1,c=2 (5)a=3,b=3,c=2 (6)a=2,b=1,c=2 2、方法一:(用if嵌套`)分析: 由題意知如果某學(xué)生成績(jī)?cè)?0分以上,等級(jí)為A;否則,如果成績(jī)大于80分,等級(jí)為B;否則,如果成績(jī)大于70分,等級(jí)為C;否則,如果成績(jī)大于60分為D;否則,如果成績(jī)小于60分,等級(jí)為E;但當(dāng)我們輸入成績(jī)時(shí)也可能輸錯(cuò),出現(xiàn)小于0或大于100,這時(shí)也要做處理,輸出出錯(cuò)信息。因此,再用if嵌套前,應(yīng)先判斷輸入的成績(jī)是否在0~100之間。 #include“iostream.h” main(){ int score; char grade; cout<<“nplease input a student score:”; cin>>score; if(score>100||score<0) cout<<“ninput error!”; else { if(score>=90) grade='A'; else { if(score>=80) grade='B'; else {if(score>=70) grade='C'; else { if(score>=60)grade='D';else grade='E'; } } } cout<<“nthe student grade:”< } } 輸入測(cè)試數(shù)據(jù),調(diào)試程序。測(cè)試數(shù)據(jù)要覆蓋所有路徑,注意臨界值,例如此題中得100分,60分,0分以及小于0和大于100的數(shù)據(jù)。方法二:用switch語(yǔ)句 分析: switch 語(yǔ)句是用于處理多分支的語(yǔ)句。注意,case后的表達(dá)式必須是一個(gè)常量表達(dá)式,所以在以用switch語(yǔ)句之前,必須把0~100之間的成績(jī)分別化成相關(guān)的常量。所有A(除100以外),B,C,D類的成績(jī)的共同特點(diǎn)是十位數(shù)相同,此外都是E類。則由此可得把score除十取整,化為相應(yīng)的常數(shù)。 #include“iostream.h” main(){ int g,s;char ch; cout<<“ninput a student grade:”;cin>>g;s=g/10; if(s<0||s>10) cout<<“ninput error!”;else { switch(s) { case 10: case 9: ch='A';break; case 8: ch='B';break; case 7: ch='C';break; case 6: ch='D';break; default: ch='E'; } cout<<“nthe student scort:”< } } 輸入測(cè)試數(shù)據(jù),同方法一一樣調(diào)試程序并寫(xiě)出結(jié)果。 3、分析:y是一個(gè)分段表達(dá)式。要根據(jù)x的不同區(qū)間來(lái)計(jì)算y的值。所以應(yīng)使用If語(yǔ)句。 main(){ int x,y; cout<<”please input x :”;cin>>x;if(x<1){ y=x; cout<< “y=”< else if(x<10){ y=2*x-1; cout<<“y=”< else { y=3*x-11; cout<<“y=”< } 四、實(shí)驗(yàn)實(shí)訓(xùn)思考題 c語(yǔ)言如何表示“真”與“假”?系統(tǒng)如何判斷一個(gè)量的“真”與“假”? 實(shí)驗(yàn)五 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 一、實(shí)驗(yàn)實(shí)訓(xùn)目的及要求 熟練掌握while、do—while和for三種循環(huán)語(yǔ)句的應(yīng)用。 二、實(shí)驗(yàn)實(shí)訓(xùn)內(nèi)容 編寫(xiě)程序,完成下列題目: 1、求5! 2、求和s=1!+2!+3! 3、求和s=1!+3!+5! 4、求和s= 3+33+333 5、有一數(shù)列:2/1,3/2,5/3,8/5,?求出這個(gè)數(shù)列的前10項(xiàng)之和。 6、打印500以內(nèi)的“水仙花數(shù)”?!八苫〝?shù)”是一個(gè)三位數(shù),其各位數(shù)立方和等于該數(shù)本身。 7、一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為完數(shù)。求100之內(nèi)的所有完數(shù)。 三、實(shí)驗(yàn)實(shí)訓(xùn)指導(dǎo) 1、程序清單: main(){ int n,t;n=1;t=1; while(t<=5){ n=n*t;t=t+1;} cout< 2、程序清單: main(){ int n,s=0,t=1; for(n=1;n<=3;n++){ t=t*n;s=s+t;} cout< 3、程序清單: main(){ int s=0,t,i,j; for(i=1;i<=3;i++){ t=1; for(j=1;j<=2*i-1;j++)t=t*j;s=s+t;} cout< 4、程序清單: main(){ int s=0,t=3,i;for(i=1;i<=3;i++){ s=s+t;t=10*t+3;} cout< 5、程序清單: 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;} cout< 6、程序清單: main(){ int i,j,k,n; for(n=100;n<=500;n++){ i=n/100;j=n/10-i*10;k=n%10; if(n= =i*i*i+j*j*j+k*k*k)cout< 7、程序清單: main(){ int n,s,j; for(n=1;n<=100;n++){ s=0; for(j=1;j 四、實(shí)驗(yàn)實(shí)訓(xùn)思考題 求Sn=a+aa+aaa+?+aa?a 之值,其中a是一個(gè)數(shù)字。例如:2+22+222+2222+22222(此時(shí)n=5), n由鍵盤(pán)輸入(分別用while和for編程)。 實(shí)驗(yàn)六 函數(shù) 一、實(shí)驗(yàn)實(shí)訓(xùn)目的及要求 1、掌握C語(yǔ)言函數(shù)的定義方法、函數(shù)的聲明及函數(shù)的調(diào)用方法。 2、了解主調(diào)函數(shù)和被調(diào)函數(shù)之間的參數(shù)傳遞方式。 二、實(shí)驗(yàn)實(shí)訓(xùn)內(nèi)容 1、寫(xiě)一個(gè)判斷素?cái)?shù)的函數(shù),在主函數(shù)輸入一個(gè)整數(shù),輸出是否素?cái)?shù)的信息。 2、寫(xiě)一函數(shù),是給定的一個(gè)二位數(shù)組(4×4)轉(zhuǎn)置,即行列互換。 3、寫(xiě)兩個(gè)函數(shù),分別求兩個(gè)正數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個(gè)函數(shù)并輸出結(jié)果。兩個(gè)正數(shù)由鍵盤(pán)輸入。 4、寫(xiě)一函數(shù),用“起泡法”對(duì)輸入的10個(gè)字符按由小到大順序排序。 三、實(shí)驗(yàn)實(shí)訓(xùn)指導(dǎo) 1、程序清單: mian(){ int number; cout<< “請(qǐng)輸入一個(gè)正整數(shù):n”;cin>>number;if(prime(number)) cout<< “n %d是素?cái)?shù).”< cout<<“n %d不是素?cái)?shù).”< int prime(number)/*此函數(shù)用于判別素?cái)?shù)*/ int number;{ int flag=1,n; for(n=2;n 判斷素?cái)?shù)的算法,我們?cè)谝郧皩W(xué)習(xí)循環(huán)的時(shí)候已經(jīng)學(xué)過(guò)了,在這里只是把這個(gè)算法用函數(shù)的形式表示出來(lái)。這里我們要注意函數(shù)的 定義、聲明的方法和格式。 2、程序清單: /*矩陣的轉(zhuǎn)置*/ #define N 4 int array[N][N];convert(array)int array[4][4];{ int i,j,t; for(i=0;i t=array[i][j]; array[i][j]=array[j][i];array[j][i]=t;} } main(){ int i,j; cout<< “輸入數(shù)組元素:n”;for(i=0;i for(j=0;j cout< conver(array); cout<< “轉(zhuǎn)置數(shù)組是:n”;for(i=0;i for(j=0;j cout< 本例題用數(shù)組作為函數(shù)參數(shù),大家要注意數(shù)組作為函數(shù)參數(shù)時(shí)的用法。 3、程序清單: #include “stdio.h” hcf(u,v)int u,v;{ int a,b,t,r;if(u>v){ t=u;u=v;v=t;} a=u;b=v; while((r=b%a)!=0){ b=a;a=r;} return(a);} lcd(u,v,h)int u,v,h;{ return(u*v/h);} main(){ int u,v,h,l;cin>>u>>v;h=hcf(u,v); cout<<“H.C.F=%dn”< cout<<“L.C.D=%dn”< 這是一個(gè)十分典型的算法,同學(xué)們一定要認(rèn)真分析、學(xué)習(xí)。 4、程序清單: /*起泡法排序*/ #define N 10 char str[N];main(){ int i,flag; for(flag=1;flag = =1;){ cout<< “n輸入字符串,長(zhǎng)度為10:n”;cin>>str; if(strlen(str)>N) cout<<“超過(guò)長(zhǎng)度,請(qǐng)重輸!”;else flag = 0;} sort(str); cout<< “n排序結(jié)果:”;for(i=0;i sort(str)char str[N];{ int i,j;char t; for(j=1;j for(i=0;(i t=str[i]; str[i]=str[i+1];str[i+1]=t;} } 四、實(shí)驗(yàn)實(shí)訓(xùn)思考題 編寫(xiě)一個(gè)程序,包括主函數(shù)和如下子函數(shù)。 (1)輸入10個(gè)無(wú)序的整數(shù); (2)用起泡方法從大到小排序;(3)要求輸入一個(gè)整數(shù),用折半查找法找出該數(shù),若存在,在主函數(shù)中輸出其所處的位置,否則,插入適當(dāng)位置。 分析:input函數(shù)完成10個(gè)整數(shù)的錄入。sort函數(shù)完成起泡法排序,search函數(shù)完成輸入數(shù)的查找。 實(shí)驗(yàn)七 指針 一、實(shí)驗(yàn)實(shí)訓(xùn)目的及要求 1.掌握指針變量的定義與引用。 2.熟練使用函數(shù)指針、數(shù)組指針、字符串指針編寫(xiě)應(yīng)用程序。 二、實(shí)驗(yàn)實(shí)訓(xùn)內(nèi)容 1、寫(xiě)一函數(shù),求一個(gè)字符串的長(zhǎng)度。 2、編寫(xiě)一個(gè)函數(shù),將數(shù)組中n個(gè)數(shù)按反序存放。 3、設(shè)一個(gè)函數(shù),調(diào)用它時(shí),每次實(shí)現(xiàn)不同的功能:(1)求兩個(gè)數(shù)之和;(2)求兩個(gè)數(shù)之差;(3)求兩個(gè)數(shù)之積。 三、實(shí)驗(yàn)實(shí)訓(xùn)指導(dǎo) 1、分析: (1)本部分習(xí)題要求全部用指針完成; (2)在main函數(shù)中輸入字符串,并輸出其長(zhǎng)度; (3)本題不能使用strlen()函數(shù); 方法說(shuō)明: 在主函數(shù)中定義一個(gè)指向字符串的指針變量pstr,并將輸入的字符串的首地址賦值給pstr,然后調(diào)用求字符串長(zhǎng)度的函數(shù)strlenth(char*p),得到字符串的長(zhǎng)度。在函數(shù)strlenth(char *p)中,判斷*p是否為’ 0’,如果不為’ 0’,則進(jìn)行l(wèi)en++的操作,直到遇到’ 0’ 為止。然后返回len值。 求字符串長(zhǎng)度的函數(shù)strlenth(char *p)算法如下: (1)定義int len=0; (2)當(dāng)*p!=’ 0’ 時(shí),重復(fù)執(zhí)行(2.1)(2.2),否則算法終止。 len=len+1 p++(3)return(len) 2、分析: (1)在主函數(shù)中輸入10個(gè)數(shù),并輸出排好序的數(shù)。 (2)編寫(xiě)函數(shù)invert()將10個(gè)數(shù)按反序存放。 3、分析: (1)在主函數(shù)中輸入2個(gè)數(shù)a,b,并輸出a,b的和、差和乘積。 (2)分別編寫(xiě)函數(shù)add()、sub()、mul()計(jì)算兩個(gè)數(shù)的和、差、積。(3)編寫(xiě)函數(shù)process(),分別調(diào)用函數(shù)add()、sub()、mul()。 四、實(shí)驗(yàn)實(shí)訓(xùn)思考題 實(shí)現(xiàn)指針移動(dòng)的幾種方法。 實(shí)驗(yàn)八 一維數(shù)組 一、實(shí)驗(yàn)實(shí)訓(xùn)目的及要求 1、掌握一維數(shù)組的定義、賦值和輸入輸出的方法; 2、掌握字符數(shù)組的使用; 3、掌握與數(shù)組有關(guān)的算法(例如排序算法)。 二、實(shí)驗(yàn)實(shí)訓(xùn)內(nèi)容 1、在鍵盤(pán)上輸入N個(gè)整數(shù),試編制程序使該數(shù)組中的數(shù)按照從大到小的次序排列。 2、青年歌手參加歌曲大獎(jiǎng)賽,有10個(gè)評(píng)委對(duì)她的進(jìn)行打分,試編程求這位選手的平均得分(去掉一個(gè)最高分和一個(gè)最低分)。 3、輸入一串字符,計(jì)算其中空格的個(gè)數(shù)。 三、實(shí)驗(yàn)實(shí)訓(xùn)指導(dǎo) 1、分析:C++中數(shù)組長(zhǎng)度必須是確定大小,即指定N的值。排序的方法有多種,我們?nèi)〕銎渲袃煞N作為參考。 方法一:起泡排序 從第一個(gè)數(shù)開(kāi)始依次對(duì)相鄰兩數(shù)進(jìn)行比較,如次序?qū)t不做任何操作;如次序不對(duì)則使這兩個(gè)數(shù)交換位置。第一遍的(N-1)次比 較后,最大的數(shù)已放在最后,第二遍只需考慮(N-1)個(gè)數(shù),以此類推直到第(N-1)遍比較后就可以完成排序。 源程序如下: #define N 10 #include“iostream.h” main(){ int a[N],i,j,temp; cout<<“please input %d numbersn”< for(i=0;i if(a[j]>a[j+1]){ temp=a[j];a[j]=a[j+1];a[j+1]=temp;} } cout<<“the array after sort:n”;for(i=0;i 方法二:選擇排序 首先找出值最小的數(shù),然后把這個(gè)數(shù)與第一個(gè)數(shù)交換,這樣值最小的數(shù)就放到了第一個(gè)位置;然后,在從剩下的數(shù)中找值最小的,把它和第二個(gè)數(shù)互換,使得第二小的數(shù)放在第二個(gè)位置上。以此類推,直到所有的值從小到大的順序排列為止。 #include“iostream.h” #define N 10 main(){ int a[N],i,j,r,temp; cout<<“please input %d numbersn”< for(i=0;i for(j=i+1;j r=j;if(r!=i){ temp=a[r];a[r]=a[i];a[i]=temp;} } cout<<“the array after sort:n”;for(i=0;i 2、分析:這道題的核心是排序。將評(píng)委所打的10個(gè)分?jǐn)?shù)利用數(shù)組按增序(或降序)排列,計(jì)算數(shù)組中除第一個(gè)和最后一個(gè)分?jǐn)?shù)以外 的數(shù)的平均分,其中排序部分這里用選擇法實(shí)現(xiàn)。 main(){int i,j,min; float temp,ave=0;float a[11]; cout<<“n輸入評(píng)委所打的分?jǐn)?shù):n”;for(i=1;i<=10;i++) cin>>a[i];for(i=1;i<=9;i++){ min=i; for(j=i+1;j<=10;j++)if(a[min]>a[j]){ min=j;temp=a[i];a[i]=a[min];a[min]=temp;} } for(i=2;i<=9;i++)/*注意i值的變化范圍*/ ave=ave+a[i]; cout<<“選手所得最后分?jǐn)?shù):”< 3、程序清單: #include for(i=0;i cout<<“空格數(shù)為:”< 四、實(shí)驗(yàn)實(shí)訓(xùn)思考題 已有一個(gè)已排好序的數(shù)組,今輸入一個(gè)數(shù),要求按原來(lái)排序的規(guī)律將它插入數(shù)組中。 實(shí)驗(yàn)九 二維數(shù)組 一、實(shí)驗(yàn)實(shí)訓(xùn)目的及要求 1、掌握二維數(shù)組的定義、賦值和輸入輸出的方法; 2、掌握字符數(shù)組的使用; 3、掌握與數(shù)組有關(guān)的算法(例如排序算法)。 二、實(shí)驗(yàn)實(shí)訓(xùn)內(nèi)容 1、有一個(gè)3×4的矩陣,要求輸出其中值最大的元素的值,以及它的行號(hào)和列號(hào)。 2、打印以下圖案: * * * * * * * * * * * * * * * * * * * * * * * * * 3、求矩陣下三角形元素之和。 三、實(shí)驗(yàn)實(shí)訓(xùn)指導(dǎo) 1、程序清單: #define M 3 #define N 4 main(){ int max,i,j,r,c; static int a[M][N]={{123,94,-10,218},{3,9,10,-83},{45,16,44,-99}};max=a[0][0];for(i=0;i cout<< “max=”<< max<<” row =”< 2、程序清單: main(){ char a[5]={' * ' , ' * ' , ' * ' , ' * ' , ' * '};int i,j,k; char space=' '; for(i=0;i<5;i++)/*輸出5行*/ { cout<<“n”;/* 輸出每行前先換行* / cout<<“ ”;/* 每行前面留5個(gè)空格 */ for(j=1;j<=i;j++) cout< cout< 3、程序清單: #define N 6 main(){ int i,j,sum=0;int a[N][N]={0};cout<<“input 5×5 data:n”;for(i=1;i for(i=1;i cout< 四、實(shí)驗(yàn)實(shí)訓(xùn)思考題 求一個(gè)3×3矩陣對(duì)角線元素之和。 實(shí)驗(yàn)十 結(jié)構(gòu)體和共用體程序設(shè)計(jì) 一、實(shí)驗(yàn)實(shí)訓(xùn)目的及要求 1、掌握結(jié)構(gòu)體類型和結(jié)構(gòu)體變量的定義。 2、掌握結(jié)構(gòu)類型變量的定義和使用; 3、掌握鏈表的概念,初步學(xué)會(huì)對(duì)鏈表進(jìn)行操作; 4、掌握共用體的概念和使用。 二、實(shí)驗(yàn)實(shí)訓(xùn)內(nèi)容 1、有五個(gè)學(xué)生,每個(gè)學(xué)生的數(shù)據(jù)包括學(xué)號(hào),姓名,三門(mén)課的成績(jī),從鍵盤(pán)輸入五個(gè)學(xué)生的數(shù)據(jù),要求打印出每個(gè)學(xué)生的平均成績(jī),以及最高分的學(xué)生的數(shù)據(jù)(包括學(xué)號(hào),姓名,三門(mén)課的成績(jī),平均分?jǐn)?shù))。 2、三個(gè)人圍成一圈,從第一個(gè)人開(kāi)始順序報(bào)號(hào)1,2,3。凡報(bào)到“ 3” 者退出圈子,找出最后流在圈子中的人原來(lái)的序號(hào)。 3、建立一個(gè)鏈表,每個(gè)結(jié)點(diǎn)包括:學(xué)號(hào),姓名,性別,年齡。輸入一個(gè)年齡,如果鏈表中的結(jié)點(diǎn)所包含的年齡等于此年齡,則將此 結(jié)點(diǎn)刪去。 三、實(shí)驗(yàn)實(shí)訓(xùn)指導(dǎo) 用一個(gè)函數(shù)輸入五個(gè)學(xué)生的數(shù)據(jù);用一個(gè)函數(shù)求總平均分;用函數(shù)找出最高分學(xué)生數(shù)據(jù),總平均分和最高分的學(xué)生的數(shù)據(jù)都在主函 數(shù)中輸出。 四、實(shí)驗(yàn)實(shí)訓(xùn)思考題 用鏈表實(shí)現(xiàn)排序。 實(shí)驗(yàn)一 簡(jiǎn)單的C程序設(shè)計(jì)和基本數(shù)據(jù)處理 實(shí)驗(yàn)?zāi)康模?/p> 1.掌握C語(yǔ)言的運(yùn)算符和表達(dá)式的正確使用以及C語(yǔ)言的幾種基本數(shù)據(jù)類型和基本輸入輸出函數(shù)的使用方法。 2.通過(guò)編程進(jìn)一步理解和掌握運(yùn)算符的確切含義和功能。3.理解和掌握運(yùn)算符與運(yùn)算對(duì)象的關(guān)系,優(yōu)先級(jí)和結(jié)合方向。 1.通過(guò)編程,掌握C語(yǔ)言的幾種基本數(shù)據(jù)類型,int、char、flloat、double,以及由這些基本數(shù)據(jù)類型構(gòu)成的常量和變量的使用方法。 2.掌握基本輸入/輸出函數(shù)的使用方法,包括printf()、scanf()、getchar()、putchar()。3.掌握簡(jiǎn)單的C程序的查錯(cuò)方法。實(shí)驗(yàn)內(nèi)容: 一、輸入程序,觀察輸出結(jié)果,并對(duì)語(yǔ)句做必要的注釋。1./* e1.c */ #include int x; x=27 printf(“%4d,%o,%Xn”,x,x,x);} 輸出結(jié)果: 解釋: 2./* e2.c */ #include char ch; int k; ch=’a’;k=10; printf(“%d,%x,%o,%c”,ch,ch,ch,ch,k); printf(“k=%%dn”,k); } 輸出結(jié)果: 解釋: 3./* e4.c */ #include float x=5/2,y=5.0/2; printf(“x=%f,y=%fn”,x,y);} 輸出結(jié)果: 解釋: 二、編寫(xiě)程序。 1. 編程(c1.c)任意輸入3個(gè)整型變量x,y,z和一個(gè)實(shí)型變量avg,計(jì)算并輸出3個(gè)整數(shù)的平均值avg,從鍵盤(pán)輸入數(shù)據(jù)并驗(yàn)證結(jié)果。觀察運(yùn)行結(jié)果。源程序: 輸出結(jié)果: 解釋: 2. 輸入兩個(gè)個(gè)整數(shù)給a,b,然后交換它們的值,源程序: 輸出結(jié)果: 實(shí)驗(yàn)報(bào)告要求 將以上各題的源程序、運(yùn)行結(jié)果,以及實(shí)驗(yàn)中遇到的問(wèn)題和解決問(wèn)題的方法,以及實(shí)驗(yàn)過(guò)程中的心得體會(huì),寫(xiě)在實(shí)驗(yàn)報(bào)告上。 實(shí)驗(yàn)二 選擇結(jié)構(gòu)程序設(shè)計(jì)與循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 實(shí)驗(yàn)?zāi)康?/p> 1、了解C語(yǔ)句表示邏輯量的方法(以0代表“假”以1代表“真”); 2、學(xué)會(huì)正確使用邏輯運(yùn)算符和邏輯表達(dá)式;理解循環(huán)條件和循環(huán)體 3、熟練掌握if語(yǔ)句和switch語(yǔ)句;熟練使用while、do-while語(yǔ)句實(shí)現(xiàn)循環(huán)程序設(shè)計(jì) 4、熟練掌握switch語(yǔ)句中break語(yǔ)句的作用。實(shí)驗(yàn)內(nèi)容 編程,輸入一個(gè)整數(shù),求它的各位數(shù)字之和及位數(shù)。例如123的各位數(shù)字之和是6,位數(shù)是3.輸入輸出示例: 輸入一個(gè)整數(shù):12345 12345有5位數(shù),各位數(shù)字之和是15 提示:n表示一個(gè)整數(shù),則n%10取個(gè)位數(shù),n=n/10去掉個(gè)位數(shù),組成一個(gè)新數(shù)。思考:如果要把每位數(shù)字轉(zhuǎn)換為字符輸出,如何編程。 3. 改錯(cuò),輸入2個(gè)正整數(shù),分別將其逆向輸出。輸入輸出示例: 123的逆向是321 321的逆向是123 void main(){ int n,m=0; scanf(“%d”,n); while(n>0) { m=m+n%10; m=m*10; n=n/10;} printf(“%d的逆向是%dt”,n,m);} 4. 編程,找出200以內(nèi)的所有完數(shù),并輸出其因子。一個(gè)數(shù)如恰好等于它的因子之和,這個(gè)數(shù)稱為完數(shù),如6=1+2+3,其中1、2、3為因子,6為因子和。輸入輸出示例: 1=1 6=1+2+3 28=1+2+4+7+14 main(){ int i,j n;printf();} 實(shí)驗(yàn)報(bào)告要求 將以上各題的源程序、運(yùn)行結(jié)果,以及實(shí)驗(yàn)中遇到的問(wèn)題和解決問(wèn)題的方法,以及實(shí)驗(yàn)過(guò)程中的心得體會(huì),寫(xiě)在實(shí)驗(yàn)報(bào)告上。 實(shí)驗(yàn)三 數(shù)組 實(shí)驗(yàn)?zāi)康?/p> 1.熟練掌握數(shù)組的定義和初始化 2.熟練掌握使用數(shù)組元素的引用 3.繼續(xù)掌握排序算法 實(shí)驗(yàn)內(nèi)容 2.編程,輸入1個(gè)正整數(shù)n(1 輸入輸出示例: 輸入整數(shù)個(gè)數(shù):5 輸入5個(gè)整數(shù):5 2 1 10 9 2 5 9 10 提示:注意下標(biāo)的變化。 思考:如果輸入的是實(shí)數(shù),要求將絕對(duì)值最小的數(shù)與第1個(gè)數(shù)交換,絕對(duì)值最大的數(shù)與最后1個(gè)數(shù)交換,然后輸出交換后的n個(gè)數(shù),如何編程。 3.編程,輸入1個(gè)正整數(shù)n(1 輸入輸出示例: 輸入整數(shù)個(gè)數(shù):10 輸入10個(gè)整數(shù):-11 2 8 5-3-16 9 7 6 10 排序后:2-3 5 6 7 8 9 10-11-16 5.編程,輸入一個(gè)n行m列(n<=4,m<=4)的數(shù)組,先以n行m列的格式輸出該數(shù)組,然后找出該數(shù)組中值最小的元素,輸出該元素及其行下標(biāo)和列下標(biāo)。 輸入輸出示例: 輸入數(shù)組行和列數(shù)n、m:2 3 輸入2行3列的數(shù)組元素: 12-7 15-18 9 11 12.00-7.00 15.00-18.00 9.00 11.00 a[1][0]=-18.00 思考: 1)如果不從鍵盤(pán)輸入數(shù)組元素,而是用初始化的方式給數(shù)組賦值,運(yùn)行結(jié)果一樣嗎? 2)如何修改程序,求絕對(duì)值最大的元素? 3)將數(shù)組a的每一行均除以該行的主對(duì)角元素,然后最大值,試編制程序。 實(shí)驗(yàn)報(bào)告要求 將以上各題的源程序、運(yùn)行結(jié)果,以及實(shí)驗(yàn)中遇到的問(wèn)題和解決問(wèn)題的方法,以及實(shí)驗(yàn)過(guò)程中的心得體會(huì),寫(xiě)在實(shí)驗(yàn)報(bào)告上。 C語(yǔ)言上機(jī)實(shí)驗(yàn)心得 在科技高度發(fā)展的今天,計(jì)算機(jī)在人們之中的作用越來(lái)越突出。而C語(yǔ)言作為一種計(jì)算機(jī)的語(yǔ)言,學(xué)習(xí)它將有助于我們更好的了解計(jì)算機(jī),與計(jì)算機(jī)進(jìn)行交流,因此,我們一定要學(xué)好C語(yǔ)言,這對(duì)我們以后的發(fā)展是十分重要的。 說(shuō)到這,上機(jī)實(shí)驗(yàn)當(dāng)然就是一個(gè)必不可少的環(huán)節(jié)了,C語(yǔ)言靈活、簡(jiǎn)潔的特點(diǎn),只有通過(guò)編程實(shí)踐才能真正了解,真正說(shuō)懂。為了更好地學(xué)習(xí)語(yǔ)法規(guī)定、掌握程序設(shè)計(jì)方法、提高程序開(kāi)發(fā)能力,我們必須實(shí)際上機(jī)、編寫(xiě)程序。 通過(guò)實(shí)驗(yàn)我也發(fā)現(xiàn)了自己不少的問(wèn)題,這都是只看書(shū)上的程序而沒(méi)有自己親身上機(jī)編寫(xiě)程序而無(wú)法得知的,假如我們只因看熟書(shū)上的程序就以為自己已經(jīng)掌握了C語(yǔ)言那就大錯(cuò)特錯(cuò)了。 我主要存在以下的這些缺點(diǎn): 1、學(xué)習(xí)耐心與細(xì)心不足,如scanf(“%d”,&n);中的“&”有時(shí)候會(huì)忘了。而在最后輸出時(shí)又錯(cuò)寫(xiě)成printf(“%d”,&n);從而錯(cuò)誤得輸出了地址而不是我原來(lái)想要的答案。 2、編程思想不夠發(fā)散,看著題目有時(shí)想不出解答的方法,更不用說(shuō)編寫(xiě)程序來(lái)解題了。 3、4、基本功不夠,有些函數(shù)的表達(dá)不太精通,需要看書(shū)來(lái)核實(shí),以致耗時(shí)較多。知識(shí)不夠廣,有些內(nèi)容沒(méi)有學(xué)好,不能要用到時(shí)及時(shí)反映出來(lái),認(rèn)識(shí)程度不夠深刻。 5、6、有時(shí)候不夠精簡(jiǎn),有一點(diǎn)用處不大或者說(shuō)沒(méi)有也可以的文字存在。 英語(yǔ)水平較差,對(duì)錯(cuò)誤的地方雖然電腦有說(shuō),但由于是英文,理解上還是存在一點(diǎn)問(wèn)題。 為了能更好地學(xué)好C語(yǔ)言,在今后學(xué)習(xí)中我要更多的動(dòng)腦,綜合運(yùn)用所學(xué),多看相關(guān)東西,多上機(jī)練習(xí),提高電腦水平,增強(qiáng)自學(xué)能力,把已會(huì)的東西掌握好。 實(shí)驗(yàn)中我深刻意識(shí)到完成程序的編寫(xiě),決不意味著萬(wàn)事大吉。認(rèn)為萬(wàn)無(wú)一失的程序,實(shí)際上機(jī)運(yùn)行時(shí)可能會(huì)出現(xiàn)很多意想不到的問(wèn)題。有時(shí)編譯程序檢測(cè)出一大堆錯(cuò)誤,有時(shí)程序能夠順利運(yùn)行,但是運(yùn)行結(jié)果并不是你預(yù)期中想要的。因?yàn)殚_(kāi)發(fā)環(huán)境所提供的編譯系統(tǒng)無(wú)法發(fā)現(xiàn)程序邏輯錯(cuò)誤,或者是你原來(lái)所設(shè)計(jì)時(shí)的理論錯(cuò)誤,這就只能靠自己的上機(jī)經(jīng)驗(yàn)來(lái)分析判斷錯(cuò)誤的所在了。所以程序的調(diào)試是一個(gè)技巧性很強(qiáng)的工作,它可能比編一個(gè)程序耗時(shí)更多。由此可看出上機(jī)實(shí)踐的重要性。 通過(guò)本次C語(yǔ)言上機(jī)實(shí)驗(yàn),我對(duì)這個(gè)介于人類與非人類之間的計(jì)算機(jī)編程語(yǔ)言有了一定的體驗(yàn)。編程的時(shí)候有因?yàn)轫樌幊龀绦蚨_(kāi)心過(guò)、有因?yàn)樽龅帽热思衣魫炦^(guò)、有因?yàn)椴恢獜暮稳胧侄鵁o(wú)奈過(guò)、有因?yàn)椴恢e(cuò)出在哪而彷徨過(guò)??但隨著練習(xí)的增多,我對(duì)C語(yǔ)言比以前熟了很多,不再只是紙上談兵,我都有能力獨(dú)立做出一些程序,可能對(duì)于一些“高手來(lái)說(shuō)這不算什么,或者他們?cè)缇蜁?huì)了,但我依然覺(jué)得很開(kāi)心,因?yàn)槲腋易约罕仁沁M(jìn)步了。 當(dāng)然,我還得感謝老師的指導(dǎo)與幫助,如果沒(méi)有老師和其他同學(xué)的指點(diǎn),我可能對(duì)C語(yǔ)言還是一籌莫展,在實(shí)驗(yàn)中遇到的大大少少的問(wèn)題與所犯過(guò)的錯(cuò)誤將是我以后的要加以注意的地方與認(rèn)真審查的部分,為我奠定堅(jiān)固的基石。伴隨著學(xué)習(xí)的深入,我發(fā)現(xiàn)高深的東西還有很多很多,不懂不熟的知識(shí)還有很多,所以我不能停步,對(duì)C語(yǔ)言,我以后會(huì)更加努力學(xué)習(xí)的。 C語(yǔ)言程序設(shè)計(jì)上機(jī)指導(dǎo)十八 一、上機(jī)目的(1)、通過(guò)練習(xí)掌握指針的概念及應(yīng)用; (2)、通過(guò)練習(xí)了解指針作為函數(shù)參數(shù)的使用方法; (3)、復(fù)習(xí)一位數(shù)組、二維數(shù)組和字符串的概念及應(yīng)用; 二、上機(jī)內(nèi)容及要求 首先在D盤(pán)根目錄下新建一個(gè)文件夾,并用自己的10位學(xué)號(hào)姓名命名,將自己上機(jī)過(guò)程編寫(xiě)的C程序全部保存到該文件夾中。 本次上機(jī)任務(wù) (1)在不改變?cè)嘏帕许樞虻幕A(chǔ)上,從10個(gè)數(shù)中找出其中的最大值和最小值。(形參和實(shí)參均使用指針變量,參考【例8-17】)文件名保存為T(mén)1 (2)編寫(xiě)函數(shù)my_strcat(s1,s2),將s2所指字符串的內(nèi)容連接到s1所指字符串的后面,并自動(dòng)覆蓋s1串末尾的’
第二篇:VC6.0上機(jī)指導(dǎo)--- C語(yǔ)言實(shí)驗(yàn)講義
第三篇:C語(yǔ)言上機(jī)實(shí)驗(yàn)心得
第四篇:C語(yǔ)言上機(jī)指導(dǎo)1