上機實驗報告.doc
《上機實驗報告.doc》由會員分享,可在線閱讀,更多相關(guān)《上機實驗報告.doc(8頁珍藏版)》請在裝配圖網(wǎng)上搜索。
工作報告/實習報告 上機實驗報告 一. 題目1. 建立一個學生檔案,內(nèi)容包括學號,姓名,年齡,性別,數(shù)學,物理和英語3門功課成績。要求實現(xiàn)以下功能:1) 數(shù)據(jù)輸入;2) 查詢某個學生的成績;3) 按平均排列輸出;4) 統(tǒng)計某門課各分數(shù)段人數(shù);5) 刪除某個學生記錄;2. 編程實現(xiàn)對二位數(shù)進行加,減,乘運算,每運行一次程序做10道題,完成后給出成績(每題10分)。二. 設(shè)計思想和模塊劃分1.1.先定義所需要的條件,例如,姓名,學號,性別,三門功課的成績,平均分等。2.輸入姓名,學號,性別,年齡,三門功課的成績后,就輸出相應的姓名,學號,性別,年齡,三門功課的成績。3.打印表頭;4.在求出平均分,并打印出平均分。5.在查找學生,并打印出學生的相關(guān)資料;并按照平均分的高低排列;6.在統(tǒng)計學生各科成績是否》=60分,如果是就是通過,否就是沒通過,最后打印出最后的結(jié)果。7.刪除學生,選中刪除的學生,如果確定要,那么該學生的一切記錄就變?yōu)?;2.1.隨機調(diào)用函數(shù),產(chǎn)生兩個其值為10到99的隨機整數(shù)分別放在c,d中用作運算時的運算數(shù)。2.隨機調(diào)用函數(shù),產(chǎn)生一個值為1到3 的隨機整數(shù)放入b中,用來選擇不同的運算。根據(jù)b的值選擇不同的運算。當b=1時,去進行c+d的運算練習;當b=2 時,去進行c-d的運算練習;當b=3時,去進行cd的運算練習。每完成一個算題就給出是否正確的信息。3.根據(jù)答案正確與否統(tǒng)計。正確時,顯示right; 錯誤時,顯示wrong。4.步驟1. 2. 3. 4. 重復10次。5.輸出學生成績。三. 運行結(jié)果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:501.readin 2.finds 3.del 4.tj 5.exit1 ----------------------------- 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 62.7----------------------------------------------------------------------------------------------------1.readin 2.finds 3.del 4.tj 5.exit2Into number:3------------------------------------------------------------------------------------------------ num name age sex math phy eng ave------------------------------------------------------------------------------------------------ 3 wf 18 f 98.0 75.0 65.0 79.3-------------------------------------------------------------------------------------------------1.readin 2.finds 3.del 4.tj 5.exit3Into 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 0.0--------------------------------------------------------------------------------------------------1.readin 2.finds 3.del 4.tj 5.exit4 1.input the math 2.input the phy 3.input 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.在本題的編寫過程中常出現(xiàn)begin 和end 不配對,只要始它們的個數(shù)相同就可以了,就可以了。在程序中常出現(xiàn)的unknown identifier沒有定義的錯誤,只要在程序前加上定義,就可以了。還有就是type mismatch的類型不匹配,只要根據(jù)前后內(nèi)容,重新定義,就可以了。2.在本題編寫中,題目要求是兩個兩位數(shù)運算,如果寫成c:=random(100)在運行過程中,就會出現(xiàn)一位數(shù)運算,只要把它寫成c:=random(90)+10,就可以了。五. 實習小結(jié)1.第一題的程序編寫比較復雜,需要較多的定義,因而在后面的程序部分,就常出現(xiàn)標識符重復,而導致的類型不匹配。還有就是每個部分編好后,上下不能連接,而無法調(diào)用。2.第二題較第一題簡單,和書上的例題類似,所以,比較簡單,但從中也出現(xiàn)一些不問題。以上兩大題中出現(xiàn)的問題,要在同學的幫助下,才能完成??偟膩碚f兩題程序比較困難六. 程序清單1.program 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].avestu[p].ave 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].num=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,'1.input the math 2.input the phy 3.input 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].math=60 thenq1:=q1+1elseq2:=q2+1;writeln('math:');end;if h2 thenbeginbeginfor j:=1 to m dowith stu[j] doif stu[j].phy=60 thenq1:=q1+1elseq2:=q2+1;writeln('phy:');end;if h3 thenbeginbeginfor j:=1 to m dowith stu[j] doif stu[j].eng=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 k5 dobeginwriteln('1.readin 2.finds 3.del 4.tj 5.exit');read(k); readln;while (k1)and(k2)and(k3)and(k4)and(k5) 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;end..2.program 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 xy 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. *- 1.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
10 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 上機 實驗 報告
鏈接地址:http://kudomayuko.com/p-845061.html