第一篇:C語言-實驗四
實
驗
報
告
課程名稱實驗項目
學院 系別 班級/學號 學生姓名 實驗日期 成績 指導教師
程序設計基礎(C語言)實驗四 數組
(二)
一、實驗目的
1.掌握二維數組的定義和初始化。2.掌握二維數組元素的引用及其應用。
二、實驗內容
注:本次實驗完成前三個題目或者僅完成第四個題目最高分為90分,完成全部四個題目最高分100分。
題目1:輸入十個人的姓名,并按升序輸出。(用選擇法或者冒泡法排序)
流程圖:
代碼:
#include
{ int i,j;char a[10][5],t[2];printf(“請輸入十個人的名字:n”);for(i=0;i<10;i++){ } for(j=0;j<10;j++){
} printf(“排序輸出:n”);for(i=0;i<10;i++)for(i=0;i<10-j;i++){
} if(strcmp(a[i],a[i+1])>0){
} strcpy(t,a[i]);strcpy(a[i],a[i+1]);strcpy(a[i+1],t);gets(a[i]);} puts(a[i]);return 0;}
題目2:求兩個矩陣的積。如:
運算規則為:
第i行第j列相乘得到結果矩陣中r[i][j]的值。比如:
r[0][0] = 1*1+2*5+3*8=35;r[0][1] = 1*5+2*3+3*1=14;r[1][0] = 4*1+5*5+6*8=77;r[1][1] = 4*5+5*3+6*1=41;要求:
1.數組的行數和列數不超過100。
2.輸入第一行中,第一個正整數m,表示第一個矩陣的行數,輸入第二個正整數n,表示第一個矩陣的列數,也即是第二個矩陣的行數,輸入第三個正整數p,表示第二個矩陣的列數。
3.接下來的m*n個數是第一個矩陣中的數。4.再接下來的n*p個數是第二個矩陣中的數。5.輸出計算結果,為一個m行,p列的矩陣。流程圖:
#include
int a[100][100]={0},b[100][100]={0},c[100][100]={0},i,j,k,n,m,p;printf(“請輸入第一個矩陣的行數m:n”);scanf(“%d”,&m);printf(“請輸入正整數n(第一個矩陣的列數,也是第二個矩陣的行數):n”);
for(i=0;i for(j=0;j printf(“這兩個矩陣的和為:n”);for(i=0;i } for(j=0;j 題目3:求矩陣的鞍點。鞍點位置上的元素在該行中值最大,在該列中值最小。如下面矩陣的鞍點為35。 【輸入】前兩個數為行數和列數,其后是矩陣中的元素 【輸出】如果沒有鞍點,輸出NO;如果有輸出格式為:[值1,行下標1,列下標1],[值2,行下標2,列下標2]…… 流程圖: #include int a[100][100];int m,n,i,j,t,k;printf(“請輸入行數m和列數n:n”);scanf(“%d%d”,&m,&n);printf(“請輸入這個%d*%d矩陣:n”,m,n);for(i=0;i for(j=0;j for(t=0,j=1;j } k=1;printf(“鞍點[%d]是%d:行下標%d,列下標%dn”,k,a[i][t],i,t);k++;} return 0;} 運行結果: 題目4:學生成績統計 ? 一個班共有6名學生,已知每個學生有5門課程的成績 ? 請輸出每個學生的平均成績 ? 請輸出每門課程的平均成績 ? 請輸出學生的最高平均成績和序號 ? 請輸出課程的最高平均成績和序號 流程圖: #include float a[7][6],b[7],c[6];int m,n,i;printf(“請輸入6名學生的5門課程的成績:n”);for(m=1;m<7;m++){ } for(m=1;m<7;m++){ } for(n=1;n<6;n++){ } for(m=1;m<7;m++)c[n]=0;for(m=1;m<7;m++)c[n]+=a[m][n];b[m]=0;for(n=1;n<6;n++)b[m]+=a[m][n];for(n=1;n<6;n++)scanf(“%f”,&a[m][n]);b[m]=b[m]/5;printf(“第%d名學生的平均成績為%.1fn”,m,b[m]);c[n]=c[n]/6;printf(“第%d門課的平均成績為%.1fn”,n,c[n]); } { } for(m=1;m<6;m++){ } return 0;i=0;for(n=1;n<6;n++){ } if(i==5)printf(“第%d門課成績最高為%.1fn”,m,c[m]);if(c[m]>=c[n])i++;i=0;for(n=1;n<7;n++){ } if(i==6)printf(“第%d名學生成績最高為%.1fn”,m,b[m]);if(b[m]>=b[n])i++;運行結果: 題目5:井字格游戲 程序大致的執行過程如圖所示: 功能包括: 1.允許兩個玩家下棋 2.允許玩家輸入下棋的坐標 3.顯示當前棋盤狀態 4.判斷玩家是否下錯位置,即在已經下過棋的位置再次下棋 5.判斷玩家下棋后,輸贏狀態 6.在屏幕提示中指導玩家交替下棋 流程圖: 省列。代碼: #include T[site1][site2]='X';for(i=0;i<3;i++){ printf(“-------n”);for(j=0;j<3;j++){ printf(“|”);printf(“%c”,T[i][j]);} printf(“|n”);if(i==2) } else return 99;} printf(“-------n”);} return 0;int printerB(int site1,int site2){ if(tasic[site1][site2]==0&&basic[site1][site2]==0){ tasic[site1][site2]=-1;T[site1][site2]='O';for(i=0;i<3;i++){ printf(“-------n”);for(j=0;j<3;j++) { printf(“|”);printf(“%c”,T[i][j]);} printf(“|n”);if(i==2){ printf(“-------n”);} } return 0;} else return-99;} int main(){ int m,n,a,b;while(kongzhi==1){ if((basic[0][0]+basic[0][1]+basic[0][2]==3)||(basic[1][0]+basic[1][1] do { a=0;printf(“請A下子:”);scanf(“%d%d”,&m,&n); a=printerA(m,n);if(a==99)printf(“對不起,您下錯位置了!n”);} while(a==99);+basic[1][2]==3)||(basic[2][0]+basic[2][1]+basic[2][2]==3)||(basic[0][0]+basic[1][1]+basic[2][2]==3)||(basic[0][2]+basic[1][1]+basic[2][0]==3)){ printf(“A贏了!n”);return 0;} do { b=0;printf(“請B下子:”);scanf(“%d%d”,&m,&n); b=printerB(m,n);if(b==-99) printf(“對不起,您下錯位置了!n”);} while(b==-99);if((tasic[0][0]+tasic[0][1]+tasic[0][2]==-3)||(tasic[1][0]+tasic[1][1]+tasic[1][2]==-3)||(tasic[2][0]+tasic[2][1]+tasic[2][2]==-3)||(tasic[0][0]+tasic[1][1]+tasic[2][2]==-3)||(tasic[0][2]+tasic[1][1]+tasic[2][0]==-3)) { printf(“B贏了!n”);return 0;} i++;if(i==9){ printf(“平局!”);return 0;} } } 運行結果: 心得體會:這幾道題加深了我對數組的理解,及其相關應用。 實驗四 SQL語言——數據更新操作 2007-06-16 01:12:44|分類: 課程作業 |標簽:數據更新操作sql語言|字號大中小 訂閱 實驗四 SQL語言——數據更新操作 三、實驗條件與環境 1.通用PC機 2.PC機必須安裝Windows 2000系列、Windows XP系列或Windows NT操作系統平臺 3.PC機還須安裝Microsoft SQL Server 2000 任意一版本(個人版、標準版、企業版) 4.最好有一臺公用的SQL Server 2000 服務器 四、實驗目的1.通過上機實驗進一步加深對SQL數據更新(插入、修改及刪除)語句的基本語法格式的掌 握 2.通過上機實驗掌握單個元組插入操作的實現過程 3.通過上機實驗掌握多個元組插入操作的實現過程 4.通過上機實驗掌握單個元組修改操作的實現過程 5.通過上機實驗掌握多個元組修改操作的實現過程 6.通過上機實驗掌握單個元組刪除操作的實現過程 7.通過上機實驗掌握多個元組刪除操作的實現過程 8.通過上機實驗加深對更新操作時數據庫中數據一致性問題的了解 9.通過上機實驗加深對約束條件在數據更新操作執行中的作用問題的了解 五、實驗要求 1.本實驗所有實驗內容要求在規定時間(2課時)內完成2.實驗內容中涉及到的各更新操作均通過SQL語言來實現 3.本實驗中各操作內容的執行均會更新當前數據庫,為便于下一實驗內容的順利執行,請在每成功完成一個實驗內容后重新導入初始狀態下的實驗數據庫 4.實驗完成后需要書寫實驗報告,本次實驗報告需在下次實驗課堂上上交 六、實驗內容: 1.在S表中插入元組“s6,華譽,40,廣州,02085268888” 2.在J表中插入元組“j8,傳感器廠” 3.對每一個供應商,求他為各種工程供應零件的總數量,并將此結果存入數據庫 4.將P表中PNO值為p6的元組的color屬性值改為綠,weight屬性值改為60 5.將SPJ表中前4個元組的qty屬性值統一修改為300 6.將S表中city屬性名含有“京”或“津”的相應status屬性值增加100 7.將供應商s2為“一汽”工程項目所供應的零件數量修改為2000 8.將全部紅色零件的顏色修改為淺紅色 9.由s5供給j4的零件p6改為由s3供應,請在數據庫中作必要的數據修改 10.在SPJ表中新增一列屬性名為SDATE的屬性列,對該表中的每一元組在SDATE屬性列 上填上實驗當時的日期和時間 11.刪除所在城市為“廣州”的供應商記錄 12.刪除所有零件名稱中第一個字為“螺”字的零件記錄,并在供應情況表中刪除相應的記錄 13.刪除s3和s4兩供應商為“三建”工程供應“螺母”或“螺絲刀”零件的相應供應情況數 據信息 七、實驗總結: 數據更新操作(插入操作[INSERT]、修改操作[UPDATE]、刪除操作[DELETE])是關系數據庫系統中一種極為重要、數據更新能力強、使用靈活的數據操縱方式,此數據操作的使用不是完全獨立的,而是和數據定義操作、數據查詢操作有著緊密聯系的。實驗完成后,請同學們總結一下SQL語言在實現各種數據更新操作時與數據定義操作和數據查詢操作兩類操作之間的相互聯系,通過深入總結,從而學會利用SQL語言實現較為復雜的數據更新任務。 實驗四 SQL語言——數據更新操作 實驗內容參考答案 六、實驗內容 1.在S表中插入元組“s6,華譽,40,廣州,02085268888” use shiyan go insert into s values('s6','華譽',40,'廣州','02085268888') 2.在J表中插入元組“j8,傳感器廠” use shiyan go insert into j(jno,jname) values('j8','傳感器廠') 3.對每一個供應商,求他為各種工程供應零件的總數量,并將此結果存入數據庫 use shiyan go create table TotalQTYofS(SNO char(4)not null unique,TotalQTY int); insert into TotalQTYofS select sno,sum(qty) from spj group by sno; 4.將P表中PNO值為p6的元組的color屬性值改為綠,weight屬性值改為60 use shiyan go update p set color='綠',weight=60 where pno='p6' 5.將SPJ表中前4個元組的qty屬性值統一修改為300 use shiyan go update spj set qty=300 from(select top 4 * from spj order by sno)as table1 where spj.sno=table1.sno 6.將S表中city屬性名含有“京”或“津”的相應status屬性值增加100 use shiyan go update s set status=status+100 where city like '%京%' or city like '%津% 7.將供應商s2為“一汽”工程項目所供應的零件數量修改為2000 use shiyan go update spj set qty=2000 where sno='s2' and jno=(select jno from j where jname='一汽') 8.將全部紅色零件的顏色修改為淺紅色 use shiyan go update p set color='淺紅' where color='紅' 9.由s5供給j4的零件p6改為由s3供應,請在數據庫中作必要的數據修改 use shiyan go update spj set sno='s3' where sno='s5' and jno='j4' and pno='p6' 10.在SPJ表中新增一列屬性名為SDATE的屬性列,對該表中的每一元組在SDATE屬性列 上填上實驗當時的日期和時間 use shiyan go alter table spj add SDATE datetime update spj set SDATE=getdate() 11.刪除所在城市為“廣州”的供應商記錄 use shiyan go delete from s where city='廣州' 12.刪除所有零件名稱中第一個字為“螺”字的零件記錄,并在供應情況表中刪除相應的記錄 use shiyan go delete from p where pname like '螺%' delete from spj where pno in(select pno from p where pname like '螺%') 13.刪除s3和s4兩供應商為“三建”工程供應“螺母”或“螺絲刀”零件的相應供應情況數據信息 use shiyan go delete from spj where(sno='s3' or sno='s4')and jno in(select jno from j where jname='三建')and pno in(select pno from p where pname='螺母' or pname='螺絲刀') 實驗 四、Matlab的程序設計 (一)實驗目的 1.掌握利用if語句實現選擇結構的方法。 2.掌握利用switch語句實現多分支選擇結構的方法。3.掌握利用for語句實現循環結構的方法。4.掌握利用while語句實現循環結構的方法。5.掌握Matlab函數的編寫及調試方法。 (二)實驗環境 1.計算機 2.MATLAB7.0集成環境 (三)實驗內容 1、編寫一個函數,計算下面函數的值,給出標量x的值,調用該函數后,返回y的值。function y=myfun1(x)?sinx,?y(x)??x,??x?6,?x?00?x?3x?3 選擇一些數據測試你編寫的函數。function [y]=myfun1(x)if x<=0 y=sin(x);elseif x>0&x<=3 y=x;elseif x>3 y=-x+6;End 結果: >> x=5;>> [y]=myfun1(x)y = 1 2、編寫一個函數求向量x中元素的平均值、最大值、最小值、均方根值。 function [m_x,max_x,min_x,rms_x]=myfun2(x)方均根值(Root Mean Square)的計算公式為: rms?1NN?i?1xi2 用下面數據測試你寫的函數: function [m_x,max_x,min_x,rms_x]=myfun2(x)%求平均值 sum_x=sum(x);%向量元素求和 [m,n]=size(x);%最好用n=length(x);m_x=sum_x/n; %求最大值 采用逐個比較方式 if x(1)>x(2)max_x=x(1);else max_x=x(2);end for k=3:n if max_x else max_x=max_x;%可省略 end end %求最小值 if x(1) min_x=x(2);end for k=3:n if min_x>x(k) min_x=x(k); else min_x=min_x;%可省略 end end %求均方根值 sum_x2=0;for k=1:n sum_x2=sum_x2+x(k).^2;rms_x=sqrt(sum_x2/n);end m_x;max_x; min_x; rms_x;%按照函數值行(1)x=sin(0:0.01:6*pi)運行結果:>> x=sin(0:0.01:6*pi);>> [m_x,max_x,min_x,rms_x]=myfun2(x)m_x =-1.1256e-007 max_x = 1.0000 min_x =-1.0000 rms_x = 0.7071(2)x=rand(1,200),得到的x為200個(0,1)之間均勻分布的隨機數。>> x=rand(1,200);>> [m_x,max_x,min_x,rms_x]=myfun2(x)m_x = 0.5231 max_x = 0.9994 min_x = 0.0056 rms_x = 0.5869 3、編寫求解方程ax?bx?c?0的根的函數(這個方程不一定為一元二次方程,因a、b、c的不同取值而定),這里應根據a、b、c的不同取值分別處理,有輸入參數提示,當a?0,b?0,c~?0時應提示“為恒不等式!”。并輸入幾組典型值加以檢驗。2M文件: disp('關于方程ax^2+bx+c=0')a=input('請輸入系數a=');b=input(' b=');c=input(' c=');if a==0&&b==0 if c==0 disp('解為全體實數'); else disp('為恒不等式!'); end else P=[a,b,c]; x=roots(P)end disp('關于方程ax^2+bx+c=0')a=input('請輸入系數a=');b=input(' b=');c=input(' c=');if a==0&&b==0 if c==0 disp('解為全體實數'); else disp('為恒不等式!'); end else P=[a,b,c];x=roots(P)end 工作空間測試: 關于方程ax^2+bx+c=0 請輸入系數a=2 b=4 c=6 x =-1.0000 + 1.4142i-1.0000-1.4142i 4、輸入一個百分制成績,要求輸出成績等級A+、A、B、C、D、E。其中100分為A+,90分~99分為A,80分~89分為B,70分~79分為C,60分~69分為D,60分以下為E。要求:(1)用switch語句實現。 (2)輸入百分制成績后要判斷該成績的合理性,對不合理的成績應輸出出錯信息。 g=input('請輸入成績'); if g<0||g>100 disp('錯誤,輸入的成績應為0~100間的數') else g=fix(g/10); switch g case {10} disp('A+'); case {9} disp('A'); case {8} disp('B'); case {7} disp('C'); case {6} disp('D') otherwise disp('E'); end5、利用for循環語句編寫計算n!的函數程序,取n分別為-89、0、3、5、10驗證其正確性(輸入n為負數時輸出出錯信息)。n=input('請輸入n='); if n<0 disp('錯誤,n取值必須為正數'); else y=1; for i=1:n y=y*i; end disp('n!=');disp(y) 測試: 請輸入n=6 n!= 720 6、Fibonacci數組的元素滿足Fibonacci規則:現要求該數組中第一個大于10000的元素。 a(1)=1;a(2)=1; k=3; a(k)=a(k-1)+a(k-2); while a(k)<10000 k=k+1; a(k)=a(k-1)+a(k-2); 測試: >> ak=a(k)ak = ak?2?ak?ak?1,(k?1,2,?);且a1?a2?1。10946 ? 27、根據6?112?122?132?......?1n,求?的近似值。 2要求:(1)分別采用for循環結構以及向量法來編程實現,比較兩種方法程序運行時間;(2)當n分別取100、1000、10000時,結果是多少? n=[100 1000 10000]; for j=1:3 y=0;k=n(j); for i=1:k y=y+1/i/i; end pai=sqrt(6*y);disp('n='); disp(n(j)); disp('π的近似值為'); disp(pai);結果: n= 100 π的近似值為 3.1321 n= 1000 π的近似值為 3.1406 n= 10000 π的近似值為 3.1415 (四)實驗要求 1、熟練操作MATLAB7.0運行環境; 2、自主編寫程序,必要時參考相關資料; 3、實驗前應寫出程序大致框架或完整的程序代碼; 4、完成實驗報告。 (五)實驗報告要求 見實驗一。 思考題 1、M文件分為哪兩類?這兩類M文件的區別是什么? 答:分為命令文件和函數文件 1)函數文件一般都要帶參數 , 都要有返回結果 , 而命令文件沒有參數與返回結果 2)函數文件的變量是局部變量 , 運行期間有效 , 運行完畢就自動被清除 , 而命令文件的變量是全局變量 , 執 行完畢后仍被保存在內存中 3)函數文件要定義函數名 , 且保存該函數文件的文件名必須是函數名.m。M 函數文件可以有多個因變量和多 個自變量 , 當有多個因變量時用[ ] 括起來。 2、有一分數序列: 1, 3, 5, 8, 1321 22358, 13, 編寫一段程序,求前16項的和。 a=2.0;b=1.0;c=a/b; for 1:16 {b=a;a=a+b; d=(a+b)/a;c=c+d;} ?? ? C語言程序設計實驗 (四)[實驗1] scanf()、printf()函數的使用。 1.實驗題目 輸入1個學生學號和4門課程成績,輸出這個學生的學號、4門課程成績和平均成績。 2.實驗要求 (1)按表格的形式輸出,以行內輸出一個學生的信息。 (2)學號用長整型,各科成績用單精度型。 3.實驗目標 (1)掌握實現人機對話形式的方法,scanf()輸入。 (2)體會根據需要控制輸出格式的方法,printf()輸出。 4.實驗指導 利用格式的數據寬度控制數據的對位輸出。輸出如下格式: The number and score of a student is: |---| |number | score1 | score2 | score3 | sco re4 | average | |---| |10011| 67.5|88.0 |93.5 |78.0|81.75 | |---| [實驗2] getchar()、putchar()函數的使用 1.實驗題目 用getchar()函數讀入a~v之間的一個字母,用putchar()函數輸出一個5行5列的矩陣,該矩陣第一行為讀入的字母,下一行為緊跟該字母后的字母,依此類推。如輸入a,則輸出的矩陣為: aaaaa bbbbb ccccc ddddd eeeee 2.實驗要求 (1)運用getchar()進行字符輸入。 (2)運用putchar()進行字符輸出。 3.實驗目標 (1)體會根據需要控制輸出格式的方法。 [實驗3] 3.6 下面程序運行時在鍵盤上如何輸入?如果a=3,b=4,x=8.5,y=71.82,c1=’A’,c2=’a’,請寫出對應每個scanf函數的輸入情況。 main() { int a,b;float x,y;char c1,c2; scanf(“a=%d□b=%d”,&a,&b); scanf(“□%f %e”,&x,&y); scanf(“□%c %c”,&c1,&c2); } 3.7編一程序,從鍵盤輸入一個圓半徑值,求圓周長、圓面積、圓球表面積、圓球體積。輸出結果時,要求有文字說明,保留2位小數。 提示:設圓半徑為r,則圓周長=2πr,圓面積=πr2,圓球表面積=4πr2,圓球體積= 4πr3/3。 電子科技大學 計算機 學院 標 準 實 驗 報 告 (實驗)課程名稱 C語言程序設計 電子科技大學教務處制表 電 子 科 技 大 學 實 驗 報 告 四 學生姓名: 學 號: 指導教師:劉 勇 實驗地點: 計算機學院軟件306室 實驗日期: ****年**月**日 一、實驗室名稱: 軟件實驗室 二、實驗項目名稱:函數的應用及預處理 三、實驗學時:2 四、實驗原理: 使用Turbo C軟件(簡稱TC),在微型計算機上,對其程序進行編輯、編譯、連接與運行。Turbo C是一個集成環境,它具有方便、直觀、易用的界面和豐富的庫函數。通過上機練習掌握在TC環境下編輯、編譯、連接、和運行C程序的方法和過程。 五、實驗目的 1. 掌握C語言中定義函數的方法; 2. 掌握函數傳值調用的方法; 3. 掌握函數傳址調用的方法; 4. 掌握遞歸函數的設計方法; 5. 掌握命令行參數的使用方法; 6. 掌握函數在不同文件中的編譯、鏈接方法。 六、實驗內容 編程實驗,完成以下上機內容,調試運行程序并完成報告 1)、教材第七章習題7.4; 2)、編寫一個實現冒泡法排序的函數,并在主函數中從鍵盤上輸入6個數后進行排序輸出; 3)、教材第七章習題7.11; 4)、教材第七章習題7.15; 5)、教材第七章習題7.24; 6)、求解漢渃塔(tower of Hanoi)問題。在一塊平板上立有3根立柱,從左到右分別標記為A,B,C。最初在A柱上放有6個大小不等的圓盤,并且大盤在下面,小盤在上面。要求將這些盤從A移到C(可以借助B柱)。條件是:每次只能移動一個盤,并且不允許把大盤放在小盤的上面。(提示:利用函數的遞歸調用); 七、實驗器材(設備、元器件): pc硬件要求:CPU PII 以上,64M 內存,1OOM 硬盤空間即可。 軟件要求:DOS3.0以上/Windows98/Me/XP/NT/2000。 八、實驗步驟: 實驗編程與運行結果 ⑴ 編寫一個求兩個整數的最小公倍數的函數,兩個整數由鍵盤輸入,用主函數調用這個函數,并輸出結果。 程序文件名為7_4.c,源程序清單如下: #include 運行結果: ⑵ 編寫一個實現冒泡法排序的函數,并在主函數中從鍵盤上輸入6個數后進行排序輸出。 程序文件名為testf3.c,源程序清單如下: main(){ int i,j,a[7];int temp;clrscr();for(i=1;i<7;i++){ printf(“nInput a[%d]=”,i);scanf(“%d”,&a[i]);} for(i=1;i<6;i++)for(j=1;j<7;j++){ if(a[j] temp=a[j];a[j]=a[j+1];a[j+1]=temp;} } for(i=1;i<7;i++){ printf(“n%5d”,a[i]);} }_ 運行結果: ⑶ 編寫一個通過函數調用把輸入的小寫字符串變為大寫字符串的程序。 程序文件名為7_11.c,源程序清單如下: #include第二篇:實驗四SQL語言
第三篇:《Matlab語言》實驗四
第四篇:C語言程序設計實驗四(本站推薦)
第五篇:《C語言程序設計》實驗四