- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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字符串
您可能关注的文档
最近下载
- TPS1200(徕卡TCR1202操作说明书中文版).pdf
- 《GB 12319-2022中国海图图式》(2025版)深度解析.pptx
- 求“陈”字所有书法字体图片。.pdf VIP
- 质控图与质控规则.pptx VIP
- 2025年时事政治必考题库(历年真题)附答案详解.docx VIP
- 《建设项目水资源论证导则第9部分:纺织行业建设项目SLT 525.9-2024》知识培训.pptx VIP
- 2018年中国出版集团招聘考试题(非编辑类B卷)和参考答案.pdf VIP
- 高性能算力中心建设项目投资计划书.docx
- 成人高考专升本2025年考试《政治》真题试卷(含答案).docx VIP
- 钢筋相关保护层厚度不合格处理方案.pdf VIP
文档评论(0)