全國青少年信息學奧林匹克聯賽初賽試題(2007年NOIP普及組C++)

全國青少年信息學奧林匹克聯賽初賽試題(2007年NOIP普及組C++)

NOIP試題分析——少兒編程樂園

第十三屆全國青少年信息學奧林匹克聯賽(NOIP)初賽試題

( NOIP 2007 普及組 C++語言 二小時完成 )

一、 單項選擇題 (共20題,每題1.5分,共計30分。每題有且僅有一個正確答案.)。

1. 在以下各項中,( )不是CPU的組成部分。

A. 控制器 B. 運算器 C. 寄存器 D. 主板

2.在關係數據庫中,存放在數據庫中的數據的邏輯結構以( )為主。

A. 二叉樹 B. 多叉樹 C.哈希表 D.二維表

3.在下列各項中,只有( )不是計算機存儲容量的常用單位。

A. Byte B. KB C.UB D.TB

4.ASCII碼的含義是( )。

A. 二─十進制轉換碼 B. 美國信息交換標準代碼

C. 數字的二進制編碼 D. 計算機可處理字符的唯一編碼

5.一個完整的計算機系統應包括( )。

A.系統硬件和系統軟件 B. 硬件系統和軟件系統

C. 主機和外部設備 D. 主機、鍵盤、顯示器和輔助存儲器

6. IT的含義是( )。

A. 通信技術 B. 信息技術 C.網絡技術 D.信息學

7.LAN的含義是( )。

A. 因特網 B. 局域網 C.廣域網 D.城域網

8. 冗餘數據是指可以由其他數據導出的數據,例如,數據庫中已存放了學生的數學、

語文和英語的三科成績,如果還存放三科成績的總分,則總分就可以看作冗餘數據。冗餘數據往往會造成數據的不一致,例如,上面4個數據如果都是輸入的,由於操作錯誤使總分不等於三科成績之和,就會產生矛盾。下面關於冗餘數據的說法中,正確的是( )。

A. 應該在數據庫中消除一切冗餘數據

B. 用高級語言編寫的數據處理系統,通常比用關係數據庫編寫的系統更容易消除冗餘數據

C. 為了提高查詢效率,在數據庫中可以適當保留一些冗餘數據,但更新時要做相容性檢驗

D. 做相容性檢驗會降低效率,可以不理睬數據庫中的冗餘數據

9.在下列各軟件中,不屬於NOIP競賽(複賽)推薦使用的語言環境有( )。

A. gcc B. g++

C. Turbo C D. free pascal

10. 以下斷電之後仍能保存數據的有( )。

A. 硬盤 B. 高速緩存 C. 顯存 D. RAM

11. 在下列關於計算機語言的說法中,正確的有( )。

A. 高級語言比彙編語言更高級,是因為它的程序的運行效率更高

B. 隨著Pascal、C等高級語言的出現,機器語言和彙編語言已經退出了歷史舞臺

C. 高級語言程序比彙編語言程序更容易從一種計算機移植到另一種計算機上

D. C是一種面向對象的高級計算機語言

12. 近20年來,許多計算機專家都大力推崇遞歸算法,認為它是解決較複雜問題的強有力的工具。在下列關於遞歸算法的說法中,正確的是( )。

A. 在1977年前後形成標準的計算機高級語言“FORTRAN77”禁止在程序使用遞歸,原因之一是該方法可能會佔用更多的內存空間

B. 和非遞歸算法相比,解決同一個問題,遞歸算法一般運行得更快一些

C. 對於較複雜的問題,用遞歸方式編程一般比非遞歸方式更難一些

D. 對於已經定義好的標準數學函數sin(x),應用程序中的語句“y=sin(sin(x));”就是一種遞歸調用

13. 一個無法靠自身的控制終止的循環稱為“死循環”,例如,在 C++語言程序中,語句“while(1) printf(”*”);”就是一個死循環,運行時它將無休止地打印*號。下面關於死循環的說法中,只有( )是正確的。

A. 不存在一種算法,對任何一個程序及相應的輸入數據,都可以判斷是否會出現死循環,因而,任何編譯系統都不做死循環檢驗

B.有些編譯系統可以檢測出死循環

