2024年12月 GESP C++ 3级
2024年12月 GESP C++ 3级认证考试真题(含编程操作题部分)
// questions
题目预览
下列二进制表示的十进制数值分别是( )
[10000011]原=( )
[10000011]补=( )
−125-125−125,−3-3−3
−3-3−3,−125-125−125
−3-3−3,−3-3−3
−125-125−125,−125-125−125
关于计算机中的编码,下列说法中错误的是()
对于无符号数,原码就是真值
正数的反码是其本身
负数的反码和补码是不一样的
负数的反码,在其原码的基础上,各个位取反
16 进制数 B2025 转换成 8 进制数是( )
2620045
2004526
729125
2420045
625.625625.625625.625 变成二进制是( )。
1001110001.1011001110001.1011001110001.101
101.101101.101101.101
101.1001110001101.1001110001101.1001110001
1001110001.11011001110001.11011001110001.1101
下面逻辑运算中,正确的是( )
5 && 3 == 0
5 | 3 == 8
5 || 3 == 11
5 & 3 == 0001
补码 1111 1101 进行运算 1111 1101 >> 1 以后得到的结果是( )
1111 1100
−2-2−2
1111 1101
1111 1010
下列代码输出的是
string s="1234@@chenadai";
string str="12345";
s.replace(1,5,str);
cout<<s<<endl;
12345
2345@
112345chenadai
12345chenadai
a | 10(aaa 与 101010 都是十进制,且二进制表示最高位为 111)运算的结果是( )。
使 aaa 的二进制表示从右往左的第二位为 111
使 aaa 的二进制表示从右往左的第一位为 000
使 aaa 的二进制表示从右往左第二位为 000
使 aaa 的二进制表示最高位为 000
下列程序输出的是( )
string ch="hello";
if(ch[5]==NULL)
{
cout<<"right"<<endl;
}
else if (ch[5]=='\0')
{
cout<<"wrong"<<endl;
}
else
{
cout<<"hello"<<endl;
}
right
wrong
hello
不能正确执行
下列程序中,假设一个字符占用的内存空间是 111 ,下列程序中,ch 占用的内存空间是( )
char ch[] = "hello world";
size_t ret = strlen(ch);
cout << ret << endl;
111111
101010
131313
121212
下列程序最后输出的是()
int a=65;
cout<<tolower(a)<<endl;
656565
A
a
979797
想要计算从数字 nnn 到数字 mmm 之间(包含 nnn 和 mmm)有多少个数字 ddd 出现,下列程序哪个能够实现( )。
int n,m,res,d;
cin >> n >> m>>d;
for(int i = n+1; i <= m; i++){
int temp = i;
while(temp){
if(temp % 10 == d) res++;
temp /= 10;
}
}
cout << res << endl;
return 0;
int n,m,res,d;
cin >> n >> m>>d;
for(int i = n; i <= m; i++){
int temp = i;
while(temp){
if(temp % 10 = d) res++;
temp /= 10;
}
}
cout << res << endl;
return 0;
int n,m,res=0,d;
cin >> n >> m>>d;
for(int i = n; i <= m; i++){
int temp = i;
while(temp){
if(temp % 10 == d) res++;
temp /= 10;
}
}
cout << res << endl;
return 0;
int n,m,res=0,d;
cin >> n >> m>>d;
for(int i = n; i <= m; i++){
while(temp){
if(temp % 10 == d) res++;
temp /= 10;
}
}
cout << res << endl;
return 0;
兔子五元一只,鸡三元一只,小鸭子一元三只,现在你有一百元要买一百只,兔子、鸡、鸭子,问兔子、鸡、鸭子各买多少只,每种必须至少一只,下列哪个程序能实现。( )。
for(int i = 0; i <= 100; i++){
for(int j = 0; j <= 100; j++){
for(int k = 0; k <= 100; k++){
if(i + j + k == 100 && 25 * i + 10 * j + k == 300)
cout << i << " " << j << " " << k << endl;
}
}
}
for(int i = 0; i <= 100; i++){
for(int j = 0; j <= 100; j++){
for(int k = 0; k <= 100; k++){
if(i + j + k == 100 && 20 * i + 10 * j + k == 300)
cout << i << " " << j << " " << k << endl;
}
}
}
for(int i = 0; i <= 20; i++){
for(int j = 0; j <= 34; j++){
for(int k = 0; k <= 20; k++){
if(i + j + k == 100 && 15 * i + 9 * j + k == 300)
cout << i << " " << j << " " << k << endl;
}
}
}
for(int i = 0; i <= 100; i++){
for(int j = 0; j <= 100; j++){
for(int k = 0; k <= 100; k++){
if(i + j + k == 100 && 15 * i + 9 * j + k == 300)
cout << i << " " << j << " " << k << endl;
}
}
}
求小于等于 NNN 的素数的方法中,有一种方法是将所有从 222 到它本身减 111 的数都除一遍,如果不能整除,就是素数。下列哪个程序,体现了这种方法()
if(N >= 3){
cout<<2<<endl;
for(int i = 2;i <= N;i ++){
for(int j = 2;j < i;j ++){
if(i % j != 0){
flag = 1;
}
}
if(flag == 0){
cout<<i<<endl;
}
flag = 0;
}
}
if(N >= 2){
for(int i = 3;i <= N;i ++){
for(int j = 2;j < i;j ++){
if(i % j == 0){
flag = 1;
}
}
if(flag == 0){
cout<<i<<endl;
}
flag = 0;
}
}
if(N >= 2){
cout<<2<<endl;
for(int i = 3;i <= N;i ++){
for(int j = 2;j < i;j ++){
if(i % j == 0){
flag = 1;
}
}
if(flag == 0){
cout<<i<<endl;
}
flag = 0;
}
}
if(N >= 2){
cout<<2<<endl;
for(int i = 3;i <= N;i ++){
for(int j = 2;j < i;j ++){
if(i % j == 0){
flag = 1;
}
}
if(flag == 0){
cout<<i<<endl;
}
}
}
工人工作一天,会得到一个金环作为工资报酬,某个工作需要 151515 天完成,一条 151515 个环的金环项链,为了严格执行每天工作结束时,完成对工人工资的结算,最少需要将金环项链剪裁成几段,每段几个金环( )
444 段,分别是 111、222、444、888
151515 段,每段 111 个
666 段,分别是 333、333、333、333、222、111
999 段,分别是 222、222、222、222、222、222、111、111、111
为了简化计算机基本运算电路,使加减法都只需要通过加法电路实现,也就是让减去一个正数或加上一个负数这样的运算可以用加上一个正数来代替。于是改变负数存储的形式,存储成一种可以直接当成正数来相加的形式,这种形式就是补码。
使用原码进行的计算,2+(−1)2 + (-1)2+(−1) 的结果是 −3-3−3
反码计算加减法:加法与减法结果都是正确的,只是解决不了 −0-0−0 的问题
阅读程序代码(共 19-21 题共用)
进制数 63,在转换成二进制的计算过程中,产生了如下的式⼦:
63/2=31 余 1
31/2=15 余 1
15/2=7 余 1
7/2=3 余 1
3/2=1 余 1
1/2=0 余 1
按照从前往后的顺序,获得 636363 的二进制值是 111111111111111111
下列程序输出的是 AAA
char x=65;
x=x&00001111;
cout<<x<<endl;
下列可执行程序段中,最后 pospospos 的值是 444
string str="chenADai";
int pos = str.find('D');
--pos&11;
阅读程序代码(共 22-22 题共用)
string ch="chen";
cout<<ch[4]<<endl;
该段程序将不能正确执行
阅读程序代码(共 23-27 题共用)
char a='A';
a=a+32;
cout<<(int)a<<endl;
将输出 979797
自然界中,最小的素数是 222
CCF(十六进制) = 12363(七进制)
试题名称:数字替换
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
小杨有一个包含 nnn 个数字的序列 AAA,即 A=[a1,a2,…,an]A=[a_1,a_2,\ldots,a_n]A=[a1,a2,…,an],他想将其中大于 kkk 的数字都替换为序列的最大值,将其中小于 kkk 的数字都替换为序列的最小值,请你帮他计算出替换后的序列。
输入格式
第一行包含两个正整数 n,kn,kn,k,含义如题面所示。
第二行包含 nnn 个数字,代表序列 AAA。
输出格式
输出 nnn 个整数,代表替换后的结果。
样例输入 #1
5 0
-2 -1 0 1 2
样例输出 #1
-2 -2 0 2 2
说明/提示
对于全部数据,保证有 1≤n≤1051\le n\le 10^51≤n≤105,∣k∣,∣ai∣≤105|k|,|a_i|\le 10^5∣k∣,∣ai∣≤105。
试题名称:打印数字
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
小杨为数字 0,1,20,1,20,1,2 和 333 设计了一款表示形式,每个数字占用了 5×55\times 55×5 的网格。数字 0,1,20,1,20,1,2 和 333 的表示形式如下:
..... ****. ..... .....
.***. ****. ****. ****.
.***. ****. ..... .....
.***. ****. .**** ****.
..... ****. ..... .....
小杨想请你将给定的数字 nnn 转换为对应的表示形式。
输入格式
第一行包含一个非负整数代表 nnn。
输出格式
输出对应的表示形式。
样例输入 #1
12230
样例输出 #1
****.....................
****.****.****.****..***.
****.................***.
****..****.********..***.
****.....................
说明/提示
对于全部数据,保证有 0≤n≤1060\le n\le 10^60≤n≤106,且 nnn 仅由数字 0,1,2,30,1,2,30,1,2,3 组成。