Teknologian jakaminen

Kesäkuu 2024 CCF-GESP ohjelmointitaitojen tason sertifiointi C-ohjelmointitason 3 todellisten koekysymysten analyysi

2024-07-12

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

Tämä artikkeli sisältyy sarakkeeseen "C++-tason sertifioinnin CCF-GESP todellisten kysymysten analyysi》, yleinen sarakkeiden luettelo:Klikkaa tästä . Tilauksen jälkeen voit lukea kaikki sarakkeen artikkelit.

1. Monivalintakysymykset (kukin 2 pistettä, yhteensä 30 pistettä)

Kysymys 1

Xiao Yangin vanhemmat veivät hänet koulutuslaitokseen rekisteröimään hänet CCF:n järjestämään GESP-sertifiointikokeen tasolle 1. Sitten on () sertifiointikieliä, jotka hän voi valita.
A. 1
B. 2
C. 3
D. 4

Vastaus: C

Kysymys 2

Alla olevassa vuokaaviossa, kun vuosi on 2024, voidaan määrittää, että vuosi on karkausvuosi, ja helmikuussa tulostetaan 29 päivää.
Lisää kuvan kuvaus tähän

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

Vastaus: B

Kysymys 3

Yleensä oletuksena kokonaislukumuuttujat (int) 64-bittisissä tietokonejärjestelmissä ovat edelleen 32-bittisiä, joten kokonaislukujen edustama tietoalue on ().
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
D. − 2 63 -2^{63} 263 ~ ( 2 63 ) − 1 (2^{63})-1 (263)1

Vastaus: C

Kysymys 4

Seuraava koodi muuntaa desimaalit oktaaliksi, minkä jälkeen ( ) tulee täyttää vaakasuoralle riville.

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

Vastaus: C

Kysymys 5

Binäärilukua 101.11 vastaava desimaaliluku on ( ).
A. 6.5
B. 5.5
C. 5,75
D. 5.25

Vastaus: C

Kysymys 6

Seuraavan vuokaavion tulos on ( ).
Lisää kuvan kuvaus tähän

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

Vastaus: B

Kysymys 7

Seuraavan koodin tulos on ( ).

#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

Vastaus: C

Kysymys 8

Seuraavan koodin tulos on ( ).

#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

Vastaus: C

Kysymys 9

Jos merkkijono on määritelty muodossa char str[] = "GESP";, merkkijonon str pituus on ().
A. 0
B. 4
C. 5
D. 6

Vastaus: C

Kysymys 10

Täytä vaakasuorat rivit ( ) seuraavaan koodiin saadaksesi tulos "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; array[i]
C. max = array[i]
D. Mikään yllä olevista ei pidä paikkaansa

Vastaus: B

Kysymys 11

Xiao Yang tekee matemaattisen kysymyksen. Kysymys edellyttää 7:llä jaollisen luvun löytämistä, eli [7, 14, 21, 28, 35] Mikä koodi tulee täyttää? ( )

#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[luku++] = i;
B. arr[i] = count++;
C. arr[i] = määrä;
D. arr[count] = count++;

Vastaus: A

Kysymys 12

Tiedetään, että merkin '0' ASCII-koodattu desimaaliesitys on 48. Seuraavan C++-koodin suorittamisen jälkeen tulos on ().

#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

Vastaus: C

Kysymys 13

Alakoulupoikien koripallojoukkue rekrytoi uusia jäseniä ja joukkueeseen tulevien jäsenten tulee olla yli 135 cm pitkiä (pois lukien 135 cm). Ilmoittautuneita on tällä kertaa 10, ja heidän pituutensa ovat 125, 127, 136, 134, 137, 138, 126, 135, 140 ja 145. Täytä seuraava koodi saadaksesi selville, kuinka monta uutta jäsentä tiimi voi rekrytoida tällä kertaa? ( )