C. 死循環屬於語法錯誤,既然編譯系統能檢查各種語法錯誤,當然也應該能檢查出死循環

D. 死循環與多進程中出現的“死鎖”差不多,而死鎖是可以檢測的,因而,死循環也可以檢測的

14.在C++程序中,表達式23|2^5的值是( )

A. 23 B. 1 C.32 D.18

15.在C++程序中,判斷a等於0或b等於0或c等於0的正確的條件表達式是( )

A. !((a!=0)||(b!=0)||(c!=0))

B. !((a!=0)&&(b!=0)&&(c!=0))

C. !(a==0&&b==0)||(c!=0)

D. (a=0)&&(b=0)&&(c=0)

16.地面上有標號為A、B、C的3根細柱,在A柱上放有10個直徑相同中間有孔的圓盤,從上到下依次編號為1,2,3,……,將A 柱上的部分盤子經過B 柱移入C 柱,也可以在B 柱上暫存。如果B柱上的操作記錄為:“進,進,出,進,進,出,出,進,進,出,進,出,出”。那麼,在C柱上,從下到上的盤子的編號為( )。

A. 2 4 3 6 5 7 B. 2 4 1 2 5 7

C. 2 4 3 1 7 6 D. 2 4 3 6 7 5

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

A. 3350 B. 3351 C. 3352 D. 3540

18. 設A=B=true,C=D=false,以下邏輯運算表達式值為假的有( )。

A. (¬ A∧B)∨(C∧D∨A) B. ¬ (((A∧B)∨C)∧D)

C. A∧(B∨C∨D)∨D D. (A∧(D∨C)) ∧B

19. (2070)16 + (34)8的結果是( )。

A. (8332)10 B. (208A)16

C. (100000000110)2 D. (20212)8

20. 已知7個結點的二叉樹的先根遍歷是1 2 4 5 6 3 7(數字為結點的編號,以下同),中根遍歷是4 2 6 5 1 7 3,則該二叉樹的後根遍歷是( )

A. 4 6 5 2 7 3 1 B. 4 6 5 2 1 3 7

C. 4 2 3 1 5 4 7 D. 4 6 5 3 1 7 2

二.問題求解(共2題,每題5分,共計10分)

1.(子集劃分)將n個數{1,2,…,n}劃分成r個子集。每個數都恰好屬於一個子集,任何兩個不同的子集沒有共同的數,也沒有空集。將不同劃分方法的總數記為S(n,r)。例如,S(4,2)=7,這7種不同的劃分方法依次為{(1),(234)}, {(2),(134)}, {(3),(124)}, {(4),(123)}, {(12),(34)}, {(13),(24)}, {(14),(23)}。當n=6,r=3時,S(6,3)= _____________。

(提示:先固定一個數,對於其餘的5個數考慮S(5,3)與 S(5,2),再分這兩種情況對原固定的數進行分析)。

2.(最短路線)某城市 的街道是一個很規整的矩形網格(見下圖),有7條南北向的縱街,5條東 西向的橫街。現要從西南角的A走到東北角的B,最短的走法共有多少種?_________________

. B

A

三.閱讀程序寫結果(共4題,每題8分,共計32分)

1. #include <iostream.h> /<iostream.h>

void main()

{int i,p[5],a,b,c,x,y=20;

for(i=0;i<=4;i++) cin>>p[i];

a=(p[0]+p[1])+(p[2]+p[3]+p[4])/7;

b=p[0]+p[1]/((p[2]+p[3])/p[4]);

c=p[0]*p[1]/p[2];

x=a+b-p[(p[3]+3)%4];

if(x>10)

y+= (b*100-a)/(p[p[4]%3]*5);

else

y+=20+(b*100-c)/(p[p[4]%3]*5);

cout<

}

// 注:本例中,給定的輸入數據可以避免分母為0或數組元素下標越界。

輸入:6 6 5 5 3

輸出:_______________

2.#include <iostream.h> /<iostream.h>

void fun(int *a,int *b)

{int *k;

k=a; a=b; b=k;

}

void main( )

{int a=3, b=6, *x=&a, *y=&b;

fun(x,y);

cout<


分享到:


相關文章: