C语言笔试真题(含答案解析·企业实战版)_第1页
C语言笔试真题(含答案解析·企业实战版)_第2页
C语言笔试真题(含答案解析·企业实战版)_第3页
C语言笔试真题(含答案解析·企业实战版)_第4页
C语言笔试真题(含答案解析·企业实战版)_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

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

文档简介

C语言笔试真题(含答案解析·企业实战版)适用场景:应届生校招、实习生笔试、基础能力测评考试时长:60分钟满分:100分说明:题目均为企业高频真题,无偏题怪题,侧重基础语法、指针、数组、结构体、程序逻辑、常见坑点一、单项选择题(共10题,每题3分,共30分)1.以下关于C语言变量定义,正确的是()A.int1a=10;  B.inta_1=10;  C.inta-b=10;  D.intfloat=10;2.已知inta=2,b=3;a+=b++;,执行后a和b的值分别是()A.5,4  B.5,3  C.6,4  D.2,43.以下不能作为switch语句表达式的类型是()A.int  B.char  C.float  D.short4.数组intarr[5]={1,2};初始化后,数组剩余元素的值是()A.随机值  B.0  C.NULL  D.无值5.已知char*p="hello";以下操作合法的是()A.p[0]='H';  B.*p='H';  C.p="hi";  D.以上都不对6.关于局部变量和全局变量,说法错误的是()A.全局变量生命周期贯穿整个程序运行过程B.局部变量在函数调用结束后释放内存C.局部变量默认初始值为0D.全局变量存放在全局数据区,局部变量存放在栈区7.sizeof(char*)在64位系统下的结果是()A.1  B.4  C.8  D.不确定8.以下循环语句,循环执行次数为0的是()A.for(inti=0;i<5;i++)  B.inti=5;while(i--)  C.inti=0;do{}while(i>0);  D.都不是9.结构体structStudent{chara;intb;};在32位系统下的sizeof大小是()A.5  B.6  C.8  D.910.C语言中函数return0和return1的含义,正确的是()A.无区别  B.return0代表程序正常结束,return1代表异常退出C.return0代表异常,return1代表正常  D.仅用于数值返回,无特殊含义二、填空题(共5题,每题4分,共20分)1.C语言中,逻辑真用______表示,逻辑假用______表示。2.指针变量的本质是存储______的变量。3.inta=3&&0;执行后,a的值为______。4.字符串"abc\n123"的有效长度(strlen)是______,占用内存字节数是______。5.宏定义#definePI3.14是在______阶段完成替换。三、程序改错题(共2题,每题8分,共16分)要求:找出代码中所有错误,说明原因并写出修正后代码1.下面代码意图是交换两个整数,找出错误并修改c

voidswap(inta,intb)

{

inttemp=a;

a=b;

b=temp;

}

2.下面代码意图是遍历输出字符串,找出错误并修改c

intmain()

{

char*str="test";

for(inti=0;i<strlen(str);i++)

{

printf("%c",str[i]);

}

return0;

}

(提示:包含隐藏风险问题)四、程序阅读题(共2题,每题7分,共14分)要求:写出程序最终运行输出结果1.程序代码:c

#include<stdio.h>

intmain()

{

inti=1;

switch(i++)

{

case1:printf("A");

case2:printf("B");break;

default:printf("C");

}

return0;

}

2.程序代码:c

#include<stdio.h>

intfunc(intn)

{

if(n==1)

return1;

returnn+func(n-1);

}

intmain()

{

printf("%d",func(5));

return0;

}

五、编程大题(共2题,每题10分,共20分)要求:代码可直接编译运行,逻辑清晰,无语法错误1.编写程序,输入一个正整数,判断该数是否为素数(质数),是则输出yes,否则输出no。2.编写程序,实现数组逆序。自定义整型数组,将数组元素倒序存储并打印输出(不允许新建数组,原地逆序)。参考答案及详细解析一、单项选择题答案1.B解析:变量名只能由字母、数字、下划线组成,不能以数字开头,不能使用关键字。A数字开头、C含减号、D使用关键字float,均错误。2.A解析:后置自增先运算后自增,a=a+b=2+3=5,运算结束后b自增为4。3.C解析:switch表达式仅支持整型、字符型、枚举型,不支持浮点型。4.B解析:C语言数组部分初始化时,未赋值的元素自动初始化为0。5.C解析:char*p="hello"指向字符串常量区,内容不可修改(A、B报错),但指针变量p本身可以重新赋值指向其他字符串。6.C解析:未初始化的局部变量是随机垃圾值,只有全局变量、静态变量默认初始化为0。7.C解析:64位系统下所有指针类型占用8字节,32位系统占用4字节。8.C解析:do-while先执行后判断,但是判断条件i>0初始为假,循环体执行0次。9.C解析:32位系统结构体内存对齐,char占1字节,补齐3字节,int占4字节,总大小8字节。10.B解析:main函数中return0是程序正常退出,return1/非0代表程序异常退出,是行业通用规范。二、填空题答案1.非0、02.内存地址3.0(逻辑与运算,0参与运算结果直接为0)4.7、8(\n是一个转义字符,字符串结束符\0占1字节内存)5.预处理三、程序改错题答案1.错误原因:函数传值调用,形参修改无法影响实参,无法完成交换。修正方案:改为指针传址调用c

voidswap(int*a,int*b)

{

inttemp=*a;

*a=*b;

*b=temp;

}

2.错误/风险问题:未引用头文件<string.h>,部分编译器会报错;同时循环内重复调用strlen,效率低。修正后完整代码:c

#include<stdio.h>

#include<string.h>

intmain()

{

char*str="test";

intlen=strlen(str);

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

{

printf("%c",str[i]);

}

return0;

}

四、程序阅读题答案1.输出结果:AB解析:i++先取值后自增,switch判断i=1,进入case1,无break,穿透执行case2,遇到break结束。2.输出结果:15解析:递归计算1+2+3+4+5=15。五、编程大题参考答案1.判断素数c

#include<stdio.h>

#include<math.h>

intmain()

{

intn,flag=1;

scanf("%d",&n);

if(n<2)

{

printf("no\n");

return0;

}

//遍历到平方根,优化效率

for(inti=2;i<=sqrt(n);i++)

{

if(n%i==0)

{

flag=0;

break;

}

}

if(flag)

printf("yes\n");

else

printf("no\n");

return0;

}

2.数组原地逆序c

#include<stdio.h>

intmain()

{

intarr[]={1,2,3,4,5,6};

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

inti,j,temp;

//首尾交换,原地逆序

温馨提示

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

最新文档

评论

0/150

提交评论