GESP认证C++编程真题解析 | 202312 四级

附上汇总帖:GESP认证C++编程真题解析 | 汇总


单选题

第1题

下面有关函数参数的说法,正确的是( )。

A. 函数参数传递时,主函数当中采用值传递方式将参数传递给子函数时,若子函数将参数值改变,主函数当中的参数值不变。

B. 函数参数传递时,主函数当中采用值传递方式将参数传递给子函数时,若子函数将参数值改变,主函数当中的参数值将随子函数一样改变而改变。

C. 函数参数传递时,主函数如果将参数的地址传递给子函数,若子函数将参数值改变,主函数当中的参数值将不改变。

D. 函数参数传递可以不满足子函数的参数个数要求。

【答案】:A

【解析】

形参的值改变,不会影响实参的值。如果传引用(地址),主函数中的参数值将改变。函数参数传递需要保持参数个数一致。

第2题

下面C++代码执行后,输出的是( )。

int arr[10]={1};
string strArr = "chen a dai";
cout << strArr[arr[1]]<<endl;

A. chen

B. c

C. chen a dai

D. dai

【答案】:B

【解析】

arr[1]为0,输出strArr[0]则为c

第3题

下面C++代码最后执行后输出是( )。

int fun1(int *n)
{
	return *n**n;
}
int main()
{
	int arr[10]={2};
	arr[1]=fun1(arr);
	cout << arr[1] << endl;
}

A. 1

B. 2

C. 3

D. 4

【答案】:D

【解析】

arr[0]=2,将arr作为参数传到函数中,n就是arr首元素地址,*n就是arr首元素,*n * *n = 2 * 2 = 4​

第4题

下面C++代码执行后的结果是( )。

int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
for (int i=0; i<3; i++)
{
	for (int j=2; j>=0; j--)
	{
		cout << arr[i][j] << " ";
	}
	cout << endl;
}

A.

1 2 3
4 5 6
7 8 9

B. 1 2 3 4 5 6 7 8 9

C.

3 2 1
6 5 4
9 8 7

D. 9 8 7 6 5 4 3 2 1

【答案】:C

【解析】

j从2到0,说明是逆序输出

第5题

下面C++代码执行后输出是( )。

int arr[3] = {1,2,3};
int *p = NULL;
p = arr;
p++;
cout << *p << endl;

A. 1,2,3

B. 1

C. 2

D. 3

【答案】:C

【解析】

arr就是arr数组的首地址,p++后指向数组第2个地址,即2

第6题

如果变量x的地址是0x6ffe14,下面C++代码执行以后输出的是( )。

int *p = NULL;
int x = 0;
p = &x;
p++;
cout << p << endl;

A. 0x6ffe11

B. 0x6ffe14

C. 0x6ffe18

D. 0x6ffe15

【答案】:C

【解析】

p取地址后加1,int是4个字节,所以p++后,地址加4

第7题

在C++中,执行下面代码后,输出的是( )。

int point(int *p)
{
	return *p**p;
}
int main()
{
	int a = 20;
	int *p = &a;
	*p = point(p);
	cout << *p << endl;
}

A. 400

B. 200

C. 20

D. 100

【答案】:A

【解析】

point(p)的返回结果是400,*p也修改为400

第8题

下列C++语句执行以后结果是true的是( )。

A. 3&&false

B. 5&&2

C. 101&&000

D. 4&true

【答案】:

【解析】

非0即为真,B正确。AC明显错误,D选项是位运算

第9题

在如下的C++代码中实现了对字符串中出现的26个字母的个数统计,横线处应填入是( )。

string str="HELLO CHEN A DAI";
int strlen = str.length();
char alpha[26]={65};
int cnt[26]={0};
for (int i=1; i<26; i++)
{
	____;
}
for (int i=0; i<26; i++)
{
	cout << alpha[i] << " ";
}
cout << endl;
for (int i=0; i<26; i++)
{
	for (int j=0; j<strlen; j++)
	{
		if (alpha[i]==str[j])
		{
			cnt[i]++;
		}
	}
}
for (int i=0; i<26; i++)
{
	cout << cnt[i] << " ";
}

A. alpha[i]=alpha[i-1]+1;

B. alpha[i]=alpha[i]+1;

C. alpha[i+1]=alpha[i]+1;

D. alpha[i-1]=alpha[i]+1;

【答案】:A

【解析】

第7行应该是算出每个字母对应的数字。alpha[0]=65,所以后面应该是alpha[i-1]+1

第10题

下面C++代码执行后生成的文件其字节数为( )。

ofstream fout;
fout.open("1.txt");
for (int i=1; i<=10; i++)
{
	if (i%5==0)
	{
		int x = 6;
		fout << x;
	}
	else
	{
		char ch = 'A';
		fout << ch;
	}
}

