版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言面试笔试真题(含详细答案)整套试题适用于应届生、初级开发岗位面试,题型选择、填空、判断、程序分析、编程题,贴合互联网、嵌入式企业真实考核重点,无偏题怪题,侧重基础功底和代码逻辑能力。一、单项选择题(共10题)1.以下不属于C语言基本数据类型的是()A.intB.floatC.stringD.char答案:C解析:C语言原生没有string字符串类型,字符串是通过字符数组或字符指针实现的。int、float、char均为C标准基本内置类型。2.32位系统中,int类型变量占用的字节数是()A.1B.2C.4D.8答案:C解析:32位、64位主流系统中,int均占用4字节;char占1字节,short占2字节,longlong占8字节。3.以下关于指针的说法,正确的是()A.指针变量的取值是变量的值B.指针变量存储的是内存地址C.指针不可以做加减运算D.空指针可以直接解引用答案:B解析:指针变量本质是存储内存地址的变量;指针支持加减整数的偏移运算;空指针指向无效内存,解引用会导致程序崩溃。4.全局变量和局部变量的主要区别是()A.变量类型不同B.存储位置、作用域、生命周期不同C.变量命名规则不同D.无区别答案:B解析:全局变量存储在全局数据区,程序运行全程有效,所有函数均可访问;局部变量存储在栈区,仅在当前函数执行期间有效,函数结束立即释放。5.以下关键字中,用于定义常量的是()A.staticB.constC.externD.auto答案:B解析:const修饰的变量为只读常量,不可修改;static修饰静态变量/函数;extern声明外部变量;auto为局部变量默认修饰符。6.数组名作为函数参数传递时,本质传递的是()A.数组所有元素B.数组首元素地址C.数组长度D.数组拷贝答案:B解析:数组传参会退化为指针,仅传递数组首地址,不会拷贝整个数组,因此在函数内无法用sizeof计算数组真实长度。7.以下不会产生内存泄漏的是()A.malloc未freeB.calloc未freeC.定义普通局部变量D.realloc未释放答案:C解析:普通局部变量存储在栈区,函数结束自动回收;malloc/calloc/realloc申请的堆内存,必须手动free释放,否则造成内存泄漏。8.switch语句中,break的作用是()A.结束整个程序B.跳出当前case,终止switch判断C.跳过本次循环D.无作用答案:B解析:break用于跳出switch或终止循环;continue仅跳过本次循环;return用于结束函数。9.结构体变量默认的内存对齐方式是()A.1字节对齐B.按成员最大基本类型对齐C.4字节对齐D.8字节对齐答案:B解析:结构体默认内存对齐规则:整体对齐数为所有成员中最大基本类型的字节数,目的是提升CPU访问内存效率。10.关于static静态局部变量,说法错误的是()A.只初始化一次B.存储在全局数据区C.函数结束后变量值保留D.作用域为整个程序答案:D解析:静态局部变量作用域仍为当前函数,仅生命周期延长至程序结束,初始化仅执行一次,值会保留。二、判断题(共5题,对√错×)1.指针变量可以指向任意类型的数据。(×)解析:指针有严格的类型匹配,int*指针只能指向int类型数据,类型不匹配会出现编译警告或内存访问异常。2.宏定义是简单的文本替换,不做语法检查。(√)解析:#define宏预处理阶段直接文本替换,无类型检查、语法校验,相较于const常量安全性更低。3.栈内存由系统自动分配和释放,堆内存需要手动管理。(√)解析:局部变量、函数参数在栈区,自动管理;堆内存手动申请、手动释放。4.数组的下标可以为负数。(×)解析:C语言数组下标从0开始,不支持负数下标,负数下标会造成越界访问,引发未知错误。5.const修饰的变量绝对不能修改。(×)解析:直接赋值无法修改,但可以通过指针强制解引用修改const修饰的全局/局部变量(只读属性是编译期限制,非硬件只读)。三、填空题(共5题)1.C语言中,实现循环的三种语句是____、____、____。答案:for、while、do-while2.字符串结束标志是____,占用____个字节内存。答案:'\0'、13.malloc函数的返回值类型是____。答案:void*4.二维数组inta[3][4]的首地址可表示为____、____。答案:a、&a[0][0]5.结构体占用的内存大小遵循____规则。答案:内存对齐四、程序输出分析题(共3题,重点必考)题目1:指针基础输出PlainText
#include<stdio.h>
intmain()
{
inta=10;
int*p=&a;
*p=20;
printf("%d",a);
return0;
}输出结果:20解析:p指向变量a的地址,*p是对地址解引用,直接修改a对应的内存数据,因此a的值由10变为20。题目2:static静态变量输出PlainText
#include<stdio.h>
voidtest()
{
staticintnum=0;
num++;
printf("%d",num);
}
intmain()
{
test();
test();
test();
return0;
}输出结果:123解析:static修饰的局部变量仅第一次调用初始化,后续调用沿用上次的值,不会重新赋值为0,每次调用自增1。题目3:数组传参退化问题PlainText
#include<stdio.h>
voidgetLen(intarr[])
{
printf("%d",sizeof(arr));
}
intmain()
{
inta[10]={0};
getLen(a);
return0;
}32位系统输出:464位系统输出:8解析:数组传参退化为指针,sizeof计算的是指针变量的字节大小,而非数组总大小,这是笔试高频考点。五、简答题(面试口述/笔试简答)1.简述栈、堆、全局数据区的区别1.栈区:系统自动管理,存放局部变量、函数参数、函数返回地址,空间小、读写速度快,函数结束立即释放,会出现栈溢出;2.堆区:手动申请手动释放,由malloc/calloc/realloc开辟,空间大、灵活,生命周期自主控制,处理不当会造成内存泄漏、野指针问题;3.全局数据区:存放全局变量、static静态变量,程序启动分配内存,程序结束才释放,全程有效。2.什么是野指针?如何避免野指针?野指针:指向随机无效内存地址的指针,无明确指向,无法正常使用,解引用会导致程序崩溃。避免方法:1.指针定义时初始化为NULL;2.指针使用前判断是否为NULL;3.指针释放后置NULL;4.杜绝指针越界、指向已释放的栈内存。3.const和#define的区别1.预处理阶段:#define是纯文本替换,无语法检查;const是变量修饰,编译阶段校验类型;2.类型属性:const有明确数据类型,宏定义无类型;3.作用域:宏定义默认全局有效,可undef取消;const变量遵循变量作用域规则;4.内存占用:const变量占用内存,宏定义不占用内存。六、编程实操题(企业高频笔试)题目1:实现字符串反转(不用库函数)PlainText
#include<stdio.h>
voidreverseStr(char*str)
{
//计算字符串长度
intlen=0;
while(str[len]!='\0')
{
len++;
}
//首尾交换反转
inti,j;
chartemp;
for(i=0,j=len-1;i<j;i++,j--)
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
}
intmain()
{
charbuf[100]="helloctest";
reverseStr(buf);
printf("反转后字符串:%s\n",buf);
return0;
}解题思路:先遍历字符串计算长度,再通过双指针首尾交换,实现原地反转,不借助额外空间,适配笔试基础要求。题目2:冒泡排序实现整型数组升序排列PlainText
#include<stdio.h>
voidbubbleSort(intarr[],intn)
{
inti,j;
inttemp;
//外层控制排序轮数
for(i=0;i<n-1;i++)
{
//内层两两比较交换
for(j=0;j<n-1-i;j++)
{
if(arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
intmain()
{
intarr[5]={9,2,5,1,7};
intlen=sizeof(arr)/sizeof(arr[0]);
bubbleSort(arr,len);
//输出结果
for(inti=0;i<len;i++)
{
printf("%d",arr[i]);
}
return0;
}输出结果
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中地理必修一教学设计:海水性质的区域差异与人海协调发展
- 2026年呼和浩特市烟草专卖局人员招聘考试模拟试题及详细答案解析
- 八年级地理下册 教学设计 白山黑水-东北三省区域认知与资源开发利用
- 2026年(完整版)三级安全教育试题答案
- 2026年GSP内审发现问题分类培训试题(含答案)
- 2026年cpa注册会计师税法真题试卷+解析及答案
- 初三语文冲刺记叙文阅读教案-临门一脚
- 2026年安全知识竞赛试题库及答案(共211题)
- 2026年兵团勘测设计院集团有限责任公司人员招聘考试模拟试题及详细答案解析
- 2026年厦门国贸控股集团有限公司人员招聘考试模拟试题及详细答案解析
- 基础会计教材电子版
- 2026年高中语文文言文实词虚词高频用法手册
- 隆力奇集团在我国日化二、三级市场营销策略的深度剖析与展望
- 《重点区域生态保护和修复工程建设投资估算指南(试行)》
- 2026年入团考试150题题库及答案解析(完整版)
- 2026年4月自考04851产品设计程序与方法试题及答案含评分参考
- DB 61T 5086-2023高效空调制冷机房设计标准
- 2026年甘肃安泰集团有限责任公司招聘工作人员笔试备考题库及答案解析
- 走心机培训教程
- 高频电刀安全使用课件
- 16.2.1 线段垂直平分线的性质 课件
评论
0/150
提交评论