Обмен технологиями

Июнь 2024 г. Сертификация уровня навыков программирования CCF-GESP. Уровень программирования C 3. Анализ реальных экзаменационных вопросов.

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Эта статья включена в рубрику «Анализ реальных вопросов сертификации уровня C++ CCF-GESP》, общий каталог колонн:кликните сюда . После подписки вы сможете читать все статьи рубрики.

1. Вопросы с несколькими вариантами ответов (по 2 балла, всего 30 баллов)

Вопрос 1

Родители Сяо Янга отвезли его в учебное заведение, чтобы зарегистрировать его на уровень 1 сертификационного экзамена GESP, организованного CCF. Затем он может выбрать несколько языков сертификации.
А. 1
БИ 2
С. 3
Д. 4

Ответ: С

вопрос 2

На приведенной ниже блок-схеме, когда год введен как 2024, можно определить, что год представляет собой високосный год, а февраль имеет 29 дней. Затем необходимо заполнить ромбовидное поле на рисунке ( ).
Вставьте сюда описание изображения

А. (год%400==0) || (год%4==0)
Б. (год%400==0) || (год%4==0 && год%100!=0)
С. (год%400==0) && (год%4==0)
D. (год%400==0) && (год%4==0 && год%100!=0)

Ответ: Б

Вопрос 3

Обычно по умолчанию целочисленные переменные (int) в 64-битных компьютерных системах по-прежнему являются 32-битными, поэтому диапазон данных, которые могут представлять целые числа, равен ().
А. 0 0 0 ~ 2 32 2^{32} 232
Б. 0 0 0 ~ 2 64 2^{64} 264
С. − 2 31 -2^{31} 231 ~ ( 2 31 ) − 1 (2^{31})-1 (231)1
Д. − 2 63 -2^{63} 263 ~ ( 2 63 ) − 1 (2^{63})-1 (263)1

Ответ: С

Вопрос 4

Следующий код преобразует десятичное число в восьмеричное, затем ( ) следует заполнить в горизонтальной строке.

#include <iostream>

using namespace std;