A. 10

B. 16

C. 40

D. 24

【答案】:B

【解析】

输出文件的内容是AAAA6AAAA6,8个字符,2个数字,字节数 = 8 * 1 + 2 * 4 = 16

第11题

下列C++代码输入 1,2,3,4 ,执行后,将输出的是( )。

string str = "";
cin >> str;
int strlen = str.length();
for (int i=0; i<strlen; i++)
{
	if (str[i]<='9' && str[i]>='0')
	{
		cout << str[i];
	}
	else
	{
		cout << "#";
	}
}

A. 1_#4#_

B. 1_#3#_

C. 1_#2#_3_#4#_

D. 1_#2#_3#4

【答案】:

【解析】

第12题

以下C++代码用于实现每个整数对应的因数,如输入 12 ,则输出 1 2 3 4 6 12 ;如输入 18 ,则输出 1 2 3 6 9 18。横线处应填入代码是( )。

int n;
cin >> n;
for (int i=1; i<=n; i++)
{
	____
	{
		cout << i << " ";
	}
}

A. if(n%i==0)

B. if(n/i==0)

C. if(n%i!=0)

D. if(n/i!=0)

第13题

某公司新出了一款无人驾驶的小汽车,通过声控智能驾驶系统,乘客只要告诉汽车目的地,车子就能自动 选择一条优化路线,告诉乘客后驶达那里。请问下面哪项不是驾驶系统完成选路所必须的。( )

A. 麦克风

B. 扬声器

C. 油量表

D. 传感器

第14题

现代计算机是指电子计算机,它所基于的是( )体系结构。

A. 艾伦·图灵

B. 冯·诺依曼

C. 阿塔纳索夫

D. 埃克特-莫克利

第15题

输入一个正整数N(N>=7),想找出它所有相邻的因数对,比如,输入12,因数对有(1,2)、(2,3)、(3.4)。下面哪段代码找不到所有的因数对?( )

A. for(i=1;i<N;i++) if (!(N%i) && !(N%(i+1))) printf("(%d,%d)\n", i, i+1);

B. for(i=2;i<N;i++) if (!(N%i) && !(N%(i+1))) printf("(%d,%d)\n", i, i+1);

C. for(i=2;i<N/2;i++) if (!(N%(i-1)) && !(N%i)) printf("(%d,%d)\n", i-1, i);

D. for(i=1;i<N/2;i++) if (!(N%i) && !(N%(i+1))) printf("(%d,%d)\n", i, i+1);

判断题

第1题

C++的内置函数 sort() 支持数组的局部排序。例如 int a={10,9,8,7,6,5,4,3,2,1} ,可以用 sort(a,a+5) ,排序成 {6,7,8,9,10,5,4,3,2,1}。( )

A. 正确

B. 错误

第2题

用递归法求 n 的阶乘,时间复杂度是 O(n)。

A. 正确

B. 错误

第3题

[(1,2) * 2] * 3 在C++中是合法的表达式。( )

A. 正确

B. 错误

第4题

在下面的C++代码中,将对1.txt文件写入 hello。( )

ifstream filein;
ofstream fileout;
filein.open("1.txt");
fileout<<"hello";

A. 正确

B. 错误

第5题

文本文件 1.txt 第1行由 01234 共5个字符组成其间没有空格,当用C++代码正常打开文件成功并执行如下 代码以后,第1行长度为5( )

ifstream filein;
int buff;
filein.open("1.txt");
filein>>buff;
cout<<buff<<endl;

A. 正确

B. 错误

第6题

执行C++代码 cout<<(5||2); 后将输出 1。( )

A. 正确

B. 错误

第7题

在C++中,两个字符串相加的运算符为+相当于字符串的合并运算。下面C++代码执行后,将输出 chenadai。( )

string a="chen";
string b="a";
string c="dai";
string name=a+b+c;
cout<<name<<endl;

A. 正确

B. 错误

第8题

C++内置函数 sort() 可以对整数、浮点数、字符数组进行从大到小,从小到大,局部排序。( )

A. 正确

B. 错误

第9题

小杨最近在准备考GESP,他用的Dev C++来练习和运行程序,所以Dev C++也是一个小型操作系统。( )

A. 正确

B. 错误

第10题

任何一个while循环都可以转化为等价的for循环( )。

A. 正确

B. 错误

编程题

题解:洛谷 B3927 [GESP202312 四级] 小杨的字典

题解:洛谷 B3928 [GESP202312 四级] 田忌赛马

posted @ 2026-07-17 16:13  团爸讲算法  阅读(10)  评论(0)    收藏  举报