NEC C语言招聘笔试题(含详细答案解析)_第1页
NEC C语言招聘笔试题(含详细答案解析)_第2页
NEC C语言招聘笔试题(含详细答案解析)_第3页
NEC C语言招聘笔试题(含详细答案解析)_第4页
NEC C语言招聘笔试题(含详细答案解析)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

NECC语言招聘笔试题(含详细答案解析)考试说明:满分100分,考试时间90分钟,题型包含选择题、填空题、程序阅读题、编程题,侧重嵌入式、工程实战基础考点,适配NEC软件开发岗位招聘要求。一、单项选择题(共15题,每题3分,共45分)1.以下关于C语言变量定义的说法,正确的是()A.变量可以先使用后定义B.变量名中可以包含空格C.局部变量仅在定义的代码块内有效D.static局部变量生命周期随函数结束而终止2.已知inta=5;a+=a-=a*a;,执行后a的值为()A.-15B.-40C.0D.-203.以下关键字中,不属于C语言基本数据类型的是()A.shortB.floatC.boolD.double4.关于指针的说法,错误的是()A.指针变量存储的是内存地址B.空指针指向内存地址0C.可以对void*指针直接解引用操作D.指针可以进行加减整数运算5.数组charstr[10]={"abc"};在内存中占用的字节数是()A.3B.4C.10D.不确定6.以下关于结构体的说法正确的是()A.结构体成员必须是相同数据类型B.结构体变量可以直接整体赋值C.结构体不可以嵌套定义D.结构体大小等于所有成员大小之和7.预处理指令#defineN10执行的阶段是()A.编译阶段B.预处理阶段C.链接阶段D.运行阶段8.已知intarr[]={1,2,3,4};,则sizeof(arr)的值为()A.4B.8C.16D.不确定9.以下循环语句中,属于死循环的是()A.for(inti=0;i<10;i++);B.while(0){}C.do{}while(1);D.for(;;0);10.函数内部定义的auto变量的存储位置是()A.栈区B.堆区C.全局区D.代码区11.以下运算符中,优先级最高的是()A.赋值运算符=B.逻辑与&&C.算术运算符+D.逗号运算符,12.关于malloc函数,说法正确的是()A.分配的内存空间会自动初始化B.分配的内存位于栈区C.必须手动调用free释放内存,否则会造成内存泄漏D.malloc返回值为int类型13.枚举类型enumA{X,Y=5,Z};,则Z的值为()A.0B.1C.6D.514.以下不能作为switch语句表达式的是()A.intB.charC.floatD.short15.关于头文件包含,说法错误的是()A.#include<>用于引用系统头文件B.#include""优先引用自定义头文件C.头文件可以重复包含,不会有任何问题D.可通过#ifndef防止头文件重复包含二、填空题(共5题,每题3分,共15分)1.C语言中,字符串结束标志是________。2.指针变量int*p=NULL;中,NULL的本质值是________。3.全局变量和static静态局部变量存储在内存的________区。4.inta=3,b=2;a&b的运算结果是________。5.函数参数传递中,数组传参本质上是传递________。三、程序阅读题(共3题,每题6分,共18分)1.写出以下程序的运行结果c

#include<stdio.h>

intmain()

{

inti,s=0;

for(i=1;i<5;i++)

{

if(i%2==0)

continue;

s+=i;

}

printf("%d",s);

return0;

}2.写出以下程序的运行结果c

#include<stdio.h>

voidfun(intx)

{

x=100;

}

intmain()

{

inta=10;

fun(a);

printf("%d",a);

return0;

}3.写出以下程序的运行结果c

#include<stdio.h>

intmain()