void decimal2octal(int decimal) {
	int oct_number[100];
	int i = 0;
	
	while (decimal > 0) {
		__________________________ //在此处填入代码
	}
	for (int j = i - 1; j >= 0; j--) {
		cout << oct_number[j];
	}
	cout << endl;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

A. oct_number[i] = decimal % 8; decimal /= 8;
B. oct_number[i] = десятичное число / 8; десятичное число %/= 8;
C. oct_number[i++] = decimal % 8; decimal /= 8;
D. oct_number[i++] = десятичное число / 8; десятичное число %= 8;

Ответ: С

Вопрос 5

Десятичное число, соответствующее двоичному числу 101,11, равно ( ).
А. 6.5
Б. 5.5
С. 5.75
Д. 5.25

Ответ: С

Вопрос 6

Выходной результат следующей блок-схемы: ( ).
Вставьте сюда описание изображения

А. 5
Б. 10
С. 20
Д. 30

Ответ: Б

Вопрос 7

Результатом следующего кода будет ( ).

#include <iostream>
using namespace std;

int main() {
	int a = 12;
	int result = a >> 2;
	cout << result << endl;
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

А. 12
Б. 6
С. 3
Д. 1

Ответ: С

Вопрос 8

Результатом следующего кода будет ( ).

#include <iostream>
using namespace std;

int main() {
	int a = 5;
	int b = 10;
	
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	
	cout << "a = " << a << ", b = " << b << endl;
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

А. а = 5, б = 10
Б. а = 5, б = 5
В. а = 10, б = 5
D. а = 10, б = 10

Ответ: С

Вопрос 9

Если строка определена как char str[] = «GESP»;, то длина массива символов str равна ().
А. 0
Б. 4
С. 5
Д. 6

Ответ: С

Вопрос 10

Заполните горизонтальные линии ( ) в следующем коде, чтобы получить результат «7».

#include <iostream>
using namespace std;

int main() {
	int array[5] = {37524};
	
	int max = 0;
	for(int i=0; i<5; i++)
		if(______________) // 在此处填入代码
			max = array[i];
			
	cout << max << endl;
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

А. макс &gt; массив[i]
Б. макс &lt; массив[i]
C. макс = массив[i]
D. Ничего из вышеперечисленного неверно

Ответ: Б

Вопрос 11

Сяо Ян решает математический вопрос. Вопрос требует найти число от 1 до 35, которое делится на 7, то есть [7, 14, 21, 28, 35]. Какой код следует заполнить в горизонтальной строке? ( )

#include <iostream>
using namespace std;

int main() {
	int arr[35];
	int count = 0;
	for (int i = 1; i <= 35; i++) {
		if (i % 7 == 0)
			__________________________ // 在此处填入代码
	}
	for (int i = 0; i < count; i++)
		cout << arr[i] << endl;
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

А. arr[count++] = i;
Б. arr[i] = count++;
C. arr[i] = количество;
D. arr[count] = count++;

Ответ: А

Вопрос 12

Известно, что десятичное представление символа «0» в кодировке ASCII равно 48. После выполнения следующего кода C++ на выходе будет ().

#include <iostream>
using namespace std;

int main() {
	string s = "0629";
	
	int n = s.length();
	int x = 0;
	for(int i = 0; i < n; i++)
		x += s[i];
		
	cout << x << endl;
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

А. 17
Б. 158
С. 209
Д. 316

Ответ: С

Вопрос 13

Баскетбольная команда мальчиков начальной школы набирает новых членов, при этом члены, вступающие в команду, должны быть ростом более 135 см (исключая 135 см). На этот раз зарегистрировано 10 человек, их рост 125, 127, 136, 134, 137, 138, 126, 135, 140 и 145 соответственно. Заполните следующий код, чтобы узнать, сколько новых членов команда сможет набрать на этот раз? ( )

#include <iostream>
using namespace std;

int main() {
	int arr[10] = {125, 127, 136, 134, 137, 138, 126, 135, 140, 145};
	
	int count = 0;
	for(int i=0; i<10; i++)
		__________________________ // 在此处填入代码
	
	cout << count << endl;
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

А. количество = arr[i]&gt;135? 1: 0;
B. count += arr[i]&gt;135? 1: 0;
C. количество++;
D. Ничего из вышеперечисленного неверно

Ответ: Б

Вопрос 14

Какой оператор C++ может правильно вывести сообщение «Они планируют вечеринку по случаю дня рождения своего друга» ниже? ( )
A. cout &lt;&lt; 'Они планируют вечеринку в честь дня рождения своего друга.' &lt;&lt; endl;
B. cout &lt;&lt; "Они планируют вечеринку в честь дня рождения своего друга."&lt;&lt; endl;
C. cout &lt;&lt; 'Они планируют вечеринку в честь дня рождения своего друга.'&lt;&lt; endl;
D. cout &lt;&lt; «Они планируют вечеринку в честь дня рождения своего друга». &lt;&lt; endl;

Ответ: Д

Вопрос 15

Если результатом выполнения следующего кода C++ является «gesp ccf org cn», какой код следует заполнить в горизонтальной строке? ( )

#include <iostream>
using namespace std;

int main() {
	string str = "gesp.ccf.org.cn";
	
	string delimiter = ".";
	string result="";
	string token;
	size_t found = str.find(delimiter);
	while (found != string::npos) {
		token = str.substr(0, found);
		result += token;
		result += " ";
		__________________________ // 在此处填入代码
		found = str.find(delimiter);
	}
	//最后一部分
	result += str;
		result += " ";
	cout << result << endl;
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

A. str = str.substr(найдено + разделитель.длина(), str.длина() - 1);
B. str = str.substr(найдено, str.length() );
C. str = str.substr(найдено, str.length() -1);
D. Ничего из вышеперечисленного неверно

Ответ: А

2. Верные или неверные вопросы (по 2 балла, всего 20 баллов)

Вопрос 16

Тест GESP представляет собой сертификацию уровня способностей сертификатора к программированию. Способности одного и того же уровня в основном не зависят от языка программирования.

Ответ: Правильно

Вопрос 17

16-битное дополнение целого числа -6 может быть представлено в шестнадцатеричном виде как FFFA.

Ответ: Правильно

Вопрос 18

Преимущество дополнения заключается в том, что оно может преобразовывать операции вычитания в операции сложения, тем самым упрощая конструкцию компьютерного оборудования.

Ответ: Правильно

Вопрос 19

Символьная константа «0» часто используется для обозначения конца строки, которая совпадает с символьной константой «0».

Ответ: Неправильно

Вопрос 20

Все элементы массива могут храниться в памяти прерывисто.

Ответ: Неправильно

Вопрос 21

В C++ можно присваивать значения массивам и элементам каждого базового типа массива.

Ответ: Неправильно

Вопрос 22

Если это переменная типа int и значение выражения ((a | 3) == 3) истинно, это означает, что оно находится между 0 и 3 (возможно, 0, возможно, 3).

Ответ: Правильно

Вопрос 23

После выполнения следующего кода C++ выходной результат равен 8.

int a = 0b1010;
int b = 01100;
int c = a & b;
cout << c <<endl;
  • 1
  • 2
  • 3
  • 4

Ответ: Неправильно

Вопрос 24

После выполнения следующего кода C++ выходной результат не может быть 89781. ( )

#include <iostream>
#include <cstdlib> // 为了使用 rand() 和 srand()
#include <ctime> // 为了使用 time()

using namespace std;

int main() {
	// 设置随机种子
	srand(time(NULL));
	
	int i = 1;
	int s[5];
	while(i <= 5)
	{
		int a = rand() % 10;
		if(a % 3 == (i + 1) % 3)
			s[i++] = a;
	}
	for(int i = 1; i <= 5; i++)
		cout << s[i];
	cout << endl;
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

Ответ: Правильно

Вопрос 25

Разрежьте целое число 3025 на два числа: 30 и 25. В это время возведите в квадрат сумму этих двух чисел, и вычисленный результат будет равен исходному числу. (30+25)×(30+25)=55×55=3025. Это число называется «числом удара молнии». Вы можете использовать методы перечисления, чтобы найти все четырехзначные числа, соответствующие таким условиям. ( )

Ответ: Правильно

3. Вопросы по программированию (по 25 баллов, всего 50 баллов)

Вопрос 26

Название вопроса: сдвиг
лимит времени:1,0 с
предел памяти:512.0 МБ
Описание вопроса
Сяо Ян узнал об изменении технологии шифрования, при котором все заглавные буквы смещаются назад на фиксированное число. Процесс смещения рассматривает алфавит как кольцо, соединенное между собой. Например, если смещение равно 3, прописная буква A будет заменена на D, а прописная буква Z будет заменена на C. В целом алфавит в верхнем регистре ABCDEFGHIJKLMNOPQRSTUVWXYZ. будет заменен на DEFGHIJKLMNOPQRSTUVWXYZABC.
Примечание. Если смещение кратно 26, каждая прописная буква вернется в исходное положение точно после смещения, то есть алфавит верхнего регистра ABCDEFGHIJKLMNOPQRSTUVWXYZ останется неизменным после смещения.
Формат ввода
Первая строка содержит положительное целое число ннн
Выходной формат
Выход находится со смещением ннн В этом случае алфавит ABCDEFGHIJKLMNOPQRSTUVWXYZ в верхнем регистре является результатом замены сдвига.
Образец 1

3
  • 1
DEFGHIJKLMNOPQRSTUVWXYZABC
  • 1

Пример объяснения
Если смещение равно 3, прописная буква A будет заменена на D, а прописная буква Z — на C. В целом алфавит ABCDEFGHIJKLMNOPQRSTUVWXYZ будет заменен на DEFGHIJKLMNOPQRSTUVWXYZABC.
диапазон данных
Для всех данных гарантированно имеется 1 ≤ n ≤ 100 1≤n≤1001н100

Справочная процедура

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin>>n;
	int fl=0;
	for(int i=0;i<26;i++){
		int j = (i+n)%26;
		char ch = 'A'+j;
		cout<<ch;
	}
	cout<<"n";
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

Вопрос 27

Название вопроса: найти кратные
лимит времени:1,0 с
предел памяти:512.0 МБ
Описание вопроса
Сяо Ян обладает сдерживающим фактором. ннн последовательность положительных целых чисел A = [a 1 , a 2 , . . . , an ] A=[a_1,a_2,...,a_n]А=[а1,а2,...,ан], он хочет знать, существует ли я ( 1 ≤ я ≤ n ) я(1≤i≤n)я(1ян) делать ай а_иая это последовательность ААА Кратные всех чисел в .
Формат ввода
Первая строка содержит положительное целое число ттт, представляет количество групп тестовых случаев.
Далее ттт Набор тестовых случаев.
Для каждого набора тестовых случаев есть две строки.Среди них первая строка содержит целое положительное число ннн;Вторая строка содержит ннн положительное целое число, представляющее последовательность ААА
Выходной формат
Для каждого набора тестовых случаев, если есть я ( 1 ≤ я ≤ n ) я(1≤i≤n)я(1ян) Удовлетворение для всех к ( 1 ≤ к ≤ n ) aik(1≤k≤n)a_iк(1кн)ая да ак а_как Если кратно , выведите Yes, в противном случае выведите No.
Образец 1

2
3
1 2 4
5
1 2 3 4 5
  • 1
  • 2
  • 3
  • 4
  • 5
Yes
No
  • 1
  • 2

Пример объяснения
Для первого набора данных, для а 3 = 4 а_3=4а3=4,удовлетворить а 3 а_3а3 да а 1 а_1а1 и а 2 а_2а2 кратные.
диапазон данных
Для всех данных гарантированно имеется 1 ≤ t ≤ 10 , 1 ≤ n ≤ 1 0 5 , 1 ≤ ai ≤ 1 0 9 1≤t≤10,1≤n≤10^5,1≤a_i≤10^91т10,1н105,1ая109
Справочная процедура

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int a[N];
int main(){
	int t;
	cin>>t;
	while(t--){
		int n;
		cin>>n;
		int x = 0;
		for(int i=1;i<=n;i++){
			cin>>a[i];
			x =max(x,a[i]);
		}
		int fl = 0;
		for(int i=1;i<=n;i++){
			if(x%a[i])fl=1;
		}
		if(fl)cout<<"Non";
		else cout<<"Yesn";
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23