计算机等级二级考试C语言试题及答案.docxVIP

计算机等级二级考试C语言试题及答案.docx

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

计算机等级二级考试C语言试题及答案

一、选择题(每题2分,共40分)

1.以下关于C语言变量的描述中,正确的是()

A.局部变量在未初始化时,其值为0

B.全局变量的作用域是从定义位置到程序结束

C.静态局部变量的存储空间在程序运行期间始终存在

D.寄存器变量可以声明为long类型

答案:C

解析:局部变量未初始化时,值为随机垃圾值(A错误);全局变量的作用域是从定义位置到文件末尾,若跨文件使用需用extern声明(B错误);静态局部变量(static修饰)存储在静态存储区,程序运行期间不释放(C正确);寄存器变量(register修饰)通常用于小数据类型(如int、char),long类型可能因长度超过寄存器容量而被编译器忽略(D错误)。

2.若有定义:inta[]={1,2,3,4,5},p=a;则以下表达式中结果为3的是()

A.p+=2;p

B.p+=1;(p+1)

C.p+=3;--p

D.p+=2;++p

答案:B

解析:初始p指向a[0](值1)。选项A:p+=2后指向a[2](值3),p为3,但需注意题目要求结果为3的选项,需逐一验证;选项B:p+=1后指向a[1](值2),p+1指向a[2](值3),(p+1)=3(正确);选项C:p+=3指向a[3](值4),--p指向a[2](值3),--p=3,但需看是否符合;选项D:p+=2指向a[2](值3),++p是将a[2]的值自增为4,结果为4(错误)。但B选项更直接,故选B。

3.以下函数调用中,会改变实参值的是()

A.voidfunc(intx){x++;}

B.voidfunc(intx){(x)++;}

C.voidfunc(intx[]){x[0]++;}

D.voidfunc(intx){x++;}(注:C语言不支持引用传递)

答案:B、C

解析:C语言中参数传递为值传递,但若传递指针或数组(本质是指针),可通过指针修改实参指向的内容。选项A传递整型值,x是副本,不影响实参(错误);选项B传递指针,x修改实参指向的变量(正确);选项C数组名作为参数退化为指针,x[0]++等价于修改原数组第一个元素(正确);选项D为C++引用传递,C语言不支持(错误)。

4.若有结构体定义:

structTest{

chara;

intb;

shortc;

};

则sizeof(structTest)的值是()(假设系统为32位,对齐模数为4)

A.7

B.8

C.12

D.16

答案:C

解析:结构体对齐规则:成员起始地址为自身大小的整数倍,整体大小为最大成员大小的整数倍。chara占1字节,起始地址0;intb占4字节,需从地址4开始(地址0+1=1,不足4的倍数,填充3字节到地址4);shortc占2字节,起始地址8(地址4+4=8),占8-9;整体最大成员是int(4字节),总大小需为4的倍数,当前9字节,填充3字节到12字节(地址9-11)。故总大小12字节(C正确)。

5.以下关于文件操作的描述中,错误的是()

A.fopen(test.txt,r+)以读写方式打开已存在的文本文件

B.fwrite函数的第三个参数是要写入的元素个数

C.用wb模式打开文件时,写入的数据会以二进制形式存储

D.fseek(fp,0,SEEK_END)可将文件位置指针移动到文件开头

答案:D

解析:fseek的第三个参数SEEK_END表示文件末尾,0表示偏移量,故该语句将指针移到文件末尾(D错误);r+要求文件存在(A正确);fwrite(buffer,size,count,fp)中count是元素个数(B正确);wb是二进制写模式(C正确)。

6.执行以下程序段后,输出结果是()

intx=5,y=7;

x+=y---++x;

printf(%d,%d,x,y);

A.5,6

B.6,6

C.7,6

D.8,6

答案:B

解析:表达式x+=y---++x等价于x=x+(y---++x)。计算顺序:先算++x(x变为6),再算y--(y先取7,后变为6),故括号内为7-6=1;原式变为x=6+1=7?不,原x初始是5,++x后x=6,y--时y=7(之后y=6)。括号内是7(y的当前值)-6(++x后的x值)=1

文档评论(0)

都那样! + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档