{

charstr[]="NEC2026";

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

return0;

}四、编程题(共2题,第1题10分,第2题12分,共22分)1.编写C语言程序,实现冒泡排序,对整型数组从小到大排序,要求兼容任意长度数组。2.编写函数,实现字符串反转功能,不使用系统自带反转函数,手动遍历实现,主函数完成输入、反转、输出测试。参考答案及详细解析一、单项选择题答案及解析1.答案:C解析:C语言遵循先定义后使用原则,A错误;变量名不能包含空格、关键字、特殊符号,B错误;static局部变量程序结束后才释放内存,D错误;局部变量作用域仅限当前代码块,C正确。2.答案:B解析:复合赋值运算符从右往左运算。原式拆解:先算a*a=25,再算a=a-25=5-25=-20,最后算a=a+(-20)=-40。3.答案:C解析:C语言标准基本数据类型为char、short、int、long、float、double,bool是C99新增头文件定义类型,不属于原生基本数据类型。4.答案:C解析:void*为无类型指针,仅用于地址存储和传递,无具体类型,无法直接解引用,必须强制类型转换后才能操作。5.答案:C解析:数组定义时指定长度为10,系统会分配连续10个字节的内存空间,初始化内容仅赋值前4位(abc+\0),剩余空间自动补0,总占用字节数为10。6.答案:B解析:结构体成员可定义不同数据类型,A错误;结构体支持嵌套定义,C错误;结构体存在内存对齐,实际大小大于等于成员大小之和,D错误;同类型结构体变量可直接整体赋值,B正确。7.答案:B解析:#define是预处理指令,在编译前的预处理阶段完成文本替换,不参与编译、链接过程。8.答案:C解析:arr为数组名,sizeof(数组名)计算整个数组内存大小,int类型占4字节,4个元素总大小为4*4=16字节。9.答案:C解析:do-while循环先执行后判断,while(1)条件恒成立,为死循环;A是正常有限循环,B循环条件为0不执行,D循环条件为0不循环。10.答案:A解析:auto是局部变量默认存储类型,存储在栈区,函数调用结束后立即释放内存;堆区由malloc分配,全局区存放全局、static变量。11.答案:C解析:运算符优先级:算术运算符>逻辑运算符>赋值运算符>逗号运算符。12.答案:C解析:malloc分配的堆内存不会自动初始化,A错误;堆区内存需手动free释放,不释放会导致内存泄漏,B错误;malloc返回值为void*类型,D错误。13.答案:C解析:枚举默认从0自增,X=0,Y手动赋值为5,后续Z在Y基础上自增1,值为6。14.答案:C解析:switch表达式要求为整型或字符型(可隐式转为整型),浮点型精度不固定,无法精准匹配case常量,不能作为switch表达式。15.答案:C解析:头文件重复包含会导致函数、变量重复定义报错,必须通过#ifndef、#define、#endif防护。二、填空题答案及解析1.\0解析:C语言字符串以空字符'\0'作为结束标志,用于标识字符串终止。2.0解析:NULL是宏定义,本质为数值0,代表空地址。3.全局(静态)解析:全局变量、static静态变量均存储在全局静态区,程序运行期间常驻内存。4.2解析:按位与运算,3二进制11,2二进制10,按位与结果为10,对应十进制2。5.数组首元素地址解析:数组传参会退化成为指针,本质是将数组首地址传递给形参,并非传递整个数组。三、程序阅读题答案及解析1.运行结果:4解析:循环遍历1-4,遇到偶数执行continue跳过累加,仅累加奇数1、3,1+3=4。2.运行结果:10解析:C语言函数参数为值传递,函数内修改的是形参副本,不会影响主函数实参a的值。3.运行结果:87解析:字符串"NEC2026"共7个有效字符,末尾自动补'\0',sizeof计算数组总长度为8;strlen统计有效字符数,结果为7。四、编程题参考答案1.冒泡排序代码(通用版)c

#include<stdio.h>

//冒泡排序函数

voidbubbleSort(intarr[],intlen)

{

inti,j,temp;

//外层控制排序轮数

for(i=0;i<len-1;i++)

{

//内层每轮比较次数

for(j=0;j<len-1-i;j++)

{

//前数大于后数则交换,从小到大排序

if(arr[j]>arr[j+1])

{

temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

}

intmain()

{

intarr[]={9,5,1,7,3,8};

intlen=sizeof(arr)/sizeof(arr[0]);

inti;

bubbleSort(arr,len);

//输出排序后数组

for(i=0;i<len;i++)

{

printf("%d",arr[i]);

}

return0;

}核心思路:相邻元素两两比较,大数后移,每轮排序确定一个最大值,循环完成整体升序排序,适配任意长度整型数组。2.字符串反转代码(手动实现)c

#include<stdio.h>

//字符串反转函数

voidstrReverse(charstr[])

{

inti=0;

intlen=0;

chartemp;

//手动计算字符串长度

while(str[len]!='\0')

{

len++;

}

//首尾交换实现反转

for(i=0;i<len/2;i++)

{

temp=str[i];

str[i]=str[len-1-i];

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论