第1題
在下面各世界頂級的獎項(xiàng)中,為計(jì)算機(jī)科學(xué)與技術(shù)領(lǐng)域做出杰出貢獻(xiàn)的科學(xué)家設(shè)立的獎項(xiàng)是
沃爾夫獎
諾貝爾獎
菲爾茲獎
圖靈獎
第2題
在下面各軟件中,不屬于NOIP競賽(復(fù)賽)推薦使用的語言環(huán)境是( )。
gcc/g++
Turbo Pascal
RHIDE
free pascal
第3題
以下斷電之后仍能保存數(shù)據(jù)的有( )。
寄存器
ROM
RAM
高速緩存
第4題
Linux是一種( )。
繪圖軟件
程序設(shè)計(jì)語言
操作系統(tǒng)
網(wǎng)絡(luò)瀏覽器
第5題
CPU是( )的簡稱。
硬盤
中央處理器
高級程序語言
核心寄存器
第6題
在計(jì)算機(jī)中,防火墻的作用是( )。
防止火災(zāi)蔓延
防止網(wǎng)絡(luò)攻擊
防止計(jì)算機(jī)死機(jī)
防止使用者誤刪除數(shù)據(jù)
第7題
在下列關(guān)于計(jì)算機(jī)語言的說法中,不正確的是( )。
Pascal和C都是編譯執(zhí)行的高級語言
高級語言程序比匯編語言程序更容易從一種計(jì)算機(jī)移植到另一種計(jì)算機(jī)上
C++是歷史上的第一個(gè)支持面向?qū)ο蟮挠?jì)算機(jī)語言
與匯編語言相比,高級語言程序更容易閱讀
第8題
在下列關(guān)于計(jì)算機(jī)算法的說法中,不正確的是( )。
一個(gè)正確的算法至少要有一個(gè)輸入
算法的改進(jìn),在很大程度上推進(jìn)了計(jì)算機(jī)科學(xué)與技術(shù)的進(jìn)步
判斷一個(gè)算法的好壞的主要標(biāo)準(zhǔn)是算法的時(shí)間復(fù)雜性與空間復(fù)雜性
目前仍然存在許多涉及到國計(jì)民生的重大課題,還沒有找到能夠在計(jì)算機(jī)上實(shí)施的有效算法
第9題
在下列各種排序算法中,不是以“比較”作為主要操作的算法是( )。
選擇排序
冒泡排序
插入排序
基數(shù)排序
第10題
在編程時(shí) ( 使用任一種高級語言,不一定是 C),如果需要從磁盤文件中輸入一個(gè)很大的二維數(shù)組 ( 例如 1000*1000 的 double 型數(shù)組 ) ,按行讀 ( 即外層循環(huán)是關(guān)于行的 ) 與按列讀 ( 即外層循環(huán)是關(guān)于 列的) 相比,在輸入效率上 ( ) 。
沒有區(qū)別
按行讀的方式要高一些
按列讀的方式要高一些
取決于數(shù)組的存儲方式
第11題
在 C語言中,表達(dá)式 21^2 的值是 ( ) 。
441
42
23
24
第12題
在 C語言中,判斷 a 不等于 0 且 b 不等于 0 的正確的條件表達(dá)式是 ( ) 。
!a==0 || !b==0
!(a==0)&&(b==0)
!(a==0&&b==0)
a&&b
第13題
某個(gè)車站呈狹長形,寬度只能容下一臺車,并且只有一個(gè)出入口。已知某時(shí)刻該車站狀態(tài)為空, 從這一時(shí)刻開始的出入記錄為: “進(jìn),出,進(jìn),進(jìn),進(jìn),出,出,進(jìn),進(jìn),進(jìn),出,出 ”。假設(shè)車 輛入站的順序?yàn)?1,2,3,……,則車輛出站的順序?yàn)?( ) 。
1,2,3,4,5
1,2,4,5,7
1,4,3,7,6
1,4,3,7,2
第14題
高度為 n 的均衡的二叉樹是指:如果去掉葉結(jié)點(diǎn)及相應(yīng)的樹枝,它應(yīng)該是高度為 n-1 的滿二叉 樹。在這里,樹高等于結(jié)點(diǎn)的最大深度,根結(jié)點(diǎn)的深度為 0,如果某個(gè)均衡的二叉樹共有 2381 個(gè)結(jié) 點(diǎn),則該樹的樹高為 ( ) 。
10
11
12
13
第15題
與十進(jìn)制數(shù) 1770對應(yīng)的八進(jìn)制數(shù)是 ( ) 。
3350
3351
3352
3540
第16題
將 5 個(gè)數(shù)的序列排序,不論原先的順序如何,最少都可以通過 ( ) 次比較。完成從小到大的 排序。
6
7
8
9
第17題
設(shè) A=B=D=ture,C=false ,以下邏輯運(yùn)算表達(dá)式值為真的有 ( ) 。
( ﹁A∧B)∨(C∧D)
﹁((A ∨B∨D)∧C)
﹁A∧(B∨C∨D)
(A∧B∧C)∨﹁D
第18題
(2010) 16+(32) 8 的結(jié)果是 ( ) 。
(8234) 10
(202B) 16
(20056) 8
(100000000110) 2
第19題
設(shè)棧 S的初始狀態(tài)為空,元素 a,b,c,d,e 依次入棧,以下出棧序列不可能出現(xiàn)的有 ( ) 。
a,b,c,e,d
b,c,a,e,d
a,e,c,b,d
d,c,e,b,a
第20題
已知 6 個(gè)結(jié)點(diǎn)的二叉樹的先根 +遍歷是 1 2 3 4 5 6( 數(shù)字為結(jié)點(diǎn)的編號,以下同 ) ,后根遍歷是 3 2 5 6 4 1 ,則該二叉樹的可能的中根遍歷是 ( ) 。
3 2 1 4 6 5
3 2 1 5 4 6
2 1 3 5 4 6
2 3 1 4 6 5
第21題
( 尋找假幣 ) 現(xiàn)有 80枚硬幣,其中有一枚是假幣,其重量稍輕,所有真幣的重量都相同,如果使 用不帶砝碼的天平稱重,最少需要稱幾次,就可以找出假幣?你還要指出第 1 次的稱重方法。請寫 出你的結(jié)果:
第22題
( 取石子游戲 ) 現(xiàn)有 5 堆石子,石子數(shù)依次為 3,5,7,19,50,甲乙兩人輪流從任一堆中任取 ( 每 次只能取自一堆,不能不取 ) ,取最后一顆石子的一方獲勝。甲先取,問甲有沒有獲勝策略 ( 即無論 乙怎樣取,甲只要不失誤,都能獲勝 ) ?如果有,甲第一步應(yīng)該在哪一堆里取多少?請寫出你的結(jié)果:
第23題
#include<stdio.h> int main() { int i,u[4],a,b,x,y=10; for(i=0;i<=3;i++) scanf("%d",&u[i]); a=(u[0]+u[1]+u[2]+u[3])/7; b=u[0]/((u[1]-u[2])/u[3]); x=(u[0]+a+2)-u[(u[3]+3)%4]; if(x>10) y+=(b*100-u[3])/(u[u[0]%3]*5); else y+=20+(b*100-u[3])/(u[u[0]%3]*5); printf("%d,%d\n",x,y); return 0; } /* 注:本例中,給定的輸入數(shù)據(jù)可以避免分母為 0 或下標(biāo)越界。 */
輸入: 9 3 9 4
輸出: ________________
10,10
第24題
#include <stdio.h> int main() { int i,j,m[]={2,3,5,7,13}; long t; for(i=0;i<=4;i++) { t=1; for(j=1;j<m[i];j++) t*=2; printf("%ld ",(t*2-1)*t); } printf("\n"); }
第25題
#include "stdio.h" #define N 7 int fun(char s[],char a,int n) { int j; j=n; while(a<s[j]&&j>0) j--; return j; } int main() { char s[N+1]; int k,p; for(k=1;k<=N;k++) s[k]='A'+2*k+1; printf("%d\n",fun(s,'M',N)); }
第26題
#include <stdio.h> void digit(long n,long m) { if(m>0) printf("%2ld",n%10); if(m>1) digit(n/10,m/10); printf("%2ld",n%10); } int main() { long x,x2; printf("Input a number:\n"); scanf("%ld",&x); x2=1; while(x2<x) x2*=10; x2/=10; digit(x,x2); printf("\n"); }
輸入: 9734526
第27題
( 全排列 ) 下面程序的功能是利用遞歸方法生成從 1 到 n(n<10) 的 n 個(gè)數(shù)的全部可能的排列 ( 不一定 按升序輸出 ) 。例如,輸入 3,則應(yīng)該輸出 ( 每行輸出 5 個(gè)排列 ) :
123 132 213 231 321 312
程序:
#include<stdio.h> int n,a[10]; /*a[1],a[2], …,a[n] 構(gòu)成 n 個(gè)數(shù)的一個(gè)排列 */ long count=0; /* 變量 count 記錄不同排列的個(gè)數(shù),這里用于控制換行 */ void perm(int k) { int j,p,t; if(______ ①______) { count++; for(p=1;p<=n;p++) printf("%1d",a[p]); /* "%1d" 中是數(shù)字 1,不是字母 l */ printf(" "); if(______ ②______) printf("\n"); return; } for(j=k;j<=n;j++) { t=a[k]; a[k]=a[j]; a[j]=t; ______③______; t=a[k]; ______④______; } } int main() { int i; printf("Entry n:\n"); scanf("%d",&n); for(i=1;i<=n;i++) a[i]=i; ______⑤______; }
第28題
由鍵盤輸入一個(gè)奇數(shù) P(P<100,000,000) ,其個(gè)位數(shù)字不是 5,求一個(gè)整數(shù) S,使 P×S=1111...1( 在給定的條件下,解 s 必存在) 。要求在屏幕上依次輸出以下結(jié)果:
(1) S 的全部數(shù)字。除最后一行外,每行輸出 50 位數(shù)字。
(2) 乘積的數(shù)字位數(shù)。
例 1:輸入 P=13,由于 13*8547=111111,則應(yīng)輸出 (1) 8547 ,(2) 6
例 2:輸入 P=147,則輸出結(jié)果應(yīng)為 (1) 755857898715041572184429327286470143613 (2) 42 ,即 等式的右端有 42個(gè) 1。
#include<stdio.h> int main() { long p,a,b,c,t,n; int bl; while(1) { printf(" 輸入 p, 最后一位為 1 或 3 或 7 或 9:\n"); scanf("%ld",&p); if((p%2!=0)&&(p%5!=0)) /* 如果輸入的數(shù)符合要求,結(jié)束循環(huán) */ ______⑥______; } a=0; n=0; while(a<p); { a=a*10+1;n++;/*變量a存放部分右端項(xiàng),n為右端項(xiàng)的位數(shù)*/ } t=0; do { b=a/p; printf("%1ld",b); t++; if(___________⑦_(dá)_________) printf("\n"); c=_________⑧_________;a=________⑨______;n++; }while(c>0); printf("\nn=%ld\n".__________⑩_______); }
一、單項(xiàng)選擇題 (1-20 共 20題); 二、問題求解 (21-22 共 2 題); 三、閱讀程序?qū)懡Y(jié)果 (23-26 共 4 題); 四、完善程序 ( 27-28共 2 題)。