古詩詞大全網 - 經典古詩 - 有關重慶市信息競賽高中組(noip)的問題!!!

有關重慶市信息競賽高中組(noip)的問題!!!

我們老師寫的,我正在學,老師講壹課做壹課。壹***10天,現有幾 天,過壹段時間補上。(給妳qq吧)

本人打的,

no。1

壹、學校網站網址:

外網::88;內網:http://192.168.1.1:88

知識點:

(1)http——超 文本 傳輸 協議,ftp——文件 傳輸 協議

(2)網站有兩類:http網站(web網站)、ftp網站

(3)域名與IP地址(在網絡上計算機IP是唯壹的)

(4)DNS域名解析系統——把域名解析為IP地址

(5)端口:65536個端口(其中壹部分系統使用),web網站默認使用80端口(兩頭可以省略),ftp網站默認使用21端口。

 

二、考試時間:

全國初賽(筆試、縣級)10月的第3個星期六,2小時(100分)

全國復賽(上機、九江)11月的第3個星期六,上機3小時,四個大題(每題100分,***400分)

三、下載安裝相關軟件

下載安裝FP——安裝到D:下。註意:目錄名為FP,復賽時有可能為PP

如果桌面有快捷方式,可以通過 右擊→屬性 獲取路徑。

四、計算機信息存儲

計算機信息存儲:文件形式(位置、名字)、表的形式(註冊表、內存分配表、CMOS)

文件管理模式:通過文件夾(目錄)來管理文件的

磁盤:分區使用。盤符(壹個大寫字母加:組成)

軟驅(與軟盤)分開:使用A與B,從C開始給硬盤(包含驅動器與盤片)和光驅(光驅與光盤分開)

每個分區都有壹個根目錄。形式:D:\A\B\C\1.txt

計算機中最高級文件夾是“桌面”

五、常用的DOS命令

1、操作系統:Windows---視窗操作系統(多任務、圖形式)、DOS——磁盤操作系統(單任務、字符式)

2、微軟公司——MicroSoft,簡稱MS

3、cmd——由Windows進入模擬DOS窗口(開始→運行→cmd→確定)

4、模擬DOS窗口與全屏模式互換:alt+回車

5、關閉模擬DOS窗口:exit

6、磁盤命令 D: (回車)

7、在DOS下查看文件(夾)名 dir——會用 dir/p/w

dir/p——縱向看(相當於widnows中的“詳細信息”)

dir/w——橫向看(相當於widnows中的“列表”)

dir/p/w

?如何區別文件(夾)

dir或dir/p——有<dir>就是目錄或者沒有大小

dir/w/p——有方括號的就是目錄

8、改變目錄命令 CD

cd 目錄名——打開壹個目錄

cd \fp\bin\go32v2

cd.. 回到上壹級

cd\ 回到根目錄

9、查看文本文件內容。type 1.pas

六、啟動fp

d:

cd\fp\bin\go32v2

fp

退出:alt+x (選擇是否保存)

七、fp主菜單

alt+紅色字母

File文件、Edit編輯、Search查找、Run運行、Compile編譯、Debug調試、Tools工具、Option選項、Windows窗口、Help幫助

File——New新建、F2保存、Exit

Edit——Cut剪切、Copy復制、paste粘貼、Clear清除

刪除單個,使用 退格鍵或delete鍵

刪除壹行,使用 ctrl+Y

選擇操作:shift+方向鍵、home、end

Tools——ASCII table

F9——生成exe(先編譯再鏈接)

=======================================================================

八、Free Pascal程序

1、程序由多條語句(簡單語句和復合語句)組成;每條語句最後使用分號結束(end前可省略分號)。

2、程序結構:順序結構、分支/選擇結構、循環/重復結構、子程序結構(過程和函數)。

3、采取模塊化思想、從上到下、逐步求精。

4、變量、常量問題

變量——單變量、數組變量、結構變量;命名:字母帶頭;全局變量、局部變量

5、要使用變量,必須先申請——合理定義(類型恰當---特別對於數組變量且個數很多)。

6、得不到滿分的主要原因:有些情況有遺漏、變量定義範圍小了、個數少了。

7、由begin……end.組成(end.整個程序中只能出現1次)

8、程序書寫采用縮進式、使用空行分隔程序功能段

9、復賽要求:從.in文件中讀取數據→編程處理→寫到.out文件中

10、註釋語句:單行使用 // ;多行使用{ }——用於調試

11、賦值語句: 變量使用“ :=”;常量使用“=”

12. 定義:

const pai=3.14;

var a:integer; //-3萬2~3萬2

b:longint; //-21億~21億

c:byte; //0~255

var x:array[3..10] of integer; // a[3]到a[10]

13、常見出錯信息

(1)Syntax error, ; expected but BEGIN found 語法錯誤,預期出現分號(;)但找到了BEGIN——Begin前少了分號(;)

(2)Identifier not found INTEGER1 沒找到標識符INTEGER1——標識符單詞有錯

(3)Illegal expression 非法的表達式——賦值語句使用了“=”

九、讀數據講解:2004第1題

(1)建立.in輸入文件——建議使用edit unhappy.in

(2)使用type unhappy.in檢查.in是否正確

(2)編程從.in中讀取數據

var f:text; //定義壹個變量f,用於操作文件

a:array[1..7,1..2] of byte;

i:byte;

begin

assign(f,'unhappy.in'); //指針指向文件

reset(f); // 指針指向第1個字符

for i:=1 to 7 do readln(f,a[i,1],a[i,2]);

close(f); //關閉指針

//顯示讀結果

for i:=1 to 7 do wrtieln(a[i,1],' ',a[i,2]);

end.

 

no.2

壹、整型數據(復習)

var a:byte;

b:integer;

c:longint;

二、子界型數據(只能使用整型)

1..100

三、實型數據

說明:

(1)可以存放小數、也可以存放整型數據

(2)使用了“/”運算、sqrt()開平方,其結果必須使用實型變量保存

(3)使用整除 div、求余 mod,其結果可以使用整型變量存放

(4)在for …… to ……do……或for……downto……do……中,只能使用整型數據或整型變量

var a:single:

b:real;

c:double;

四、邏輯/布爾數據

說明:

(1)每個變量占用1個位。

(2)其結果不是true就是false

var a:boolean;

b:array[1..1000] of boolean;

邏輯運算:

(1)單目運算:not,非。書寫:~、……

(2)雙目運算:and, 與。書寫:∧、∩、……,口訣:同真為真,其余為假(1真3假)——等於“乘法*”

(3)雙目運算:or, 或。書寫:∨、∪、……,口訣:同假為假,其余為真(1假3真)——類似“加法+”但1+1=1

(4)雙目運算:xor, 異或。書寫:⊕、……, 口訣:同假異真。 (2真2假)——類似“加法+”但1⊕1=0

知識:

(1)如果進行雙目邏輯運算,邏輯表達式必須使用()。例: a=0 and b 是錯誤的。正確的應是:(a=0) and b

(2)初賽試題中進行邏輯運算時:可以將true用1替換,false用0替換,and/∧/∩用*替換,or/∨/∪用+替換,xor用⊕,按從左到右運算(除方括號以外)

(3)以下例題解題思路:

下列邏輯運算不正確的是(______)。(說明:“?”為邏輯與/邏輯乘,“+”為邏輯或/邏輯加,“⊕”為“邏輯異或”,字母上面的橫線為“邏輯非”)

A A?(A + B)= A

B A +(A?B)= A

C A?(B + C)= A?B + A?C

D A +(B?C)=(A + B)?(A + C)

E A + 1 = A

思路:分A=1或A=0兩種情況討論

例題講解(問題求解):

(取石子遊戲) 現有5堆石子,石子數依次為3,5,7,19,50甲乙兩人輪流從任壹堆中任取(每次只能取自壹堆,不能不取), 取最後壹顆石子的壹方獲勝。甲先取,問甲有沒有獲勝策略(即無論乙怎樣取,甲只要不失誤,都能獲勝)?如果有,甲第壹步應該在哪壹堆裏取多少?請寫出妳的結果:

甲(______)獲勝策略(填“有”或“沒有”)。

如有獲勝策略,第壹步應該在第(______)堆中取(______)顆石子。

解答:博弈原理。講求平衡性,對所有數進行xor,其值=0時為平衡狀態。誰打破平衡狀態誰輸!

 

五:字符型數據

說明:只存放壹個字符。

var a:char;

====================================================================

六:字符串型數據

說明:

(1)不超過255個字符

(2)定長和變長

(3)自動分割為字符數組。相當於字符數組,設s為字符串數據,則s[2]表示s中的第2個字符

(4)函數不能單獨成句,但可以用於賦值語句或輸出語句中。

過程單獨成句,就是壹條完成的語句。

(5)求長函數length(s)

(6)查找函數pos(s1,s)——s1子串,s源串,返回找到的第1個位置(返回0,表示沒找到)

(7)連接函數concat(s1,s2,s3,……)——將s2,s3……依次加在s1後面,最後返回s1。可以使用s1=s1+s2+s3+……

