2025年6月GESP编程能力认证C++等级考试四级真题(含答案和解析).docxVIP

2025年6月GESP编程能力认证C++等级考试四级真题(含答案和解析).docx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

2025年6月GESP编程能力认证C++等级考试四级真题(含答案和解析)

一、单选题(每题2分,共30分)。

1.在C++中,声明一个指向整型变量的指针的正确语法是()。

A.int*ptr;

B.*intptr;

C.intptr*;

D.ptrint;

答案:A。

解析:在C++中,指针声明的基本语法为——数据类型*指针变量名。其中int*ptr;表示声明一个名为ptr的指针,指向int类型的变量。

选项B错误,因为*必须紧跟数据类型(如int*),而非放在类型前。

选项C错误,这种写法会被解析为声明一个整型变量ptr,而*作为表达式的一部分,会导致语法错误。

选项D错误,这是变量声明的错误顺序(正确应为数据类型变量名;)。

因此,正确答案为A。

2.下面的函数接收一个行列的二维数组并输出其中元素,则横线上不能填写()。

voidprintArray(________){

for(inti=0;i3;++i)

for(intj=0;j4;++j)

std::coutarr[i][j];

}

A.intarr[3][4]

B.intarr[][4]

C.int(*arr)[4]

D.int**arr

答案:D。

解析:选项A,intarr[3][4]直接定义了一个3行4列的二维数组作为参数,是合法的。

选项B,intarr[][4]省略了第一维的大小,但是第二维大小明确为4,编译器可以根据传入的数组自动确定第一维大小,也是合法的。

选项C,int(*arr)[4]是一个指向包含4个整数的数组的指针,也可以用来表示二维数组,是合法的。

选项D,int**arr是一个指向指针的指针,它不能直接表示一个二维数组,因为二维数组在内存中是连续存储的,而int**arr需要先分配一个指针数组,再为每个指针分配内存,与本题中要接收的二维数组形式不匹配,所以不能填写。

本题的正确答案为D。

3.在C++中,intarr[3][4]和int*arr=newint[12]均可模拟一个行列的二维数组。关于这两种方式,下面说法错误的是()。

A.intarr[3][4]在栈上分配空间,适合数组较小的情况。

B.int*arr=newint[12]在堆上分配空间,数组较大时也适用。

C.这两种方式申请的内存空间都是连续的。

D.这两种方式申请的内存都能自动释放。

答案:D。

解析:选项A,intarr[3][4]是在栈上分配空间,栈空间的大小是有限的,所以适合数组较小的情况,该说法正确。

选项B,int*arr=newint[12]使用new运算符在堆上分配空间,堆空间相对较大,数组较大时也适用,该说法正确。

选项C,intarr[3][4]和int*arr=newint[12]申请的内存空间都是连续的,该说法正确。

选项D,intarr[3][4]在栈上分配的内存会在作用域结束时自动释放,而int*arr=newint[12]在堆上分配的内存需要使用delete[]arr手动释放,不能自动释放,该说法错误。

本题的正确答案为D。

4.关于以下C++代码,说法正确的是()。

intmain(){

greet();

return0;

}

voidgreet(){

coutHello!endl;

}

A.正确编译并输出Hello!

B.编译错误:找不到函数greet()。

C.编译警告但可以运行

D.链接错误

答案:B。

解析:在C++中,函数调用之前需要先声明或者定义。在这段代码中,main函数调用greet函数时,greet函数还没有被声明或者定义,编译器无法找到greet函数的定义,所以会产生编译错误。因此,正确答案为B。

5.在C++中,如果希望通过函数修改传入的结构体对象的内容,应该使用哪种参数传递方式?()。

A.值传递或引用传递

B.值传递或指针传递

C.引用传递或指针传递

D.仅指针传递

答案:C。

解析:值传递是将实参的值复制一份传递给形参,在函数内部对形参的修改不会影响到实参,所以值传递不能通过函数修改传入的结构体对象的内容。

引用传递是给实参起了一个别名,在函数内部对引用的修改就是对实参的修改。

指针传递是将实参的地址传递给形参,通过指针可以访问和修改实参的内容。

因此,如果希望通过函数修改传入的结构体对象的内容,应该使用引用传递或指针传递。

正确答案为C。

6.以下哪个选项正确描述了C++中形参和实参的区别?(

您可能关注的文档

文档评论(0)

资格考试 + 关注
实名认证
文档贡献者

提供各类资格考试试卷/真题

1亿VIP精品文档

相关文档