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

下载本文档

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

文档简介

C语言常见笔试题(含详细答案)本套题目为互联网、嵌入式、软件开发岗位高频C语言笔试题,贴合真实考试难度,剔除冷门偏题,答案讲解通俗易懂,重点标注易错点,适合笔试刷题、期末复习、求职备考。一、单项选择题(10题)1.以下关于C语言变量的说法,正确的是()A.变量可以不定义直接使用

B.变量名不能以数字开头

C.关键字可以作为变量名

D.变量定义后默认有初始值答案:B解析:C语言遵循先定义后使用原则,A错误;变量名规则:只能由字母、数字、下划线组成,不能以数字开头,不能使用关键字,B正确、C错误;局部变量定义后无默认初始值,是随机垃圾值,全局变量默认初始化为0,D错误。2.3、在C语言中,sizeof(int)在32位系统下的结果是()A.1

B.2

C.4

D.8答案:C解析:32位系统中,int整型占4个字节;char占1字节,short占2字节,longlong、double占8字节。64位系统基础整型大小与32位一致。3.以下运算符中,优先级最高的是()A.赋值运算符=

B.逻辑与&

&C.算术运算符+

D.括号()答案:D解析:运算符优先级:括号>算术运算>逻辑运算>赋值运算。括号可以改变运算顺序,优先级最高。4.设有定义inta=5;执行a+=a-=a*a;后a的值为()A.-15

B.-40

C.0

D.-20答案:B解析:复合赋值运算符从右向左计算。

第一步:a*a=25;

第二步:a-=25,即a=5-25=-20;

第三步:a+=-20,即a=-20+(-20)=-40。5.以下数组定义合法的是()A.inta[];

B.inta[3]={1,2,3,4};

C.inta[3]={1};

D.intn=3;inta[n];答案:C解析:A错误,普通数组定义必须指定长度或初始化赋值确定长度;B错误,初始化元素个数超过数组长度,会报错;C正确,数组初始化元素不足时,剩余元素自动补0;D错误,C语言标准不支持变量定义数组长度(变长数组仅部分编译器支持,笔试中判定为非法)。6.关于指针,以下说法错误的是()A.指针变量存储的是内存地址

B.char*p中,p是指针变量

C.空指针可以解引用操作

D.指针可以进行加减运算答案:C解析:空指针指向无效内存地址,对空指针解引用会造成程序崩溃,是典型错误操作。指针加减运算本质是偏移对应数据类型的字节数。7.函数局部变量存储在内存的哪个区域()A.栈区

B.堆区

C.全局区

D.代码区答案:A解析:局部变量、函数形参存放在栈区,函数执行结束后自动释放;堆区由malloc/free手动申请释放;全局变量、静态变量存放在全局区。8.以下不能作为switch语句表达式的是()A.int

B.char

C.float

D.short答案:C解析:switch表达式仅支持整型、字符型(本质也是整型),不支持浮点型、字符串。浮点型精度不精准,无法精准匹配case常量。9.#defineN10该预处理指令的作用是()A.定义一个变量N,值为10

B.定义一个常量N,值为10

C.代码编译前,将代码中所有N替换为10

D.无任何作用答案:C解析:宏定义是简单的文本替换,预处理阶段完成,不占用内存;与const常量不同,宏没有类型检查,只是纯文本替换。10.关于while(1)循环,说法正确的是()A.循环执行1次

B.无限循环

C.不执行循环

D.语法报错答案:B解析:C语言中,非0数值代表真,1恒为真,因此while(1)是死循环,常用于嵌入式、后台程序常驻运行。二、填空题(5题)1.C语言中,______语句可以跳出当前循环,______语句仅结束本次循环,进入下一次循环。答案:break;continue解析:break直接终止整个循环或switch语句;continue跳过本次循环剩余代码,直接开启下一轮循环,不终止整体循环。2.字符串"abc"在内存中占用的字节数是______。答案:4解析:字符串末尾自动隐藏结束符'\0',占1字节,3个有效字符+1个结束符,总计4字节。3.int*p[3]是______,int(*p)[3]是______。答案:指针数组;数组指针解析:指针数组:数组的每个元素都是指针;数组指针:指向数组的指针,优先级()高于[],是笔试高频易错点。4.静态局部变量使用关键字______修饰,仅初始化一次,程序结束才释放内存。答案:static5.malloc函数申请的内存需要通过______函数手动释放,避免内存泄漏。答案:free三、程序输出题(5题,含详细解析)1.写出以下程序运行结果c

#include<stdio.h>

intmain()

{

inti=0;

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

{

if(i==1)

continue;

printf("%d",i);

}

return0;

}输出结果:02解析:i=0,不满足if条件,打印0;i=1,执行continue,跳过本次打印;i=2,不满足if条件,打印2。2.写出以下程序运行结果c

#include<stdio.h>

intmain()

{

inta=10,b=20;

int*p=&a;

p=&b;

*p=30;

printf("%d%d",a,b);

return0;

}输出结果:1030解析:指针p先指向a,后续重新赋值指向b,通过*p修改的是b的值,a的值保持不变。3.写出以下程序运行结果c

#include<stdio.h>

intmain()

{

charstr[]="hello";

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

return0;

}输出结果:65解析:sizeof计算数组整体内存大小,包含'\0',结果为6;strlen计算有效字符长度,不包含结束符,结果为5。4.写出以下程序运行结果c

#include<stdio.h>

voidfun(intx)

{

x=100;

}

intmain()

{

inta=10;

fun(a);

printf("%d",a);

return0;

}输出结果:10解析:C语言函数参数传递为值传递,形参x是a的临时副本,修改副本不会影响原变量a的值。如需修改原变量,需传递指针。5.写出以下程序运行结果c

#include<stdio.h>

intmain()

{

inta=3;

switch(a)

{

case1:printf("1");break;

case3:printf("3");

case5:printf("5");break;

default:printf("0");

}

return0;

}输出结果:35解析:case3无break语句,执行完case3后会发生case穿透,继续执行后续case5的代码,直到遇到break结束。四、简答题(高频面试/笔试题)1.简述局部变量和全局变量的区别1.作用域:局部变量仅在定义的函数/代码块内有效;全局变量整个程序所有函数都可使用。

2.存储位置:局部变量存栈区,全局变量存全局静态区。

3.生命周期:局部变量函数执行结束即释放;全局变量程序运行全程存在。

4.初始值:局部变量无默认值;全局变量默认初始化为0。2.指针和数组的联系与区别联系:数组名本质是数组首元素的地址,可以用指针遍历数组,数组下标访问等价于指针偏移。

区别:数组是连续的内存空间,占用固定字节内存;指针是变量,仅存储地址,32位系统占4字节。sizeof(数组名)得到数组总大小,sizeof(指针)得到指针变量本身大小。3.简述malloc和free的使用注意事项1.malloc申请堆内存,不会自动初始化,内存为随机值;

2.申请的内存使用完毕必须用free释放,否则造成内存泄漏;

3.不能重复释放同一块内存,会导致程序崩溃;

4.free后的指针变为野指针,建议手动赋值为NULL。五、编程题(基础高频真题)题目:编写程序,实现求1-100之间所有偶数的和c

#include<stdio.h>

intmain()

{

inti,sum=0;

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

温馨提示

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

评论

0/150

提交评论