(8)截取函數copy(s,i,L)——在S中的第i個位置開始截取長為L的字符串

(9)刪除過程delete(s,i,L)——刪除S中第i個開始長為L的字符串,返回S

(10)插入過程insert(s1,s,i)——將s1插入在s中的第i個位置,返回S

(11)數字變字串過程str(12,s)——返回s='12'

(12)數值字串變數字過程val('125',a)——返回a=125

var a:string; //變長

var b:string[20]; //定長

七、分支結構

(1)2分支——else前不能有分號

if 條件 then 語句1;

if 條件 then 語句1 else 語句2;

if 條件 then

begin

語句組1;

end

else

begin

語句組2;

end;

if 條件1 then

語句組1;

else if 條件2 then

語句組2;

……

else

語句組;

(2)多分支

case 表達式 of

常量1:語句1;

常量2:語句2;

……

常量:語句;

else 語句n+1 //可選項

end;

多分支應用:根據年、月輸出該月多少天?

case m of //m代表月

1,3,5,7,8,10,12:days:=31; //days代表該月天數

4,6,9,11:days:=30;

2:if (y mod 400=0) or ((y mod 4=0) and (y mod 100<>0)) then days:=29 else days:=28;

end;

八、循環/重復結構

(1)限定次數

for … to … do 語句組; //循環變量自動累加1,前小後大。

for … downto … do 語句組; //循環變量自動累減1,前大後小。

(2)不定次數

while 條件 do 語句組;

repeat

語句組;

end;

(3)退出循環使用 break; 同時退出多層循環,壹般采用設置壹個邏輯變量+break來實現。

九:函數與過程區別

(1)關鍵字不同

(2)函數有數據類型,過程沒有。

(3)過程通過參數帶來結果(必須使用var),而函數只能通過函數名帶回壹個結果。

(4)過程單獨成句子;函數只能用於賦值語句或輸出語句中。

 

十、2011年初賽閱讀程序第三題講解

原題:

begin

readln(s);

m1=' ';

m2=' ';

for i:=1 to length(s) do

if s[i]>m1 then

begin

m2:=m1;

m1:=s[i];

end;

else if s[i]>m2 then

m2:=s[i];

writeln(ord(m1),' ',ord(m2));

end.

 

十壹、2011年初賽閱讀程序第四題講解

可以將原題進行“處理”(將循環結構改成順序結構),增加易讀性,但必須與原題完全等價。

說明:本題使用了函數,並且使用“遞歸調用”——自己調用自己

function r(n:integer):integer;

var i:integer;

begin

if n<=5 then

begin

r:=n;

exit; //出口

end;

if r(n-1)<0 then begin r:=1; exit; end; //①出口

if r(n-2)<0 then begin r:=2; exit; end; //②出口

if r(n-3)<0 then begin r:=3; exit; end; //③出口

if r(n-4)<0 then begin r:=4; exit; end; //④出口

if r(n-5)<0 then begin r:=5; exit; end; //⑤出口

r:=-1; //出口

end;

begin

readln(n);

writeln(r(n));

end.

分析:函數r(n)有多個出口!。

(1)輸入值為7或16

(2)n<=5時,返回原值,即:

r(5)=5

r(4)=4

r(3)=3

r(2)=2

r(1)=1

(3)n=6時,

計算r(5)——返回5,①不執行,執行下壹步

計算r(4)——返回4,②不執行,執行下壹步

計算r(3)——返回3,③不執行,執行下壹步

計算r(2)——返回2,④不執行,執行下壹步

計算r(1)——返回1,⑤不執行,執行下壹步

所以r=-11,即r(6)=-1

(4)n=7時,

計算r(6)——返回-1,①執行,所以r(7)=1

(5)n=8時,

計算r(7)——返回1

計算r(6)——返回-1,②執行,所以r(8)=2

(6)n=9時,

計算r(8)——返回2

計算r(7)——返回1

計算r(6)——返回-1,③執行,所以r(9)=3

(7)n=10時,

計算r(9)——返回3

計算r(8)——返回2

計算r(7)——返回1

計算r(6)——返回-1,④執行,所以r(10)=4

(8)n=11時,

計算r(10)——返回4

計算r(9)——返回3

計算r(8)——返回2

計算r(7)——返回1

計算r(6)——返回-1,⑤執行,所以r(11)=5

(9)n=12時,

計算r(11)——返回5

計算r(10)——返回4

計算r(9)——返回3

計算r(8)——返回2

計算r(7)——返回1

r=-1,即r(12)=-1

可以得出規律:

n=6 7 8 9 10 11 12 13 14 15 16

