Pascal字符串的運(yùn)用_第1頁(yè)
Pascal字符串的運(yùn)用_第2頁(yè)
Pascal字符串的運(yùn)用_第3頁(yè)
Pascal字符串的運(yùn)用_第4頁(yè)
Pascal字符串的運(yùn)用_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論