一、單項(xiàng)選擇題(共20題,每題1.5分,共計(jì)30分;每題有且僅有一個(gè)正確選項(xiàng))
1.在8位二進(jìn)制補(bǔ)碼中,10101011表示的數(shù)是十進(jìn)制下的( )。
A. 43 B. -85 C. -43 D. -84
2.計(jì)算機(jī)存儲(chǔ)數(shù)據(jù)的基本單位是( )。
A. bit B. Byte C. GB D. KB
3.下列協(xié)議中與電子郵件無(wú)關(guān)的是( )。
A. POP3 B. SMTP C. WTO D. IMAP
4.分辨率為800x600、16位色的位圖,存儲(chǔ)圖像信息所需的空間為( )。
A.937.5KB B. 4218.75KB
C.4320KB D. 2880KB
5.計(jì)算機(jī)應(yīng)用的最早領(lǐng)域是( )。
A.數(shù)值計(jì)算 B.人工智能
C.機(jī)器人 D.過(guò)程控制
6.下列不屬于面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的是( )。
A. C B. C++ C. Java D. C#
7.NOI的中文意思是( )。
A.中國(guó)信息學(xué)聯(lián)賽
B.全國(guó)青少年信息學(xué)奧林匹克競(jìng)賽
C.中國(guó)青少年信息學(xué)奧林匹克競(jìng)賽
D.中國(guó)計(jì)算機(jī)協(xié)會(huì)
8. 2017年10月1日是星期日,1999年10月1日是( )。
A.星期三 B.星期日
C.星期五 D.星期二
9.甲、乙、丙三位同學(xué)選修課程,從4門(mén)課程中,甲選修2門(mén),乙、丙各選修3門(mén),則不同的選修方案共有( )種。
A. 36 B. 48 C. 96 D. 192
10.設(shè)G是有n個(gè)結(jié)點(diǎn)、m條邊(n ≤m)的連通圖,必須刪去G的( )條邊,才能使得G變成一棵樹(shù)。
A.m–n+1 B. m-n
C. m+n+1 D.n–m+1
11.對(duì)于給定的序列{ak},我們把(i, j)稱(chēng)為逆序?qū)Ξ?dāng)且僅當(dāng)i < j且ai> aj。那么
序列1, 7, 2, 3, 5, 4的逆序?qū)?shù)為()個(gè)。
A. 4 B. 5 C. 6 D. 7
12.表達(dá)式a * (b + c) * d的后綴形式是()。
A. abcd*+* B. abc+*d*
C. a*bc+*d D. b+c*a*d
13.向一個(gè)棧頂指針為hs的鏈?zhǔn)綏V胁迦胍粋€(gè)指針s指向的結(jié)點(diǎn)時(shí),應(yīng)執(zhí)行( )。
A. hs->next=s;
B.s->next=hs;hs=s;
C.s->next=hs->next;hs->next=s;
D.s->next=hs;hs=hs->next;
14.若串S = “copyright”,其子串的個(gè)數(shù)是( )。
A. 72 B. 45 C. 46 D. 36
15.十進(jìn)制小數(shù)13.375對(duì)應(yīng)的二進(jìn)制數(shù)是( )。
A.1101.011 B. 1011.011
C.1101.101 D. 1010.01
16.對(duì)于入棧順序?yàn)閍, b, c, d, e, f, g的序列,下列()不可能是合法的出棧序列。
A. a,b,c,d,e,f,g B. a,d,c,b,e,g,f
C. a,d,b,c,g,f,e D.g,f,e,d,c,b,a
17.設(shè)A和B是兩個(gè)長(zhǎng)為n的有序數(shù)組,現(xiàn)在需要將A和B合并成一個(gè)排好序的數(shù)組,任何以元素比較作為基本運(yùn)算的歸并算法在最壞情況下至少要做( )次比較。
A. n2 B. nlogn C. 2n D. 2n-1
18.從()年開(kāi)始,NOIP競(jìng)賽將不再支持Pascal語(yǔ)言。
A. 2020 B. 2021 C. 2022 D. 2023
19.一家四口人,至少兩個(gè)人生日屬于同一月份的概率是()(假定每個(gè)人生日屬于每個(gè)月份的概率相同且不同人之間相互獨(dú)立)。
A. 1/12 B. 1/144 C. 41/96D. 3/4
20.以下和計(jì)算機(jī)領(lǐng)域密切相關(guān)的獎(jiǎng)項(xiàng)是( )。
A.奧斯卡獎(jiǎng) B.圖靈獎(jiǎng)
C.諾貝爾獎(jiǎng) D.普利策獎(jiǎng)
二、問(wèn)題求解(共2題,每題5分,共計(jì)10分)
1.一個(gè)人站在坐標(biāo)(0, 0)處,面朝x軸正方向。第一輪,他向前走1單位距離,然后右轉(zhuǎn);第二輪,他向前走2單位距離,然后右轉(zhuǎn);第三輪,他向前走3單位距離,然后右轉(zhuǎn)......他一直這么走下去。請(qǐng)問(wèn)第2017輪后,他的坐標(biāo)是: (1009,1008)。(請(qǐng)?jiān)诖痤}紙上用逗號(hào)隔開(kāi)兩空答案)
2.如圖所示,共有13個(gè)格子。對(duì)任何一個(gè)格子進(jìn)行一次操作,會(huì)使得它自己以及與它上下左右相鄰的格子中的數(shù)字改變(由1變0,或由0變1)?,F(xiàn)在要使得所有的格子中的數(shù)字都變?yōu)?,至少需要3次操作。
三、閱讀程序?qū)懡Y(jié)果(共4題,每題8分,共計(jì)32分)
1.
#include
using namespacestd;
int main() {
int t[256];
string s;
int i;
cin >> s;
for (i = 0; i < 256; i++)
t[i] = 0;
for (i = 0; i < s.length(); i++)
t[s[i]]++;
for (i = 0; i < s.length(); i++)
if (t[s[i]] == 1) {
cout << s[i] << endl;
return 0;
}
cout << "no" << endl;
return 0;
}
輸入: xyzxyw
輸出:z
2.
#include
using namespacestd;
int g(int m, intn, int x) {
int ans = 0;
int i;
if (n == 1)
return 1;
for (i = x; i <= m / n; i++)
ans += g(m - i, n - 1, i);
return ans;
}
int main() {
int t, m, n;
cin >> m >> n;
cout << g(m, n, 0) << endl;
return 0;
}
輸入: 7 3
輸出:8
3.
#include
using namespacestd;
int main() {
string ch;
int a[200];
int b[200];
int n, i, t, res;
cin >> ch;
n = ch.length();
for (i = 0; i < 200; i++)
b[i] = 0;
for (i = 1; i <= n; i++) {
a[i] = ch[i - 1] - '0';
b[i] = b[i - 1] + a[i];
}
res = b[n];
t = 0;
for (i = n; i > 0; i--) {
if (a[i] == 0)
t++;
if (b[i - 1] + t < res)
res = b[i - 1] + t;
}
cout << res << endl;
return 0;
}
輸入: 1001101011001101101011110001
輸出:11
4.
#include
using namespacestd;
int main() {
int n, m;
cin >> n >> m;
int x = 1;
int y = 1;
int dx = 1;
int dy = 1;
int cnt = 0;
while (cnt != 2) {
cnt = 0;
x = x + dx;
y = y + dy;
if (x == 1 || x == n) {
++cnt;
dx = -dx;
}
if (y == 1 || y == m) {
++cnt;
dy = -dy;
}
}
cout << x << " " << y<< endl;
return 0;
}
輸入1: 4 3
輸出1:1 3(3分)
輸入2: 2017 1014
輸出2:2017 1(5分)
四、完善程序(共2題,每題14分,共計(jì)28分)
1.快速冪:請(qǐng)完善下面的程序,該程序使用分治法求xp mod m的值。(第一空2分,其余3分)
輸入:三個(gè)不超過(guò)10000的正整數(shù)x,p,m。
輸出:xpmod m的值。
提示:若p為偶數(shù),xp=(x2)p/2;若p為奇數(shù),xp=x*(x2)(p-1)/2。
#include
using namespacestd;
int x, p, m, i,result;
int main() {
cin >> x >> p >> m;
result =1;
while (p>0) {
if (p % 2 == 1)
result=result*x%m;
p /= 2;
x=x*x%m;
}
cout << result<< endl;
return 0;
}
2.切割繩子:有n條繩子,每條繩子的長(zhǎng)度已知且均為正整數(shù)。繩子可以以任意正整數(shù)長(zhǎng)度切割,但不可以連接。現(xiàn)在要從這些繩子中切割出m條長(zhǎng)度相同的繩段,求繩段的最大長(zhǎng)度是多少。(第一、二空2.5分,其余3分)
輸入:第一行是一個(gè)不超過(guò)100的正整數(shù)n,第二行是n個(gè)不超過(guò)106的正整數(shù),表示每條繩子的長(zhǎng)度,第三行是一個(gè)不超過(guò)108的正整數(shù)m。
輸出:繩段的最大長(zhǎng)度,若無(wú)法切割,輸出Failed。
#include
using namespacestd;
int n, m, i,lbound, ubound, mid, count;
int len[100]; //繩子長(zhǎng)度
int main() {
cin >> n;
count = 0;
for (i = 0; i < n; i++) {
cin >> len[i];
count+=len[i];
}
cin >> m;
if(count<m ){
cout << "Failed" <
return 0;
}
lbound = 1;
ubound = 1000000;
while (lbound<ubound){
mid =(lbound+ubound+1)/2;
count = 0;
for (i = 0; i < n; i++)
count+=len[i]/mid;
if (count < m)
ubound = mid - 1;
else
lbound = mid;
}
cout << lbound << endl;
return 0;
}
聲明:本文來(lái)源于網(wǎng)絡(luò),由自主選拔在線團(tuán)隊(duì)(微信公眾號(hào):zizzsw)排版編輯,如有侵權(quán),請(qǐng)聯(lián)系刪除。