Compartilhamento de tecnologia

Junho de 2024 CCF-GESP Certificação de Nível de Capacidade de Programação C Programação Nível 3 Análise de questões reais do exame

2024-07-12

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

Este artigo está incluído na coluna "Análise de questões reais da certificação em nível C++ CCF-GESP》, catálogo geral de colunas:Clique aqui . Depois de se inscrever, você poderá ler todos os artigos da coluna.

1. Questões de múltipla escolha (2 pontos cada, 30 pontos no total)

Questão 1

Os pais de Xiao Yang o levaram a uma instituição de treinamento para registrá-lo no nível 1 do exame de certificação GESP organizado pelo CCF. Depois, há () idiomas de certificação que ele pode escolher.
A. 1
B.2
C.3
D.4

Resposta: C

Questão 2

No fluxograma abaixo, quando o ano é inserido como 2024, pode-se determinar que o ano representa um ano bissexto e fevereiro tem 29 dias. Em seguida, a caixa de losango na figura deve ser preenchida ( ).
Insira a descrição da imagem aqui

A. (ano%400==0) || (ano%4==0)
B. (ano%400==0) || (ano%4==0 && ano%100!=0)
C. (ano%400==0) && (ano%4==0)
D. (ano%400==0) && (ano%4==0 && ano%100!=0)

Resposta:B

Questão 3

Geralmente, por padrão, as variáveis ​​inteiras (int) em sistemas de computador de 64 bits ainda são de 32 bits, portanto, o intervalo de dados que os inteiros podem representar é ().
A. 0 0 0 ~ 2 32 2^{32} 232
B. 0 0 0 ~ 2 64 2^{64} 264
C. − 2 31 -2^{31} 231 ~ ( 2 31 ) − 1 (2^{31})-1 (231)1
E. − 2 63 -2^{63} 263 ~ ( 2 63 ) − 1 (2^{63})-1 (263)1

Resposta: C

Pergunta 4

O código a seguir converte decimal em octal, então ( ) deve ser preenchido na linha horizontal.

#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] = decimal / 8; decimal %/= 8;
C. oct_number[i++] = decimal % 8; decimal /= 8;
D. oct_number[i++] = decimal / 8; decimal %= 8;

Resposta: C

Pergunta 5

O número decimal correspondente ao número binário 101.11 é ( ).
A. 6,5
B. 5.5
C. 5,75
E. 5,25

Resposta: C

Pergunta 6

O resultado de saída do fluxograma a seguir é ( ).
Insira a descrição da imagem aqui

A. 5
B.10
C. 20
D.30

Resposta:B

Pergunta 7

A saída do código a seguir é ( ).

#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

A. 12
B.6
C.3
D.1

Resposta: C

Pergunta 8

A saída do código a seguir é ( ).

#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

A. a = 5, b = 10
B. a = 5, b = 5
C. a = 10, b = 5
D. a = 10, b = 10

Resposta: C

Pergunta 9

Se a string for definida como char str[] = “GESP”;, então o comprimento da matriz de caracteres str é ().
A. 0
B.4
C. 5
D.6

Resposta: C

Pergunta 10

Preencha as linhas horizontais ( ) no código a seguir para obter a saída “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

A. max &gt; array[i]
B. max &lt; matriz[i]
C. max = matriz[i]
D. Nenhuma das opções acima está correta

Resposta:B

Pergunta 11