#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. count = arr[i]&gt;135? 1:0;
B. count += arr[i]&gt;135? 1:0;
C. count++;
D. Mikään yllä olevista ei pidä paikkaansa

Vastaus: B

Kysymys 14

Mikä on C++-lause, joka voi tulostaa oikein. He suunnittelevat juhlia ystävänsä syntymäpäiväksi.? ( )
A. cout &lt;&lt; 'He suunnittelevat juhlia ystävänsä syntymäpäiväksi." &lt;&lt; endl;
B. cout &lt;&lt; "He suunnittelevat juhlia ystävänsä syntymäpäivänä.'&lt;&lt; endl;
C. cout &lt;&lt; 'He suunnittelevat juhlia ystävänsä syntymäpäiväksi.'&lt;&lt; endl;
D. cout &lt;&lt; "He suunnittelevat juhlia ystävänsä syntymäpäivänä." &lt;&lt; endl;

Vastaus: D

Kysymys 15

Jos tulosteen tulos seuraavan C++-koodin suorittamisen jälkeen on "gesp ccf org cn", mikä koodi tulee täyttää vaakasuoralle riville? ( )

#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(löytyy + erotin.length(), str.length() - 1);
B. str = str.substr(found, str.length() );
C. str = str.substr(löytyi, str.length() -1);
D. Mikään yllä olevista ei pidä paikkaansa

Vastaus: A

2. Oikeita tai vääriä kysymyksiä (kukin 2 pistettä, yhteensä 20 pistettä)

Kysymys 16

GESP-testi on varmentajan ohjelmointikyvyn tasotodistus. Saman tason kyky on periaatteessa ohjelmointikielestä riippumaton.

Vastaus: oikein

Kysymys 17

Kokonaisluvun -6 16-bittinen komplementti voidaan esittää heksadesimaalimuodossa FFFA:na.

Vastaus: oikein

Kysymys 18

Komplementin etuna on, että se voi muuntaa vähennysoperaatiot yhteenlaskuoperaatioiksi, mikä yksinkertaistaa tietokonelaitteiston suunnittelua.

Vastaus: oikein

Kysymys 19

Merkkivakiota '0' käytetään usein osoittamaan merkkijonon loppua, joka on sama kuin merkkivakio '0'.

Vastaus: Väärin

Kysymys 20

Kaikki taulukon elementit voidaan tallentaa epäjatkuvasti muistiin.

Vastaus: Väärin

Kysymys 21

C++:ssa voit määrittää arvoja kunkin perustaulukon taulukoille ja elementeille.

Vastaus: Väärin

Kysymys 22

Jos se on int-tyyppinen muuttuja ja lausekkeen arvo ((a | 3) == 3) on tosi, se tarkoittaa, että se on välillä 0 ja 3 (mahdollisesti 0, mahdollisesti 3).

Vastaus: oikein

Kysymys 23

Seuraavan C++-koodin suorittamisen jälkeen tulos on 8.

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

Vastaus: Väärin

Kysymys 24

Seuraavan C++-koodin suorittamisen jälkeen tulos ei voi olla 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

Vastaus: oikein

Kysymys 25

Leikkaa kokonaisluku 3025 kahdeksi luvuksi, 30 ja 25. Tässä vaiheessa neliötä näiden kahden luvun summa, ja laskettu tulos on yhtä suuri kuin alkuperäinen luku. (30 + 25) × (30+ 25) = 55 × 55 = 3025. Tätä numeroa kutsutaan salamaniskunumeroksi. Voit käyttää luettelointimenetelmiä löytääksesi kaikki nelinumeroiset luvut, jotka täyttävät tällaiset ehdot. ( )

Vastaus: oikein

3. Ohjelmointikysymykset (25 pistettä kukin, yhteensä 50 pistettä)

Kysymys 26

