C语言笔试题库及答案.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

C语言笔试题库及答案

一、选择题(每题5分,共50分)

以下关于C语言变量声明与初始化的说法,正确的是()

A.inta=10,20;语法正确,可同时初始化a和20

B.autointb;声明的变量b默认初始值为0

C.staticintc;声明的静态变量c默认初始值为0

D.全局变量未初始化时,默认值为随机数

答案:C

解析:

A错误:变量声明中初始化列表格式错误,正确应为inta=10,b=20;,不能直接写“10,20”;

B错误:auto关键字可省略(局部变量默认auto),auto变量未初始化时为随机值,而非0;

C正确:静态变量(static)和全局变量未初始化时,编译器会自动初始化为0,这是C语言的内存初始化规则;

D错误:全局变量属于静态存储区,未初始化默认值为0,随机值是未初始化局部变量的特性。

下列定义中,属于“指针数组”的是()

A.int*a[5];

B.int(*a)[5];

C.inta[5];

D.int*a;

答案:A

解析:

关键看运算符优先级:[]优先级高于*,所以A中a先与[5]结合,构成“存储5个int*类型指针的数组”,即指针数组;

B中()改变优先级,a先与*结合,构成“指向包含5个int元素的数组的指针”,即数组指针;

C是普通int数组,D是普通int指针,均不符合。

以下代码执行后,输出结果为()

#includestdio.h

intmain(){

charstr[]=hello;

printf(%d,%d,strlen(str),sizeof(str));

return0;

}

A.5,5

B.5,6

C.6,5

D.6,6

答案:B

解析:

strlen(str):计算字符串实际长度,不包含末尾的\0,“hello”共5个字符,故返回5;

sizeof(str):计算数组总字节数,字符串数组会自动在末尾添加\0,数组长度为6(5个字符+1个\0),char占1字节,故返回6。

关于动态内存分配,以下代码存在的问题是()

#includestdlib.h

intmain(){

int*p=malloc(sizeof(int));

*p=10;

printf(%d,*p);

return0;

}

A.malloc参数错误,应写malloc(int)

B.未检查malloc返回值,可能存在空指针风险

C.*p=10语法错误,不能给指针赋值

D.缺少free(p),但无内存泄漏

答案:B

解析:

A错误:malloc参数是字节数,sizeof(int)正确,malloc(int)语法错误;

B正确:malloc失败时返回NULL,若直接解引用NULL会导致程序崩溃,实际开发必须检查返回值(如if(p==NULL){exit(1);});

C错误:*p是指针指向的内存,赋值10正确;

D错误:未free(p)会导致内存泄漏(程序结束前未释放动态内存),虽然程序退出后系统会回收,但长期运行的程序会耗尽内存。

以下关于#define与typedef的区别,说法错误的是()

A.#definePINTint*是宏替换,typedefint*PINT是类型别名

B.用#define定义的类型,声明多个变量时可能出现歧义

C.typedef定义的类型有类型检查,#define没有

D.#define和typedef都可以定义函数类型

答案:D

解析:

A正确:#define是预处理阶段的文本替换,typedef是编译阶段的类型定义;

B正确:如#definePINTint*;PINTa,b;,替换后为int*a,b;,实际a是int*,b是int,存在歧义;而typedef定义的PINTa,b;中a、b均为int*;

C正确:typedef会进行类型检查(如赋值错误会报错),#define仅文本替换,无类型检查;

D错误:typedef可定义函数类型(如typedefint(*Func)(int);),但#define无法直接定义函数类型,只能替换函数名或参数,不具备类型定义能力。

二、编程题(每题25分,共50分)

手写strcpy函数,实现字符串复制(要求:处理空指针,避免缓冲区溢出风险)

答案:

#includestring.h//用于size_t类型

//函数功能:将src字符串

文档评论(0)

151****9429 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档