Xiao Yang está fazendo uma questão de matemática. A questão requer encontrar um número de 1 a 35 que seja divisível por 7, ou seja, [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

A. arr[contagem++] = i;
B. arr[i] = contagem++;
C. arr[i] = contagem;
D. arr[contagem] = contagem++;

Resposta: UMA

Pergunta 12

Sabe-se que a representação decimal codificada em ASCII do caracter '0' é 48. Após executar o código C++ a seguir, a saída é ().

#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

A. 17
B.158
C. 209
D.316

Resposta: C

Pergunta 13

O time de basquete masculino de uma escola primária recruta novos membros, e os membros que ingressam no time devem ter mais de 135 cm de altura (excluindo 135 cm). Desta vez, há 10 pessoas registradas e suas alturas são 125, 127, 136, 134, 137, 138, 126, 135, 140 e 145, respectivamente. Complete o código a seguir para descobrir quantos novos membros a equipe pode recrutar desta vez? ( )

#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

A. contagem = arr[i]&gt;135? 1: 0;
B. contagem += arr[i]&gt;135? 1: 0;
C. contagem++;
D. Nenhuma das opções acima está correta

Resposta:B

Pergunta 14

Qual é a instrução C++ que pode gerar corretamente Eles estão planejando uma festa para o aniversário de um amigo abaixo? ( )
A. cout &lt;&lt; "Eles estão planejando uma festa para o aniversário do amigo." &lt;&lt; endl;
B. cout &lt;&lt; "Eles estão planejando uma festa para o aniversário do amigo deles.'&lt;&lt; endl;
C. cout &lt;&lt; 'Eles estão planejando uma festa para o aniversário do amigo.'&lt;&lt; endl;
D. cout &lt;&lt; “Eles estão planejando uma festa para o aniversário do amigo.” &lt;&lt; endl;

Resposta:D

Pergunta 15

Se o resultado da saída após a execução do seguinte código C++ for "gesp ccf org cn", qual código deve ser preenchido na linha horizontal? ( )

#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(encontrado + delimitador.length(), str.length() - 1);
B. str = str.substr(encontrado, str.length() );
C. str = str.substr(encontrado, str.length() -1);
D. Nenhuma das opções acima está correta

Resposta: UMA

2. Perguntas Verdadeiro ou Falso (2 pontos cada, 20 pontos no total)

Pergunta 16

O teste GESP é uma certificação de nível de habilidade de programação do certificador. A habilidade no mesmo nível é basicamente independente da linguagem de programação.

Resposta: Correto

Pergunta 17

O complemento de 16 bits do inteiro -6 pode ser representado em hexadecimal como FFFA.

Resposta: Correto

Pergunta 18

A vantagem do complemento é que ele pode converter operações de subtração em operações de adição, simplificando assim o projeto do hardware do computador.

Resposta: Correto

Pergunta 19

A constante de caractere '0' é frequentemente usada para indicar o fim de uma string, que é igual à constante de caractere '0'.

Resposta: Errado

Pergunta 20

Todos os elementos do array podem ser armazenados de forma descontínua na memória.

Resposta: Errado

Pergunta 21

Em C++, você pode atribuir valores a arrays e elementos de cada tipo básico de array.

Resposta: Errado

Pergunta 22

Se for uma variável do tipo int e o valor da expressão ((a | 3) == 3) for verdadeiro, significa que está entre 0 e 3 (possivelmente 0, possivelmente 3).

Resposta: Correto

Pergunta 23

Depois de executar o seguinte código C++, o resultado de saída é 8.

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

Resposta: Errado

Pergunta 24

Depois de executar o código C++ a seguir, o resultado de saída não pode ser 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

Resposta: Correto

Pergunta 25

Corte o número inteiro 3025 em dois números, 30 e 25. Neste momento, eleve ao quadrado a soma desses dois números e o resultado calculado será igual ao número original. (30 + 25) × (30+ 25) = 55 × 55 = 3025. Este número é chamado de "número do raio". Você pode usar métodos de enumeração para encontrar todos os números de quatro dígitos que atendam a essas condições. ( )

Resposta: Correto

3. Questões de programação (25 pontos cada, 50 pontos no total)

Pergunta 26

Nome da pergunta: mudança
limite de tempo:1,0 s
limite de memória:512,0 MB
Descrição da pergunta
Xiao Yang aprendeu a mudança na tecnologia de criptografia, na qual todas as letras maiúsculas são deslocadas para trás por um número fixo. O processo de deslocamento trata o alfabeto como um anel conectado de ponta a ponta. Por exemplo, quando o deslocamento é 3, a letra maiúscula A será substituída por D e a letra maiúscula Z será substituída por C. No geral, o alfabeto maiúsculo ABCDEFGHIJKLMNOPQRSTUVWXYZ. será substituído por DEFGHIJKLMNOPQRSTUVWXYZABC.
Nota: Quando o deslocamento for múltiplo de 26, cada letra maiúscula retornará à sua posição original exatamente após o deslocamento, ou seja, o alfabeto maiúsculo ABCDEFGHIJKLMNOPQRSTUVWXYZ permanecerá inalterado após o deslocamento.
Formato de entrada
A primeira linha contém um número inteiro positivo nãonãoãoãoãoãoãoãoãoãoãoão
Formato de saída
A saída está em offset nãonãoãoãoãoãoãoãoãoãoãoão Neste caso, o alfabeto maiúsculo ABCDEFGHIJKLMNOPQRSTUVWXYZ é o resultado da substituição de turno.
Amostra 1

3
  • 1
DEFGHIJKLMNOPQRSTUVWXYZABC
  • 1

Exemplo de explicação
Quando o deslocamento for 3, a letra maiúscula A será substituída por D e a letra maiúscula Z será substituída por C. No geral, o alfabeto maiúsculo ABCDEFGHIJKLMNOPQRSTUVWXYZ será substituído por DEFGHIJKLMNOPQRSTUVWXYZABC.
intervalo de dados
Para todos os dados, é garantido que 1 ≤ n ≤ 100 1≤ n≤1001nãoãoãoãoãoãoãoãoãoãoão100

Procedimento de referência

#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

Pergunta 27

Nome da pergunta: Encontre múltiplos
limite de tempo:1,0 s
limite de memória:512,0 MB
Descrição da pergunta
Xiao Yang tem um contendo nãonãoãoãoãoãoãoãoãoãoãoão sequência de inteiros positivos A = [ a 1 , a 2 , . . . , um ] A=[a_1,a_2,...,a_n]A=[a1,a2,...,anãoãoãoãoãoãoãoãoãoãoão], ele quer saber se há eu ( 1 ≤ eu ≤ n ) eu(1≤i≤n)eu(1eunãoãoãoãoãoãoãoãoãoãoão) fazer ai a_iaeu é uma sequência AAA Múltiplos de todos os números em .
Formato de entrada
A primeira linha contém um número inteiro positivo ttpara, representa o número de grupos de casos de teste.
Proximo é ttpara Conjunto de casos de teste.
Para cada conjunto de casos de teste, existem duas linhas.Entre eles, a primeira linha contém um número inteiro positivo nãonãoãoãoãoãoãoãoãoãoãoão;A segunda linha contém nãonãoãoãoãoãoãoãoãoãoãoão um número inteiro positivo, representando a sequência AAA
Formato de saída
Para cada conjunto de casos de teste, se houver eu ( 1 ≤ eu ≤ n ) eu(1≤i≤n)eu(1eunãoãoãoãoãoãoãoãoãoãoão) Satisfatório para todos k ( 1 ≤ k ≤ n ) aik(1≤k≤n)a_io(1onãoãoãoãoãoãoãoãoãoãoão)aeu sim ah ahao Um múltiplo de, produz Sim, caso contrário, produz Não.
Amostra 1

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

Exemplo de explicação
Para o primeiro conjunto de dados, por um 3 = 4 a_3=4a3=4,satisfazer um 3 a_3a3 sim um 1 a_1a1 e um 2 a_2a2 múltiplos.
intervalo de dados
Para todos os dados, é garantido que 1 ≤ t ≤ 10 , 1 ≤ n ≤ 1 0 5 , 1 ≤ ai ≤ 1 0 9 1≤t≤10,1≤n≤10^5,1≤a_i≤10^91para10,1nãoãoãoãoãoãoãoãoãoãoão105,1aeu109
Procedimento de referência

#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