r(n)=-1 1 2 3 4 5 -1 1 2 3 4 5 -1 1 2 3 4 5

 

no.3

壹、 ASCII碼

將鍵盤上的所有鍵進行編號,就可看作ASCII碼,必須記住:

空格 20H,即32

數字 0~9,ASCII碼30H~39H,即48~57

字母 A~Z,ASCII碼41H~5AH,即65~90

字母 a~z,ASCII碼61H~6AH,即97~122

二、信息的單位

位——bit/b,表示0或1

字節——byte/B,網速 Mbps其中bps:位每秒,1B=8bit

扇區——512B

千字節——KB,1K=1024B=2扇區,需要記住:2E+10=1024

兆字節——MB,1M=1024K

吉字節——GB,1G=1024M

特字節——TB,1T=1024G

三、字符ASCII碼占用大小

1個英文字符占用1個字節,1個漢字占用2個字節。

四、字庫

點陣字(橫向的點*縱向的點)、曲線字

24*24點陣,需要多少存儲空間。24*24/8B=72字節,但ASCII碼占2B

五、進制——2、8、10、16進制

在計算機內部,壹切信息存取、處理和傳遞的形式是2進制。

機內碼:使用94區*94位,其中16區1位,就是“啊”,壹級漢字按拼音、二級漢字按部首

ASCII碼是7位編號,存儲時使用8位(即1B),其中最高位(左起第1位用於區分英文、中文)

地址碼:以字節為單位,以16進制為準,從0#開始。

例:128KB的存儲器用十六進制表示,它的最大的地址碼是(______)。

知識點:凡是2的倍數,如從1#編號,地址碼形式:10000……, 如果從0#開始,地址碼形式:FFFFF……

128KB約等於128*1000B

FFFFF=15^5>10^5=100000B

 

六、2009年初賽閱讀程序第2題

原代碼(處理):

b[0]:=2; b[1]:=3; b[2]:=5;

 for i := 0 to 2 do begin

a[i] := 0;

for j := 0 to i do begin

 inc(a[i], b[j]);

 inc(b[a[i] mod 3], a[j]);

end;

 end;

分析:采用列表法:

i j a[0] a[1] a[2] b[0] b[1] b[2]

初始化 0 0 0 2 3 5

0 0 2         7

1 0   2       9

1   5       14

2 0     2     16

1     5     21

2     26     47

tmp := 1;

 for i := 0 to 2 do begin

a[i] := a[i] mod 10;

b[i] := b[i] mod 10;

tmp := tmp * (a[i] + b[i])

 end;

功能:個位數之和相乘

tmp:=(2+2)*(5+3)*(6+7)=4*8*13=416

================================================================================

七、常用進制——2、8、10、16進制

(1) 書寫方式:(101)2、(127)8……

書寫方式:(101)2、(101)16、……

書寫方式:101B、101O、101D、101H……

(2)n進制:只能使用0、1、2、3、4、5……n-1、小數點、正負號

(3)進行四則運算:逢n進壹、借壹當n

加法:先本位相加,再考慮進位

減法:不夠減先借位,再相減

乘法:先各位相乘,再相加、最後考慮進位

(4)進制轉換

第1種類型:2、8、16→10進制

第2種類型:10→2、8、16進制

第3種類型:8→2→16進制

經驗:公式條

2進制: ……8 4 2 1.1/2 1/4 ……

8進制: …… 64 8 1.1/8 1/64 ……

16進制: …… 256 16 1.1/16 1/256 ……

例題講解:

與十進制數1770對應的八進制數是(______)。

A 3350

B 3351

C 3352

D 3540

分析:1770 mod 8 就是答案的個數,1770 mod 64就是答案的十位.

(2010)16+(32)8的結果是(______)。

A (8234)10

B (202B)16

C (20056)8

D (100000000110)2

分析:題目的值對8求余,結果=2

B、C、D對8求余<>2,所以答案為A

(3725)8+(B)16的運算結果是(______)。

A (3736)8

B (2016)10

C (1111110000)2

D (3006)10

E (7B0)16

分析:值=(3725)8+11=(3740)8=(011 111 100 000)2,答案為E

(2004)10 +(32)16的結果是(______)。

A (2036)10

B (2054)16

C (4006)10

D (100000000110)2

E (2036)16

分析:值=2004+50=2054,A/B/C/E不對

運算(-17) MOD (-4) 的結果是(______)。

A 7

B 4

C 1

D -1

分析:a mod b的正負以左邊的a為準

八、寫文件

assign(f,'tree.out'); rewrite(f);

……

close(f)