當前位置:萬佳範文網 >

實習 >實習報告 >

上機實驗報告

上機實驗報告

一. 題目1. 建立一個學生檔案,內容包括學號,姓名,年齡,性別,數學,物理和英語3門功課成績。要求實現以下功能:1) 數據輸入;2) 查詢某個學生的成績;3) 按平均排列輸出;4) 統計某門課各分數段人數;5) 刪除某個學生記錄;2. 編程實現對二位數進行加,減,乘運算,每運行一次程序做10道題,完成後給出成績(每題10分)。二. 設計思想和模塊劃分1.1.先定義所需要的條件,例如,姓名,學號,性別,三門功課的成績,平均分等。2.輸入姓名,學號,性別,年齡,三門功課的成績後,就輸出相應的姓名,學號,性別,年齡,三門功課的成績。3.打印表頭;4.在求出平均分,並打印出平均分。5.在查找學生,並打印出學生的相關資料;並按照平均分的高低排列;6.在統計學生各科成績是否》=60分,如果是就是通過,否就是沒通過,最後打印出最後的結果。7.刪除學生,選中刪除的學生,如果確定要,那麼該學生的一切記錄就變為0;2.1.隨機調用函數,產生兩個其值為10到99的隨機整數分別放在c,d中用作運算時的運算數。2.隨機調用函數,產生一個值為1到3 的隨機整數放入b中,用來選擇不同的運算。根據b的值選擇不同的運算。當b=1時,去進行c+d的運算練習;當b=2 時,去進行c-d的運算練習;當b=3時,去進行c×d的運算練習。每完成一個算題就給出是否正確的信息。3.根據答案正確與否統計。正確時,顯示’right’; 錯誤時,顯示’wrong’。4.步驟1. 2. 3. 4. 重複10次。5.輸出學生成績。三. 運行結果1. Input the 1 student :num:03name:wfage:18sex:fmath:98phy:75eng:65Input the 2 student :num:06name:scage:17sex:fmath:78phy:45eng:65Input the 3 student :num:09name:ytage:17sex:mmath:69phy:75eng:in s 1 ----------------------------- table-------------------------------------------------------------------------------------------------------------------------------- num name age sex math phy eng ave--------------------------------------------------------------------------------------------------- 3 wf 18 f 98.0 75.0 65.0 79.3--------------------------------------------------------------------------------------------------- 9 yt 17 m 69.0 75.0 50.0 64.7---------------------------------------------------------------------------------------------------- 6 sc 17 f 78.0 45.0 65.0 in s 2Into number:3------------------------------------------------------------------------------------------------ num name age sex math phy eng ave------------------------------------------------------------------------------------------------ 3 wf 18 f 98.0 75.0 65.0 in s 3Into number:6------------------------------------------------------------------------------------------------ num name age sex math phy eng ave------------------------------------------------------------------------------------------------ 6 sc 17 f 78.0 45.0 65.0 62.6 ------------------------------------------------------------------------------------------------true? Y/Ny1 ---------------- table--------------------------------------------------------------------------------------------------------------- num name age sex math phy eng ave------------------------------------------------------------------------------------------------- 3 wf 18 f 98.0 75.0 65.0 79.3-------------------------------------------------------------------------------------------------- 9 yt 17 m 69.0 75.0 50.0 64.7-------------------------------------------------------------------------------------------------- 0 0 0 f 0.0 0.0 0.0 in s 4 t the math t the phy t the eng 1math: pass num is :3 no pass num is :02.32+82=114right!97*15=1455right!99-58=41right!76-66=10right!58+13=71right!37+49=86right!99+52=151right!49*69=5462wrong!73-38=31wrong!86+34=120right!mark is 80四. 主要錯誤改正方法1.在本題的編寫過程中常出現begin 和end 不配對,只要始它們的個數相同就可以了,就可以了。在程序中常出現的’unknown identifier’沒有定義的錯誤,只要在程序前加上定義,就可以了。還有就是type mismatch’的類型不匹配,只要根據前後內容,重新定義,就可以了。2.在本題編寫中,題目要求是兩個兩位數運算,如果寫成c:=random(100)在運行過程中,就會出現一位數運算,只要把它寫成c:=random(90)+10,就可以了。五. 實習小結1.第一題的程序編寫比較複雜,需要較多的定義,因而在後面的程序部分,就常出現標識符重複,而導致的類型不匹配。還有就是每個部分編好後,上下不能連接,而無法調用。2.第二題較第一題簡單,和書上的例題類似,所以,比較簡單,但從中也出現一些不問題。以上兩大題中出現的問題,要在同學的幫助下,才能完成。總的來説兩題程序比較困難六. 程序清單ram twins;const m=3; n=3 ;typestudent=recordnum:integer;name:string[3];age:integer;sex:char;s:array[1..n] of real;math,eng,phy:real;ave:real;end;sarr=array[1..m] of student;ta=array [1..m] of student;f=string[6];varstu:sarr; ct:ta; k,d:integer;procedure readin (var stu:sarr);const wrong='0<=data<=100 ,again!';var j,i:integer; a:student;beginwriteln;writeln('Input ',m,' num name sex math phy eng',' of student.');for j:=1 to m dobeginwriteln;writeln('Input the ',j,' student :');with a dobeginwrite('num:'); readln(num);write('name:'); readln(name);write('age:'); readln(age);write('sex:'); readln(sex);while (sex<>'m')and(sex<>'f') dobeginwrite('sex:'); readln(sex)end;for i:=1 to n do begincase i of1:begin write('math:'); readln(s[i]);while(s[i]<0)or(s[i]>100)dobeginwriteln(wrong);write('math:'); readln(s[i]);end;end;2:begin write('phy:'); readln(s[i]);while(s[i]<0)or(s[i]>100)dobeginwriteln(wrong);write('phy:'); readln(s[i]);end;end;3:begin write('eng:'); readln(s[i]);while(s[i]<0)or(s[i]>100)dobeginwriteln(wrong);write('eng:'); readln(s[i]);end;end;end;end;stu[j]:=a;end;writeln;end;end;procedure ave (var stu:sarr);var j,i:integer; k:real;beginfor j:=1 to m dobegink:=0;with stu[j] dobeginfor i:=1 to n do k:=k+s[i];ave:=k/nend;end;end;procedure px (var stu:sarr);var tm:ta; j,i,p:integer;beginfor j:=1 to m dobeginp:=j;for i:=j+1 to m doif stu[i]>stu[p] then p:=i;tm[1]:=stu[p]; stu[p]:=stu[j]; stu[j]:=tm[1];end;end;procedure head (ct:ta);var i:integer;beginwrite(' '); for i:=1 to 72 do write('-');writeln;write('',' num':4,' ','name':9,' ','age':8,' ','sex':5,' ','math':6,' ','phy':9,' ','eng':8,' ');writeln('ave':6,' ');write(' '); for i:=1 to 72 do write('-');writeln;with ct[1] dobeginwrite('',num:7,' ',name:8,' ',age:8,' ',sex:5,' ');for i:=1 to n do write(s[i]:7,' ');write(ave:10,' ');writeln;end;write(' '); for i:=1 to 72 do write('-');writeln;end;procedure find (var stu:sarr);var n,i:integer; u:boolean;beginu:=true;while u dobeginwrite('Into number:');readln(n);for i:=1 to m dobeginif stu[i]=n then beginct[1]:=stu[i];u:=false;d:=iend;end;end;end;procedure del (var stu:sarr);var i:integer; b:char;beginhead(ct);write('true? Y/N'); readln(b);if b='y' then begin write('1');with stu[d] dobeginnum:=0; name:='0'; age:=0; sex:='f';for i:=1 to n do s[i]:=0;ave:=0end;endelseend;procedure tj (var stu:sarr);var w1,q1,q2,num,j:integer;h1,h2,h3:boolean;beginh1:=false;h2:=false;h3:=false;q1:=0;q2:=0;writeln(' ':30,'t the math t the phy t the eng ');readln(w1);case w1 of1:h1:=true;2:h2:=true;3:h3:=true;end;if h1 thenbeginbeginfor j:=1 to m dowith stu[j] doif stu[j]>=60 thenq1:=q1+1elseq2:=q2+1;writeln('math:');end;if h2 thenbeginbeginfor j:=1 to m dowith stu[j] doif stu[j]>=60 thenq1:=q1+1elseq2:=q2+1;writeln('phy:');end;if h3 thenbeginbeginfor j:=1 to m dowith stu[j] doif stu[j]>=60 thenq1:=q1+1elseq2:=q2+1;writeln('eng:');end;end;end;end;writeln(' ':5,'pass num is :',q1);writeln(' ':5,'no pass num is :',q2);end;procedure head1 (var stu:sarr);var j,i:integer;beginwriteln('---------------- table--------------':60);writeln;write(' '); for i:=1 to 72 do write('-');writeln;write('',' num':4,' ','name':9,' ','age':8,' ','sex':5,' ','math':6,' ','phy':9,' ','eng':8,' ');writeln('ave':6,' ');write(' '); for i:=1 to 72 do write('-');writeln;for j:=1 to m do beginwith stu[j] dobeginwrite('',num:7,' ',name:8,' ',age:8,' ',sex:5,' ');for i:=1 to n do write(s[i]:7:1,' ');write(ave:10:1,' ');writeln;end;write(' '); for i:=1 to 72 do write('-');writeln;end;end;beginreadin(stu);ave(stu);k:=0;while k<>5 dobeginwriteln('in s ');read(k); readln;while (k<>1)and(k<>2)and(k<>3)and(k<>4)and(k<>5) dobeginwriteln(' mistake,Please again');read(k)end;case k of1: begin px(stu); head1(stu) end;2: begin find(stu); head(ct) end;3: begin find(stu); del(stu); px(stu); head1(stu) end;4: begin tj(stu); end;5: writeln('exit!');end;end;ram shadow;var a,b,c,d,e:integer;right:boolean;procedure s1;beginwriteln('right!');right:=trueend;procedure s2;beginwriteln('wrong!');right:=falseend;procedure s3 (x,y:integer);var h:integer;beginwrite(x,'+',y,'=');readln(h);if h=x+y then s1else s2 end;procedure s4 (x,y:integer);var h,w:integer;beginif x<y thenbegin w:=x; x:=y; y:=wend;write(x,'-',y,'=');readln(h);if h=x-y then s1 else s2end;procedure s5 (x,y:integer);var h:integer;beginwrite(x,'*',y,'=');readln(h);if h=x*y then s1 else s2end;beginrandomize;e:=0;for a:=1 to 10 dobeginc:=random(90)+10;d:=random(90)+10;b:=random(3);case b of0:s3(c,d);1:s4(c,d);2:s5(c,d);end;if right then e:=e+10;end;writeln('mark is',e:3)end.

上機實驗報告
標籤: 實驗報告 上機
  • 文章版權屬於文章作者所有,轉載請註明 https://wjfww.com/shixi/baogao/7lqnq9.html
專題