NOIP(全國青少年信息學奧林匹克聯(lián)賽)復習Pascal.ppt
《NOIP(全國青少年信息學奧林匹克聯(lián)賽)復習Pascal.ppt》由會員分享,可在線閱讀,更多相關《NOIP(全國青少年信息學奧林匹克聯(lián)賽)復習Pascal.ppt(29頁珍藏版)》請在裝配圖網(wǎng)上搜索。
一 復習回顧 基本結構 順序結構 選擇結構 循環(huán)結構 過程和函數(shù) 標準類型 整型integer0 23678 實型real兩種表示 小數(shù)表示法 科學表示法 字符型char如 a A 布爾型boolean如 真true假false 文件類型file 常量 指在程序執(zhí)行過程中值不能改變的量 變量 指在程序執(zhí)行過程中值可以改變的量 表達式和函數(shù) 常量的說明 如 圓周率 Constpi 3 14 注意 變量必須先說明再使用 變量說明 VARx integer 算術運算符 div 整除 34div5 6mod 取余 34mod5 4 常用函數(shù) 函數(shù)名 功能 舉例 Abs x 求變量的絕對值 Abs 5 4 5 4 Sqr x 求變量x的平方 Sqr 2 4 Sqrt x 求變量x的平方根 Sqrt 4 2 Chr x 取ASCII碼的值 Chr 48 0 Ord x 取字符的ASCII值 ord A 65 Trunc x 截尾函數(shù) Trunc 1 99 1 Round x 舍入取整 Round 3 9 4round 3 1 3Round 3 9 4round 3 1 3 pred 前導函數(shù) Pred 2 1pred b a succ 后繼函數(shù) Succ 1 2Succ a b 表達式 1 寫出一個整數(shù)被3整除所得余數(shù)的表達式 xmod3 2 寫出計算圓的周長表達式 2 pi r 3 將任一大寫字母轉換成小寫字母 Chr ord x ord a ord A 4 寫出表示年齡大于50歲的表達式 N 50 5 寫出一個數(shù)既能被3整除又能被5整除的表達式 xmod3 0 and xmod5 0 基本語句 一 賦值語句變量 表達式 功能 先計算后賦值 二 輸入語句read readlnread 變量1 變量2 readln 變量1 變量2 功能 依次從鍵盤上讀入數(shù)據(jù) 三 輸出語句write writeln write 變量1 變量2 writeln 變量1 變量2 例 從鍵盤輸入兩個數(shù) 交換后輸出 Programex 1 input output vara b c integer beginwriteln 請輸入兩個數(shù) read a b c a a b b c writeln 交換后的值是 a 5 b 5 End 程序首部 說明部分 語句部分 運行 請輸入兩個數(shù) 34 交換后的值是 43 例 從鍵盤輸入一個三位數(shù) 分離出百位 十位和個位并輸出 Programex 2 input output varx ge shi bai integer beginwriteln 請輸入一個三位數(shù) read x ge xmod10 bai xdiv100 shi x bai 100 div10 writeln bai bai shi 10 shi ge 10 ge End 程序首部 說明部分 語句部分 運行結果 請輸入一個三位數(shù) 836 bai 8shi 3ge 6 四 選擇結構的程序設計 格式一 If條件then語句1 格式二 If條件then語句1else語句2 格式一功能 如果條件成立則執(zhí)行then后的語句1 否則執(zhí)行該條件語句的下一條語句 格式二功能 如果條件成立則執(zhí)行then后的語句1 否則執(zhí)行else后的語句2 例 輸入一個數(shù)X 要求不使用ABS函數(shù) 輸出其絕對值 分析 首先輸入一個數(shù)給X 然后判斷X是否小于0 如果是則 X 為X的絕對值 否則輸出X Programex 3 input output varx real beginreadln x ifx 0thenwriteln x elsewriteln x End 例4 將輸入的兩個非負實數(shù)中較大的放在max里 小的放在min里 并輸出 算法 1 輸入兩個數(shù)max min 2 判斷max是否小于min 如果小于min 則交換max和min的值 3 輸出max min的值 Programex 4 input output varmax min t real beginread max min ifmax minthenbegint max max min min tend writeln max min End If語句嵌套 在格式一或格式二中 當語句1或語句2本身也是一個條件語句時 稱該語句為條件語句嵌套 注意 1 else語句總是和與它最近的那個還沒有其他的else配對的if then配對 如果內(nèi)層的else子句要省 則寫一個空語句或采用復合語句 即增加語句括號 2 在書寫程序時采用縮進式 以增強程序的可讀性 Case語句 Case表達式of常數(shù)表1 語句1 常數(shù)表2 語句2 常數(shù)表n 語句n Else語句n 1End 表達式為有序類型 整型 布爾型 字符型 例5 輸入兩個數(shù) 不為0 及一個算術運算符 輸出其運算結果 Programex 5 input output varx y s real ch char beginwriteln 請輸入x y以及運算符 readln x y readln ch casechof s x y s x y s x y s x yend Writeln x ch y s end 例6 打印某年某月有幾天 分析 某年某月的天數(shù)分為這幾種情況 1 每年的1 3 5 7 8 10 12這七個月每月為31天 2 每年的4 6 9 11這四個月為30天 3 2月又分為兩種情況 閏年為29天 否則為28天 判斷閏年的條件 年數(shù)能被4整除 并且不能被100整除 但可以被400整除的年份為閏年 yearmod4 0 and yearmod1000 or yearmod400 0 Programex 6 input output varyear month len integer beginwriteln inputyearandmonth readln year month Casemonthof1 3 5 7 8 10 12 len 31 4 6 9 11 len 30 2 beginif yearmod4 0 and yearmod1000 or yearmod400 0 thenlen 29elselen 28endEnd Writeln len End 循環(huán)結構 一 計數(shù)循環(huán) For控制變量 初值to終值do 循環(huán)體語句 For控制變量 初值downto終值do 循環(huán)體語句 控制變量為有序類型 執(zhí)行過程 1 先將初值賦值給控制變量 2 比較控制變量與終值 如果超過則不執(zhí)行循環(huán)體中的語句 結束循環(huán) 3 否則執(zhí)行循環(huán)體中的語句 4 將控制變量的后繼值賦給控制變量 5 從 2 開始重復 循環(huán)的執(zhí)行次數(shù)為 終值 初值 1 例7 計算1 2 3 100之和 Programex 7 input output varI s integer begins 0 forI 1to100dos s I writeln s End 循環(huán)體 循環(huán)執(zhí)行次數(shù)為 100 1 1 100 執(zhí)行結果為 5050 執(zhí)行過程 I s初值為0 輸出 1 0 1 1 s s I 100 初值為1 終值100 2 100 1 2 3 3 100 3 3 6 99 100 4851 99 4950 100 100 4950 100 5050 5050 101 條件不成立退出循環(huán) 例8 編程找出四位整數(shù)abcd中滿足下述關系的數(shù) ab cd ab cd abcd 分析 由題意知 abcd是個四位數(shù) 故其范圍是 1000 9999 然后對每一個數(shù)看它的高兩位和低兩位數(shù)和的平方是否與該數(shù)相等 分離高兩位和低兩位的方法是 高位 ab abcddiv100低位 cd abcdmod100 Programex 8 input output varI m n k integer beginforI 1000to9999dobeginm Idiv100 n Imod100 k m n m n ifk Ithenwriteln 符合條件的四位整數(shù)是 I end end 本題采用窮舉法 又叫枚舉法 當型循環(huán) While布爾表達式do語句 執(zhí)行過程 先求布爾表達式的值 當其值為真時 重復執(zhí)行指定語句 當其值為假時 終止循環(huán) 注意 為了能使while循環(huán)正常終止 一定要有一條能改變布爾表達式值的語句 讓表達式的值為假 從而使循環(huán)結束 Programex 9 input output varx integer beginx 1 whilex 100dobeginwrite x 5 x x 2 end end 例9 輸出1 100之間的奇數(shù) 執(zhí)行過程 1 成立 x x 2 3 成立 1 3 x x 2 5 成立 5 x x 2 7 成立 7 x x 2 99 成立 99 x x 2 101 條件不成立退出循環(huán) 循環(huán)次數(shù)為 100 1 div2 1 分析 1 讓一個變量I呈自然數(shù)列增長 即一開始I 1 2 讓m作為一個因子 I作為另一個因子進行乘法運算 可以得到積s 此時s必定是m的倍數(shù) 3 再判斷s是否能被n整除 若能整除轉 5 否則執(zhí)行下一步 4 4 I變量增長1 再去執(zhí)行 2 5 輸出s 此時s即為m n的最小公倍數(shù) 例10 求兩個自然數(shù)m n的最小公倍數(shù) Programex 9 input output varm n I s integer beginwrite 請輸入兩個自然數(shù) readln m n I 1 s m I whilesmodn0dobeginI I 1 s m i end write m n的最小公倍數(shù)為 s end 注意 關系表達式smodn的作用是判斷一個數(shù)是否能被另一個數(shù)整除 在程序中常用到 直到型循環(huán) Repeat語句1 語句2 語句nUntil布爾表達式 執(zhí)行過程 先執(zhí)行指定的語句 然后判斷條件 當條件不成立時 繼續(xù)執(zhí)行指定的語句 直到條件成立時終止循環(huán) 注意 為了能使repeat until循環(huán)正常終止 循環(huán)體中要有一條能改變布爾表達式值的語句 讓表達式的值為真 從而使循環(huán)結束 分析 該問題的思路如同 打擂臺 即先有任意一人站在擂臺上 然后第二個人上來與它比武 勝者留在臺上 如此反復 直到第n個人比完為止 共打n 1次比賽 最后留在臺上的人肯定是最強者 例11 從n個數(shù)中挑選出最大的數(shù) Programex 11 input output varn x m y integer beginreadln n readln x m 0 repeatreadln y ifx ythenx ym m 1 untilm n 1 writeln n 個數(shù)中最大的是 x end 多重循環(huán) 循環(huán)套循環(huán) ForI 初值1to終值1dobegin forj 初值2to終值2dobegin end end 外循環(huán) 內(nèi)循環(huán) 外循環(huán)體 內(nèi)循環(huán)體 注意 1 循環(huán)次數(shù)為 終值1 初值1 1 終值2 初值2 1 2 外循環(huán)變化一次 內(nèi)循環(huán)要從初值變化到終值一次 例12 求100 999中的水仙花數(shù) 如三位數(shù)abc a 3 b 3 c 3 則稱abc為水仙花數(shù) 用三重循環(huán)編程序 Programex 12 input output vara b c integer beginfora 1to9doforb 0to9doforc 0to9doifa a a b b b c c c a 100 b 10 cthenwrite a 100 b 10 c 6 readln end 運行結果 153370371407 例13四個學生上地理課時 回答我國四大淡水湖大小時這樣說 甲說 最大洞庭湖 最小洪澤湖 鄱陽湖第三 乙說 最大洪澤湖 最小洞庭湖 鄱陽湖第二 太湖第三 丙說 最小洪澤湖 洞庭湖第三 丁說 最大鄱陽湖 最小太湖 洪澤湖第二 洞庭湖第三 其中每個學生僅答對一個 請編程確定湖的大小 分析 本題為邏輯判斷題 每個湖的大小不一樣 所以分別用1 2 3 4表示它們的各自的大小 用四重循環(huán)來進行列舉 然后再分別對他們所說的話作判斷即可 programex 13 input output vardong hong bo tai integer beginfordong 1to4doforhong 1to4doifhongdongthenforbo 1to4doif hongbo and dongbo thenbegintai 10 dong hong bo if ord dong 1 ord hong 4 ord bo 3 1 and ord hong 1 ord dong 4 ord bo 2 ord tai 3 1 and ord dong 3 ord hong 4 1 and ord bo 1 ord tai 4 ord hong 2 ord dong 3 1thenwriteln dong dong hong hong bo bo tai tai end end 運行結果 dong 2hong 4bo 1tai 3 甲說 最大洞庭湖 最小洪澤湖 鄱陽湖第三 程序如下 例14用5元錢買100只紐扣 其中金屬紐扣每只5角 有機玻璃和每只1角 小撳扣1分錢買3個 編程求出各種紐扣各買了多少只 分析 用x y z分別表示金屬紐扣 有機扣 撳扣的只數(shù) 依題意可得 X y z 100 1 50X 10y z 3 500 2 這是一個不定方程組 一般有多組解 由方程 1 可知X Y Z的范圍 它們分別為 1 x 1001 y 1001 x 100 2 式轉化為 150X 30y z 1500 Programex 14 input output varx y z integer beginforx 1to100dofory 1to100doforz 1to100doif x y z 100 and 150 x 30 y z 1500 thenwrite 金屬扣 x 有機扣 y 撳扣 z end 用三重循環(huán)編程 程序如下 法II在法I的基礎上改進 由方程 2 可知1 x 10 1 y 50循環(huán)次數(shù) 10 50 100 50000次 是法I的5 運行時間縮短了很多 法III在法II的基礎上可以將方程 1 改為 z 100 x y 這樣可以減少一重循環(huán) 使程序的運行時間變得更短 Programex 14c input output varx y z integer beginforx 1to10dofory 1to50dobeginz 100 x y if 150 x 30 y z 1500 thenwrite 金屬扣 x 有機扣 y 撳扣 z end end 縮短多重循環(huán)的運行時間的改進方法是 1 縮小終值與初值的距離 2 減少循環(huán)嵌套的層數(shù) 例15已知faibonacci 費波那契數(shù)列 的前幾個數(shù)分別為0 1 1 2 3 5 編程求此數(shù)列的前n項 分析 觀察找規(guī)律 f1 0 n 1 f2 1 n 2 fn fn 1 fn 2 n 3 即從第三項起 后一項是前兩項之和 現(xiàn)用f表示fn p表示f的前一項 fn 1 l表示它的前兩項 fn 2 則有等式f p l plf第一次01f 0 1 1 第三項 第二次11f 1 1 2 第四項 第三次12f 1 2 3 第五項 程序如下 Programex 15 input output varn p l t integer t記錄第幾項 beginread n p 0 l 1 t 2 write 0 1 打印前兩項 whiletndobeginf p l if tmod4 0 thenwriteln 每行打印四個數(shù) write f 6 p l l f t t 1 end end 本題采用遞推法 遞推即在一個序列中 下一項的值是在前一項值的基礎上推算出來的 也就是下一項對前一項有某種依賴關系 For while repeat 語句使用時注意 1 已知循環(huán)次數(shù) 宜用for循環(huán) 2 當循環(huán)次數(shù)未知則選用while或repeat語句 3 在進行循環(huán)程序設計時 一定要搞清楚在循環(huán)前應做什么事 通常在循環(huán)前要做一些準備工作 如 累加 計數(shù)器清零 變量賦初值等 在循環(huán)中需做什么事 解決什么問題 在循環(huán)后又要做什么事 若將該做的事忘了 或將它們放錯順序或位置 則不能得到正確的結果- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- NOIP 全國青少年 信息學 奧林匹克 聯(lián)賽 復習 Pascal
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.appdesigncorp.com/p-6391836.html