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