版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第一講 字符串的應(yīng)用1導(dǎo)入在歷年的信息學(xué)奧賽中,字符串的操作已經(jīng)是考察的熱點(diǎn),比如近兩年來(lái)提高組的分區(qū)聯(lián)賽試題中的第一題都考察到了字符串的操作,應(yīng)該是大家著重掌握的內(nèi)容之一。幾點(diǎn)熟練掌握的要求1:熟練掌握從文件中讀入字符串并且進(jìn)行處理的技巧;2:熟練掌握字符串的各種函數(shù)和過(guò)程的運(yùn)用。3:能熟練運(yùn)用字符和數(shù)字之間的轉(zhuǎn)化;2乒乓球【問(wèn)題背景】國(guó)際乒聯(lián)現(xiàn)在主席沙拉拉自從上任以來(lái)就立志于推行一系列改革,以推動(dòng)乒乓球運(yùn)動(dòng)在全球的普及。其中11分制改革引起了很大的爭(zhēng)議,有一部分球員因?yàn)闊o(wú)法適應(yīng)新規(guī)則只能選擇退役。華華就是其中一位,他退役之后走上了乒乓球研究工作,意圖弄明白11分制和21分制對(duì)選手的不同影響
2、。在開(kāi)展他的研究之前,他首先需要對(duì)他多年比賽的統(tǒng)計(jì)數(shù)據(jù)進(jìn)行一些分析,所以需要你的幫忙?!締?wèn)題描述】華華通過(guò)以下方式進(jìn)行分析,首先將比賽每個(gè)球的勝負(fù)列成一張表,然后分別計(jì)算在11分制和21分制下,雙方的比賽結(jié)果(截至記錄末尾)。比如現(xiàn)在有這么一份記錄,(其中W表示華華獲得一分,L表示華華對(duì)手獲得一分):3在11分制下,此時(shí)比賽的結(jié)果是華華第一局11比0獲勝,第二局11比0獲勝,正在進(jìn)行第三局,當(dāng)前比分1比1。而在21分制下,此時(shí)比賽結(jié)果是華華第一局21比0獲勝,正在進(jìn)行第二局,比分2比1。如果一局比賽剛開(kāi)始,則此時(shí)比分為0比0。你的程序就是要對(duì)于一系列比賽信息的輸入(WL形式),輸出正確的結(jié)果。
3、【輸入格式】每個(gè)輸入文件包含若干行字符串(每行至多20個(gè)字母),字符串有大寫(xiě)的W、L和E組成。其中E表示比賽信息結(jié)束,程序應(yīng)該忽略E之后的所有內(nèi)容?!据敵龈袷健枯敵鲇蓛刹糠纸M成,每部分有若干行,每一行對(duì)應(yīng)一局比賽的比分(按比賽信息輸入順序)。其中第一部分是11分制下的結(jié)果,第二部分是21分制下的結(jié)果,兩部分之間由一個(gè)空行分隔。4算法分析 首先,對(duì)當(dāng)前輸入行計(jì)算11分制下每一局比賽的比分。設(shè) a為當(dāng)前局華華的得分,每輸入一個(gè)W,a+1;b為當(dāng)前局對(duì)方的得分,每輸入一個(gè)L,b+1。若輸入E或者華華的得分a或者對(duì)方得分b達(dá)到11分且雙方的分?jǐn)?shù)差值大于1((a11) or(b11)and (abs(a
4、-b)1)),則輸出當(dāng)前局的比分a:b。請(qǐng)注意,如果輸入的字符為E,則標(biāo)志比賽結(jié)束,11分制計(jì)算完畢;否則,繼續(xù)讀下一個(gè)字符,計(jì)算新一局的比分。然后,對(duì)當(dāng)前輸入行計(jì)算21分制下每一局比賽的比分。計(jì)算方法基本如上。有所不同的是,若華華得分a或者對(duì)方得分b達(dá)到21分且雙方的分?jǐn)?shù)差值大于1((a21) or(b21)and (abs(a-b)1)),則輸出當(dāng)前局的比分a:b。 按照上述方法對(duì)每一輸入行計(jì)算11分制和21分制的比賽結(jié)果,直至文件讀完(eof(input))為止。5 assign(input,inp); reset(input);輸入文件讀準(zhǔn)備 assign(output,out);re
5、write(output);輸出文件寫(xiě)準(zhǔn)備 a:=0;b:=0; 當(dāng)前局雙方的比分初始化 while not eof (input) do若文件未讀完,則循環(huán) begin while not eoln(input) do若當(dāng)前行處理完,則11分制的比賽結(jié)束 begin read(ch);讀一個(gè)字符 case ch of根據(jù)字符的種類分情形處理 E: begin若比賽結(jié)束,則輸出雙方比分 writeln(a,:,b); break;退出11分制的計(jì)算過(guò)程 end; E W,L: begin華華或?qū)Ψ降靡环?if ch=Wthen inc(a) else inc(b); if (a=11)or(b
6、=11) and (abs(a-b)1) then若有一方得分達(dá)到11分且雙方的分?jǐn)?shù)差值大于1,則輸出雙方比分 begin writeln(a,:,b); 6 a:=0;b:=0;新一局的比分初始化 end;then end; W,L end;case end;while readln; end; while a:=0; b:=0; 新一局的比分初始化 writeln; reset(input);重新讀輸入行 while not eof(input) do若文件未讀完且比賽未結(jié)束,則循環(huán) begin while not eoln(input) do若當(dāng)前行處理完,則21分制的比賽結(jié)束 begi
7、n read(ch);讀一個(gè)字符 7case ch of根據(jù)字符的種類分情形處理 E:begin若比賽結(jié)束,則輸出雙方比分,退出21分制的計(jì)算過(guò)程 writeln(a,:,b); break; end; EW,L: begin華華或?qū)Ψ降靡环?if ch=Wthen inc(a) else inc(b); if (a=21)or(b=21) and (abs(a-b)1) 若有一方得分達(dá)到21分且雙方的分?jǐn)?shù)差值大于1,則輸出雙方比分 then begin writeln(a,:,b); a:=0;b:=0;新一局的比分初始化 end;then end; W,L end;case end;whi
8、le readln;end;whileclose(input); close(output);關(guān)閉輸入文件和輸出文件 關(guān)鍵是文件操作。如果在計(jì)算21分制的得分前,不會(huì)通過(guò)reset(input)將讀頭移到文件首,則會(huì)出錯(cuò)!8誰(shuí)拿了最多獎(jiǎng)學(xué)金【問(wèn)題描述】某校的慣例是在每學(xué)期的期末考試之后發(fā)放獎(jiǎng)學(xué)金。發(fā)放的獎(jiǎng)學(xué)金共有五種,獲取的條件各自不同:1)院士獎(jiǎng)學(xué)金,每人8000元,期末平均成績(jī)高于80分(80),并且在本學(xué)期內(nèi)發(fā)表1篇或1篇以上論文的學(xué)生均可獲得;2)五四獎(jiǎng)學(xué)金,每人4000元,期末平均成績(jī)高于85分(85),并且班級(jí)評(píng)議成績(jī)高于80分(80)的學(xué)生均可獲得;3)成績(jī)優(yōu)秀獎(jiǎng),每人2000元
9、,期末平均成績(jī)高于90分(90)的學(xué)生均可獲得;4)西部獎(jiǎng)學(xué)金,每人1000元,期末平均成績(jī)高于85分(85)的西部省份學(xué)生均可獲得;5)班級(jí)貢獻(xiàn)獎(jiǎng),每人850元,班級(jí)評(píng)議成績(jī)高于80分(80)的學(xué)生干部均可獲得; 只要符合條件就可以得獎(jiǎng),每項(xiàng)獎(jiǎng)學(xué)金的獲獎(jiǎng)人數(shù)沒(méi)有限制,每名學(xué)生也可以同時(shí)獲得多項(xiàng)獎(jiǎng)學(xué)金。例如姚林的期末平均成績(jī)是87分,班級(jí)評(píng)議成績(jī)82分,同時(shí)他還是一位學(xué)生干部,那么他可以同時(shí)獲得五四獎(jiǎng)學(xué)金和班級(jí)貢獻(xiàn)獎(jiǎng),獎(jiǎng)金總數(shù)是4850元。 現(xiàn)在給出若干學(xué)生的相關(guān)數(shù)據(jù),請(qǐng)計(jì)算哪些同學(xué)獲得的獎(jiǎng)金總數(shù)最高(假設(shè)總有同學(xué)能滿足獲得獎(jiǎng)學(xué)金的條件)。9【輸入文件】輸入文件scholar.in的第一行是一
10、個(gè)整數(shù)N(1N100),表示學(xué)生的總數(shù)。接下來(lái)的N行每行是一位學(xué)生的數(shù)據(jù),從左向右依次是姓名,期末平均成績(jī),班級(jí)評(píng)議成績(jī),是否是學(xué)生干部,是否是西部省份學(xué)生,以及發(fā)表的論文數(shù)。姓名是由大小寫(xiě)英文字母組成的長(zhǎng)度不超過(guò)20的字符串(不含空格);期末平均成績(jī)和班級(jí)評(píng)議成績(jī)都是0到100之間的整數(shù)(包括0和100);是否是學(xué)生干部和是否是西部省份學(xué)生分別用一個(gè)字符表示,Y表示是,N表示不是;發(fā)表的論文數(shù)是0到10的整數(shù)(包括0和10)。每?jī)蓚€(gè)相鄰數(shù)據(jù)項(xiàng)之間用一個(gè)空格分隔?!据敵鑫募枯敵鑫募cholar.out包括三行,第一行是獲得最多獎(jiǎng)金的學(xué)生的姓名,第二行是這名學(xué)生獲得的獎(jiǎng)金總數(shù)。如果有兩位或兩
11、位以上的學(xué)生獲得的獎(jiǎng)金最多,輸出他們之中在輸入文件中出現(xiàn)最早的學(xué)生的姓名。第三行是這N個(gè)學(xué)生獲得的獎(jiǎng)學(xué)金的總數(shù)。 10算法分析 難度分析:本題的算法是直敘式模擬,屬于一道簡(jiǎn)單的數(shù)理統(tǒng)計(jì)題,毋需建立與問(wèn)題對(duì)應(yīng)的數(shù)學(xué)模型。唯一的難點(diǎn)就是輸入數(shù)據(jù)的處理,因?yàn)槊啃械臄?shù)據(jù)既包括字串,又包括數(shù)值,需要選手清晰地甄別和處理不同類型的數(shù)據(jù)。 11用一個(gè)紀(jì)錄型數(shù)組、或者多個(gè)不同類型的數(shù)組記錄所有學(xué)生的信息。計(jì)算出獲得最多獎(jiǎng)金的學(xué)生并不一定要先記錄下所有學(xué)生的信息,而是通過(guò)依次統(tǒng)計(jì)每個(gè)學(xué)生獎(jiǎng)金的辦法亦可以達(dá)到這個(gè)目的。在依次讀一個(gè)學(xué)生的諸方面信息時(shí),同一數(shù)據(jù)類型的信息用一條read語(yǔ)句讀入,每個(gè)學(xué)生的最后一條信息
12、用readln語(yǔ)句讀入。我們?cè)谧x完一行數(shù)據(jù)后就可統(tǒng)計(jì)其獎(jiǎng)金數(shù)了,并調(diào)整目前獲獎(jiǎng)金最多的學(xué)生信息。注意,記錄獎(jiǎng)金總數(shù)的變量必須采用Longint類型(為什么)。 12var name,nn:array 1.30 of char;獲得最多獎(jiǎng)金的學(xué)生姓名為name;當(dāng)前學(xué)生姓名為nn n,i,j,tot,max,x,m1,m2,u:longint; b1,b2,ch:char;begin assign(input,scholar.in); reset(input); readln(n); 讀學(xué)生數(shù) tot:=0;max:=0;fillchar(name,sizeof(name), ); for i:
13、=1 to n do讀入每位學(xué)生的數(shù)據(jù) begin fillchar(nn,sizeof(nn), );j:=0;讀第i位學(xué)生的姓名nn repeat read(ch); if ch= then break; inc(j);nnj:=ch until false; read(m1,m2); 讀第i位學(xué)生的期末平均成績(jī)和班級(jí)評(píng)議成績(jī)、是否是學(xué)生干部和是否是西部省份學(xué)生的信息 repeat read(b1) until (b1=Y) or (b1=N); repeat read(b2) until (b2=Y) or (b2=N);13 readln(u);讀發(fā)表的論文數(shù) x:=0;累計(jì)第i位學(xué)生的獎(jiǎng)金 if (m180) and (u=1) then x:=x+8000; if (m185) and (m280) then x:=x+4000; if (m190) then x:=x+2000; if (m185) and (b2=Y) then x:=x+1000; if (m180) and (b1=Y) then x:=x+850; tot:=tot+x; 累計(jì)前i位學(xué)生的獎(jiǎng)金總數(shù) if xmax若第i位學(xué)生的獎(jiǎng)金最多,則調(diào)整max并記下其名字 then begin max:=x;name:=nn end then end; for clo
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人與企業(yè)間知識(shí)產(chǎn)權(quán)許可協(xié)議(2024版)5篇
- 2025年度智能硬件產(chǎn)品獨(dú)家代理銷售合同協(xié)議4篇
- 2025年廠區(qū)突發(fā)事件應(yīng)急預(yù)案服務(wù)合同范本4篇
- 臨時(shí)工作人員雇傭協(xié)議示例(2024年度)版B版
- 個(gè)人循環(huán)貸款最高限額合同書(shū)2024年版一
- 2025年度國(guó)際貿(mào)易代理產(chǎn)品認(rèn)證合同范本4篇
- 2024年05月上海/北京中國(guó)工商銀行數(shù)據(jù)中心星令營(yíng)暑期實(shí)習(xí)項(xiàng)目筆試歷年參考題庫(kù)附帶答案詳解
- 《合成抗菌材料》課件
- 2025年度區(qū)塊鏈技術(shù)應(yīng)用與維護(hù)服務(wù)合同3篇
- 專用配件銷售協(xié)議(2024年度)版A版
- 春節(jié)文化常識(shí)單選題100道及答案
- 12123交管學(xué)法減分考試題及答案
- 2024年杭州師范大學(xué)附屬醫(yī)院招聘高層次緊缺專業(yè)人才筆試真題
- 制造業(yè)BCM業(yè)務(wù)連續(xù)性管理培訓(xùn)
- 24年追覓在線測(cè)評(píng)28題及答案
- TGDNAS 043-2024 成人靜脈中等長(zhǎng)度導(dǎo)管置管技術(shù)
- 《陸上風(fēng)電場(chǎng)工程概算定額》NBT 31010-2019
- 招投標(biāo)法考試試題及答案
- 皮帶輸送機(jī)工程施工電氣安裝措施要點(diǎn)
- 藥房(冰柜)溫濕度表
- QJ903.9A-1995航天產(chǎn)品工藝文件管理制度管理用工藝文件編制規(guī)則
評(píng)論
0/150
提交評(píng)論