【C语言】42道大厂笔试题目(选择题)
本篇博客给大家带来的是一些大厂笔试题目,题目难度:简单,适合小白快速入手C语言部分的大厂笔试难度。
🐟🐟文章专栏:C语言
🚀🚀若有问题评论区下讨论,我会及时回答
❤❤欢迎大家点赞、收藏、分享 你们的支持就是我创造的动力
今日思想:山不向我走来,我便向它走去!!
试题1:
用在switch语言中的关键字不包含哪个?( )
A. continue
B. break
C. default
D. case
答案:A
试题2:
下面哪个不是关键字:( )
A. int
B. struct
C. define
D. continue
答案:C
试题3:
关于main函数错误的是?
A. main函数是程序的入口
B. 一个C语言程序中可以写多个main函数
C. main函数的名字是可以随便改的,比如:mian
D. main函数的名字是固定的,一个工程中,有且仅有一个main函数
答案:BC
试题4:
C语言规定,在一个源程序中,main函数的位置( )
A. 必须在最开始
B. 必须在库函数的后面
C. 可以任意
D. 必须在最后
答案:C
试题5:
关于C语言中源文件和头文件说法正确的是?
A. C语言的源文件的后缀是.cpp
B. 头文件没什么用,只要有源文件就行了
C. C语言中源文件的后缀是.c,头文件的后缀是.h
D. C语言的源文件可以没有后缀
答案:C
试题6:
下面程序输出的结果是啥:
#include <stdio.h> int main() { printf("%5d\n", 123456); return 0; }
A. 12345
B. 123456
C. 23456
D. 0
答案:A
试题7:
下面代码的结果是:( )
#include <stdio.h> int main() { int a, b, c; a = 5; c = ++a; b = ++c, c++, ++a, a++; b += a++ + c; printf("a = %d b = %d c = %d\n:", a, b, c); return 0; }
A. a = 8 b = 23 c = 8
B. a = 9 b= 23 c = 8
C. a = 9 b = 25 c = 8
D. a = 9 b = 24 c = 8
答案:B
试题8:
下面代码的执行结果是什么( )
#include <stdio.h> int main() { int x = 3; int y = 3; switch (x % 2) { case 1: switch (y) { case 0: printf("first"); case 1: printf("second"); break; default: printf("hello"); } case 2: printf("third"); } return 0; }
A. secondthird
B. hello
C. firstsecond
D. hellothird
答案:B
试题10:
下面代码执行的结果是:( )
#include <stdio.h> int main() { int i = 0; for (i = 0; i<10; i++) { if (i = 5) printf("%d ", i); } return 0; }
A. 1 2 3 4 5 6 7 8 9 10
B. 5 5 5 5 5 5 5 5 5 5
C. 死循环的打印5
D. 0 1 2 3 4 5 6 7 8 9
答案:C
试题11:
关于if语句说法正确是:( )
A. if语句后面只能跟一条语句
B. if语句中0表示假,1表示真
C. if语句是一种分支语句,可以实现单分支,也可以实现多分支
D. else语句总是和它的对齐的if语句匹配
答案:C
试题12:
int func(int a) { int b; switch (a) { case 1: b = 30; case 2: b = 20; case 3: b = 16; default: b = 0; } return b; }
则func(1) = ( )
A. 30
B. 20
C. 16
D. 0
答案:D
试题13:
关于while(条件表达式) 循环体,以下叙述正确的是( )? (假设循环体里面没有break,continue,return,goto等等语句)
A. 循环体的执行次数总是比条件表达式的执行次数多一次
B. 条件表达式的执行次数总是比循环体的执行次数多一次
C. 条件表达式的执行次数与循环体的执行次数一样
D. 条件表达式的执行次数与循环体的执行次数无关
答案:B
试题14:
在C语言中,以下哪个选项描述了变长数组(Variable Length Array,VLA)的特点?
A. 变长数组的大小在编译时确定,不能改变。
B. 变长数组的大小可能在运行时确定,比如使用变量来指定数组大小,一旦确定大小后,它的大小是固定的,无法改变。
C. 一旦确定大小后,它的大小是固定的,无法改变
D. 变长数组只能用于存储字符类型的数据。
答案:C
试题15:
给出以下定义:
char acX[] = "abcdefg"; char acY[] = { 'a','b','c','d','e','f','g'};
以下说法正确的是( )
A. 数组acX和数组acY等价
B. 数组acX和数组acY的长度相同
C. sizeof(acX)>sizeof (acY)
D. strlen (acX)>strlen (acY)
答案:C
试题16:
定义了一维 int 型数组 a[10] 后,下面错误的引用是:( )
A. a[0] = 1;
B. a[0] = 5*2;
C. a[10] = 2;
D. a[1] = a[2] * a[0];
答案:C
试题17:
关于一维数组描述不正确的是:( )
A. 数组的下标是从0开始的
B. 数组在内存中是连续存放的
C. 数组名表示首元素的地址
D. 随着数组下标的由小到大,地址由高到低
答案:D
试题18:
函数调用exec((vl,v2),(v3,v4),v5,v6);中,实参的个数是:( )
A. 3
B. 4
C. 5
D. 6
答案:B
试题19:
以下叙述中不正确的是:( )
A. 在不同的函数中可以使用相同名字的变量
B. 函数中的形式参数是在栈中保存
C. 在一个函数内定义的变量只在本函数范围内有效
D. 在一个函数内复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)
答案:D
试题20:
关于Debug和Release的区别说法错误的是:( )
A. Debug被称为调试版本,程序调试找bug的版本
B. Release被称为发布版本,测试人员测试的就是Release版本
C. Debug版本包含调试信息,不做优化。
D. Release版本也可以调试,只是往往会优化,程序大小和运行速度上效果最优
答案:D
试题21:
下面代码的结果是:( )
#include <stdio.h> int main() { int arr[] = {1,2,3,4,5}; short *p = (short*)arr; int i = 0; for(i=0; i<4; i++) { *(p+i) = 0; } for(i=0; i<5; i++) { printf("%d ", arr[i]); } return 0; }
A. 1 2 3 4 5
B. 0 0 3 4 5
C. 0 0 0 0 5
D. 1 0 0 0 0
答案:B
试题22:
以下系统中,int类型占几个字节,指针占几个字节,操作系统可以使用的最大内存空间是多大:( )
A. 32位下:4,4,2^32 64位下:8,8,2^64
B. 32位下:4,4,不限制 64位下:4,8,不限制
C. 32位下:4,4,2^32 64位下:4,8,2^64
D. 32位下:4,4,2^32 64位下:4,4,2^64
答案:C
试题23:
下面哪些描述是正确的?
A. 内存中每个bit位都有唯一的地址
B. 内存中每个字节都有地址,地址可以唯一标识一个内存单元的
C. C语言中地址就是指针,指针就是地址
D. C语言中只要有了地址就可以随意读写内存空间。
答案:BC
试题24:
下面代码的结果是:
#include <stdio.h> int i; int main() { i--; if (i > sizeof(i)) { printf(">\n"); } else { printf("<\n"); } return 0; }
A. >
B. <
C. 不输出
D. 程序有问题
答案:A
试题25:
能把函数处理结果的2个数据返回给主调函数,在下面的方法中不正确的是:( )
A. return 这2个数
B. 形参用数组
C. 形参用2个指针
D. 用2个全局变量
答案:A
试题26:
以下哪个操作可以避免野指针的出现?
A. 使用空指针(NULL)初始化指针变量
B. 在指针释放后将其设置为NULL
C. 确保指针始终指向有效的内存地址
D. 检查指针的有效性后再进行访问
答案:ABCD
试题27:
下面关于"指针"的描述不正确的是:( )
A. 当使用free释放掉一个指针内容后,指针变量的值被置为NULL
B. 32位系统下任何类型指针的长度都是4个字节
C. 指针的数据类型声明的是指针实际指向内容的数据类型
D. 野指针是指向未分配或者已经释放的内存地址
答案:A
试题28:
下面哪个是指针数组:( )
A. int* arr[10];
B. int * arr[];
C. int **arr;
D. int (*arr)[10];
答案:A
试题29:
如何定义一个int类型的指针数组,数组元素个数为10个:( )
A. int a[10]
B. int (*a)[10]
C. int *a[10];
D. int (*a[10])(int);
答案:C
试题30:
关于回调函数描述错误的是( )
A. 回调函数就是一个通过函数指针调用的函数
B. 回调函数一般通过函数指针实现
C. 回调函数一般不是函数的实现方调用,而是在特定的场景下,由另外一方调用。
D. 回调函数是调用函数指针指向函数的函数。
答案:D
试题31:
下面代码中print_arr函数参数设计哪个是正确的?( )
int arr[3][5] = {1,2,3,4,5,6,7,8,9,10}; print_arr(arr, 3, 5);
A. void print_arr(int arr[][],int row, int col);
B. void print_arr(int* arr, int row, int col);
C. void print_arr(int (*arr)[5], int row, int col);
D. void print_arr(int (*arr)[3], int row, int col);
答案:C
试题32:
unsigned int a= 0x1234; unsigned char b = *(unsigned char *)&a;
在32位大端模式处理器上变量b等于( )
A. 0x00
B. 0x12
C. 0x34
D. 0x1234
答案:A
试题33:
关于大小端字节序的描述正确的是( )
A. 大小端字节序指的是数据在电脑上存储的二进制位顺序
B. 大小端字节序指的是数据在电脑上存储的字节顺序
C. 大端字节序是把数据的高字节内容存放到高地址,低字节内容存放在低地址处
D. 小端字节序是把数据的高字节内容存放到低地址,低字节内容存放在高地址处
答案:B
试题34:
在小端机器中,下面代码输出的结果是:( )
#include <stdio.h> int main() { int a = 0x11223344; char *pc = (char*)&a; *pc = 0; printf("%x\n", a); return 0; }
A. 00223344
B. 0
C. 11223300
D. 112233
答案:C
试题35:
在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是( )
struct A { int a; short b; int c; char d; }; struct B { int a; short b; char c; int d; };
A. 16,16
B. 13,12
C. 16,12
D. 11,16
答案:C
试题36:
由多个源文件组成的C程序,经过编辑、预处理、编译、链接等阶段会生成最终的可执行程序。下面哪个阶段可以发现被调用的函数未定义?( )
A. 预处理
B. 编译
C. 链接
D. 执行
答案:C
试题37:
下面哪个不是预处理指令:( )
A. #define
B. #if
C. #undef
D. #end
答案:D
试题38:
( ) 的作用是将源程序文件进行处理,生成一个中间文件,编译系统将对此中间文件进行编译并生成目标代码。
A. 预处理
B. 汇编
C. 生成安装文件
D. 编译
答案:A
试题39:
在X86下,小端字节序存储,有下列程序
#include<stdio.h> int main() { union { short k; char i[2]; }*s, a; s = &a; s->i[0] = 0x39; s->i[1] = 0x38; printf("%x\n", a.k); return 0; }
输出结果是( )
A. 3839
B. 3938
C. 380039
D. 不确定
答案:A
试题40:
关于枚举常量和#define 定义常量,下面哪个表述是不严谨的?
A. 可读性更好:枚举符号提供了有意义的标识符,可以更清晰地表达代码的意图。相比之下,#define定义的符号只是简单的文本替换,不具备语义上的含义。
B. 和#define定义的标识符比较枚举有类型检查,更加严谨。
C. 枚举常量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用,#define定义的符号没有作用域概念,会在整个代码中进行文本替换
D. #define没有类型检查,使用更加方便,更加推荐使用
答案:D
试题41:
以下关于枚举的说法,哪个是正确的?
A. 枚举类型可以具有浮点数作为枚举值。
B. 枚举类型在内存中存储为整数。
C. 枚举类型可以包含字符串作为枚举值。
D. 枚举类型不能作为函数的参数传递。
答案:B
试题42:
以下哪个不是动态内存的错误( )
A. free参数为NULL
B. 对非动态内存的free释放
C. 对动态内存的多次释放
D. 对动态内存的越界访问
答案:A
完!!!!
原文地址:https://blog.csdn.net/2403_84958571/article/details/144358326
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!