Kysymyksen nimi: vaihto
määräaika: 1,0 s
muistiraja: 512,0 MB
Kysymyksen kuvaus
Xiao Yang oppi salaustekniikan muutoksen, jossa kaikki isot kirjaimet siirretään taaksepäin kiinteällä numerolla. Offset-prosessi käsittelee aakkosia päistä päähän yhdistettynä renkaana. Esimerkiksi kun siirtymä on 3, iso kirjain A korvataan D:llä ja iso kirjain Z korvataan C:llä. Yleisesti ottaen isot aakkoset ABCDEFGHIJKLMNOPQRSTUVWXYZ. korvataan DEFGHIJKLMNOPQRSTUVWXYZABC:llä.
Huomaa: Kun siirtymä on 26:n kerrannainen, jokainen iso kirjain palaa alkuperäiseen paikkaansa täsmälleen siirtymän jälkeen, eli isot aakkoset ABCDEFGHIJKLMNOPQRSTUVWXYZ pysyvät muuttumattomina siirtymän jälkeen.
Syöttömuoto
Ensimmäinen rivi sisältää positiivisen kokonaisluvun nnn
Tulostusmuoto
Lähtö on offsetissa nnn Tässä tapauksessa isot kirjaimet ABCDEFGHIJKLMNOPQRSTUVWXYZ on seurausta vaihdon vaihdosta.
Esimerkki 1

3
  • 1
DEFGHIJKLMNOPQRSTUVWXYZABC
  • 1

Esimerkki selitys
Kun offset on 3, iso kirjain A korvataan D:llä ja iso kirjain Z korvataan C:llä. Kaiken kaikkiaan isot aakkoset ABCDEFGHIJKLMNOPQRSTUVWXYZ korvataan kirjaimella DEFGHIJKLMNOPQRSTUVWXYZABC.
dataväli
Kaikille tiedoille se on taattu 1 ≤ n ≤ 100 1 ≤ n ≤ 1001n100

Viitemenettely

#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

Kysymys 27

Kysymyksen nimi: Etsi monikerrat
määräaika: 1,0 s
muistiraja: 512,0 MB
Kysymyksen kuvaus
Xiao Yang sisältää nnn positiivisten kokonaislukujen sarja A = [ a 1 , a 2 , . . . , an ] A=[a_1,a_2,...,a_n]A=[a1,a2,...,an], hän haluaa tietää, onko olemassa i ( 1 ≤ i ≤ n ) i(1 ≤ i ≤ n)i(1in) tehdä ai a_iai on sekvenssi AAA Kaikkien lukujen kerrannaiset .
Syöttömuoto
Ensimmäinen rivi sisältää positiivisen kokonaisluvun ttt, edustaa testitapausryhmien määrää.
Seuraava on ttt Joukko testitapauksia.
Jokaiselle testitapausjoukolle on kaksi riviä.Niiden joukossa ensimmäinen rivi sisältää positiivisen kokonaisluvun nnn;Toisella rivillä on nnn positiivinen kokonaisluku, joka edustaa sarjaa AAA
Tulostusmuoto
Jokaiselle testitapausjoukolle, jos sellainen on i ( 1 ≤ i ≤ n ) i(1 ≤ i ≤ n)i(1in) Tyytyväinen kaikille k ( 1 ≤ k ≤ n ) aik(1 ≤ k ≤ n) a_ik(1kn)ai Joo ak a_kak :n kerrannainen tulos Kyllä, muuten tulos No.
Esimerkki 1

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

Esimerkki selitys
Ensimmäiselle tietojoukolle, varten a 3 = 4 a_3 = 4a3=4, tyydyttää a 3 a_3a3 Joo a 1 a_1a1 ja a 2 a_2a2 kerrannaisina.
dataväli
Kaikille tiedoille se on taattu 1 ≤ t ≤ 10, 1 ≤ n ≤ 1 0 5, 1 ≤ ai ≤ 1 0 9 1≤t ≤10,1≤n≤10^5,1≤a_i≤10^91t10,1n105,1ai109
Viitemenettely

#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