本文收錄于專欄《C++等級認證CCF-GESP真題解析》,專欄總目錄:點這里。訂閱后可閱讀專欄內所有文章。
一、單選題(每題 2 分,共 30 分)
第 1 題
在C++中,下列不可做變量的是( )。
A. five-Star
B. five_star
C. fiveStar
D. _fiveStar
答案:A
第 2 題
C++表達式 3 - 3 * 3 / 5 的值是( )。
A. -1.2
B. 1
C. 0
D. 2
答案:D
第 3 題
在C++中,假設N為正整數,則表達式 cout << (N % 3 + N % 7) 可能輸出的最大值是( )。
A. 6
B. 8
C. 9
D. 10
答案:B
第 4 題
C++語句 printf(“5%%2={%d}\n”,5 % 2) 執行后的輸出是( )。
A. 1={1}
B. 5%2={5%2}
C. 5%2={1}
D. 5 ={1}
答案:C
第 5 題
對整型變量i,執行C++語句 cin >> i, cout << i 時如果輸入 5+2 ,下述說法正確的是( )。
A. 將輸出整數7
B. 將輸出 5
C. 語句執行將報錯,輸入表達式不能作為輸出的參數
D. 語句能執行,但輸出內容不確定
答案:B
第 6 題
下面C++代碼執行后的輸出是( )。
float a;
a = 101.101;
a = 101;
printf("a+1={%.0f}",a+1);
A. 102={102}
B. a+1={a+1}
C. a+1={102}
D. a先被賦值為浮點數,后被賦值為整數,執行將報錯
答案:C
第 7 題
表達式 9/4 - 6 % (6 - 2) * 10 的值是( )。
A. -17.75
B. -18
C. -14
D. -12.75
答案:B
第 8 題
下面C++代碼執行時輸入10后,正確的輸出是( )。
int N;
cout << "請輸入正整數:";
cin >> N;
if (N % 3)printf("第5行代碼%2d", N % 3);
elseprintf("第6行代碼%2d", N % 3);
A. 第5行代碼1
B. 第6行代碼1
C. 第5行代碼 1
D. 第6行代碼 1
答案:C
第 9 題
下面C++代碼執行后輸出是( )。
int Sum = 0, i = 0;
for ( ; i < 10; )Sum += i++;
cout << i << " " << Sum;
A. 9 45
B. 10 55
C. 10 45
D. 11 55
答案:C
第 10 題
下面C++代碼用于判斷N是否為質數(只能被1和它本身整除的正整數)。程序執行后,下面有關描述正確的是( )。
int N;
cout << "請輸入整數:";
cin >> N;bool Flag = false;if (N >= 2){Flag = true;for (int i=2; i < N; i++)if (N % i == 0){Flag = false;break;}
}
if(Flag)cout << "是質數";
elsecout << "不是質數";
A. 如果輸入負整數,可能輸出“是質數”
B. 如果輸入2,將輸出“不是質數”,因為此時循環不起作用
C. 如果輸入2,將輸出“是質數”,即便此時循環體沒有被執行
D. 如果將 if (N >= 2) 改為 if (N > 2) 將能正確判斷N是否質數
答案:C
第 11 題
下面的C++代碼用于求1~N之間所有奇數之和,其中N為正整數,如果N為奇數,則求和時包括N。有關描述錯誤的是( )。
int N;
cout << "請輸入正整數:";
cin >> N;int i = 1, Sum = 0;while (i <= N){if (i % 2 == 1)Sum += i;i += 1;}cout << i << " " << Sum;
A. 執行代碼時如果輸入10,則最后一行輸出將是 11 25
B. 執行代碼時如果輸入5,則最后一行輸出將是 6 9
C. 將 i += 1 移到 if (i % 2 == 1) 前一行,同樣能實現題目要求
D. 刪除 if (i % 2 == 1) ,并將 i += 1 改為 i += 2 ,同樣可以實現題目要求
答案:C
第 12 題
如果一個整數N能夠表示為 X*X 的形式,那么它就是一個完全平方數,下面C++代碼用于完成判斷N是否為一個完全平方數,在橫線處應填入的代碼是( )。
int N;cin >> N;
for(int i = 0; i <= N; i++)if(___________________)cout << N << "是一個完全平方數\n";
A. i == N*N
B. i*10 == N
C. i+i == N
D. i*i == N
答案:D
第 13 題
執行下面C++代碼后輸出的cnt的值是( )。
int cnt=0;for(int i = 0; i*i < 64; i+=2)cnt++;
cout << cnt;
A. 8
B. 7
C. 4
D. 1
答案:C
第 14 題
小楊父母帶他到某培訓機構給他報名參加CCF組織的GESP認證考試的第1級,那他可以選擇的認證語言有幾種?( )
A. 1
B. 2
C. 3
D. 4
答案:C
第 15 題
ENIAC于1946年投入運行,是世界上第一臺真正意義上的計算機,它的主要部件都是( )組成的。
A. 感應線圈
B. 電子管
C. 晶體管
D. 集成電路
答案:B
二、判斷題(每題 2 分,共 20 分)
第 16 題
在C++代碼中變量 X 被賦值為16.44,則 cout << X / 10 執行后輸出的一定是 1 。( )
答案:錯誤
第 17 題
C++的整型變量 N 被賦值為10,則語句 cout << N / 4 << “->” << N % 4 << “->” << N / 4.0 執行后輸出是 2->2->2.0 。 ( )
答案:錯誤
第 18 題
定義C++的 float 型變量 N ,則語句 cin >> N; cout << int(float(N)) 可以輸入正負整數和浮點數,并將其轉換為整數后輸出。( )
答案:正確
第 19 題
C++的整型 N 被賦值為5,語句 printf(“%d*2”,N) 執行后將輸出 10 。( )
答案:錯誤
第 20 題
在C++中, break 語句用于終止當前層次的循環,循環可以是 for 循環,也可以是 while 循環。( )
答案:正確
第 21 題
在C++, continue 語句通常與 if 語句配合使用。( )
答案:正確
第 22 題
在C++代碼中,不可以將變量命名為 printf ,因為 printf 是C++語言的關鍵字。( )
答案:錯誤
第 23 題
在C++中有整型變量N,則表達式 N += 8/4//2 相當于 N += 8/(4/2) 。( )
答案:錯誤
第 24 題
C++中定義變量 int N ,則表達式 (!!N) 的值也是 N 的值。 ( )
答案:錯誤
第 25 題
GESP測試是對認證者的編程能力進行等級認證,同一級別的能力基本上與編程語言無關。( )
答案:正確
三、編程題(每題 25 分,共 50 分)
第 26 題
試題名稱:休息時間
時間限制:1.0 s
內存限制:512.0 MB
題面描述
小楊計劃在某個時刻開始學習,并決定在學習 k k k 秒后開始休息。
小楊想知道自己開始休息的時刻是多少。
輸入格式
前三行每行包含一個整數,分別表示小楊開始學習時刻的時 h h h、分 m m m、秒 s s s( h , m , s h,m,s h,m,s 的值符合 1 ≤ h ≤ 12 , 0 ≤ m ≤ 59 , 0 ≤ s ≤ 59 1≤h≤12,0≤m≤59,0≤s≤59 1≤h≤12,0≤m≤59,0≤s≤59)。
第四行包含一個整數 k k k,表示小楊學習的總秒數(注: k k k的值符合 1 ≤ k ≤ 3600 1≤k≤3600 1≤k≤3600)。
輸出格式
輸出一行,包含三個整數,分別表示小楊開始休息時刻的時、分、秒。
樣例1
12
59
59
10
13 0 9
樣例解釋
小楊在時刻 12:59:59 開始學習,學習 10 秒后開始休息,即在 13:0:9 時刻開始休息。
數據范圍
對于全部數據,保證有 1 ≤ h ≤ 12 , 0 ≤ m ≤ 59 , 0 ≤ s ≤ 59 , 1 ≤ k ≤ 3600 1≤h≤12,0≤m≤59,0≤s≤59,1≤k≤3600 1≤h≤12,0≤m≤59,0≤s≤59,1≤k≤3600。
參考程序
#include<bits/stdc++.h>
using namespace std;
int main(){int h,m,s;cin>>h>>m>>s;int k;cin>>k;int now=h*60*60+m*60+s;now+=k;int hh = now/3600;now %= 3600;int mm = now/60;now %= 60;cout<<hh<<" "<<mm<<" "<<now<<"\n";
}
第 27 題
試題名稱:立方數
時間限制:1.0 s
內存限制:512.0 MB
題面描述
小楊有一個正整數 n n n,他想知道 n n n 是否是一個立方數。
一個正整數 n n n 是立方數當且僅當存在一個正整數 x x x 滿足 x × x × x = n x×x×x=n x×x×x=n。
輸入格式
第一行包含一個正整數 n n n。
輸出格式
如果正整數 n n n 是一個立方數,輸出 Yes,否則輸出 No。
樣例1
8
Yes
樣例2
9
No
樣例解釋
對于樣例1,存在正整數 2 2 2 使得 8 = 2 × 2 × 2 8=2×2×2 8=2×2×2,因此 8 8 8 為立方數。
對于樣例2,不存在滿足條件的正整數,因此 9 9 9 不為立方數。
數據范圍
對于全部數據,保證有 1 ≤ n ≤ 1000 1≤n≤1000 1≤n≤1000。
參考程序
#include<bits/stdc++.h>
using namespace std;
int main(){int n;cin>>n;int fl=0;for(int i=1;i<=n;i++){if(i*i*i==n){fl=1;break;}}if(fl)cout<<"Yes\n";else cout<<"No\n";
}