c高级试题及答案
一、单项选择题(每题2分,共20分)
1.以下关于C语言中指针的说法,正确的是()
A.指针变量只能指向基本数据类型
B.指针变量的大小是固定的
C.不能对指针变量进行算术运算
D.指针变量不能指向数组
答案:B
2.以下哪个关键字用于声明结构体类型()
A.unionB.typedefC.structD.enum
答案:C
3.若有定义`inta[10];`,则对数组元素的正确引用是()
A.a[10]B.a(5)C.a[0]D.a[10-10]
答案:C
4.函数指针的作用是()
A.指向函数的入口地址
B.指向函数的返回值
C.指向函数的参数
D.指向函数的局部变量
答案:A
5.以下关于`const`关键字的说法,错误的是()
A.可以用来修饰常量
B.可以用来修饰指针
C.被`const`修饰的变量不能再被赋值
D.`const`常量在编译时分配内存
答案:D
6.以下哪种存储类别的变量在函数调用结束后不会释放内存()
A.autoB.registerC.staticD.extern
答案:C
7.以下关于结构体嵌套的说法,正确的是()
A.结构体不能嵌套
B.结构体只能嵌套一层
C.结构体可以多层嵌套
D.结构体嵌套会导致内存浪费
答案:C
8.以下对字符串的定义,正确的是()
A.charstr[5]=hello;
B.charstr[]={h,e,l,l,o};
C.charstr[6]={h,e,l,l,o};
D.charstr[5];str=hello;
答案:C
9.以下关于递归函数的说法,错误的是()
A.递归函数必须有终止条件
B.递归函数调用自身
C.递归函数效率一定比非递归函数高
D.递归函数可以解决一些复杂的问题
答案:C
10.若有定义`voidp;`,则`p`可以指向()
A.任何类型的数据
B.只能指向`void`类型的数据
C.不能指向任何数据
D.只能指向指针类型的数据
答案:A
二、多项选择题(每题2分,共20分)
1.以下属于C语言数据类型的有()
A.整型B.浮点型C.字符型D.结构体
答案:ABCD
2.以下哪些操作可以对数组进行初始化()
A.inta[5]={1,2,3,4,5};
B.inta[]={1,2,3};
C.inta[5]={0};
D.inta[5];a={1,2,3,4,5};
答案:ABC
3.以下关于指针运算的说法,正确的有()
A.指针可以进行加法运算
B.指针可以进行减法运算
C.指针可以进行乘法运算
D.指针可以进行关系运算
答案:ABD
4.以下哪些关键字可以用于函数声明()
A.intB.voidC.staticD.extern
答案:ABCD
5.以下关于结构体的说法,正确的有()
A.结构体成员可以是不同的数据类型
B.结构体可以作为函数参数
C.结构体变量可以整体赋值
D.结构体可以嵌套联合体
答案:ABD
6.以下哪些是C语言中的预处理指令()
A.includeB.defineC.ifdefD.endif
答案:ABCD
7.以下关于`typedef`的说法,正确的有()
A.可以为现有数据类型定义新的名称
B.可以简化复杂类型的声明
C.可以定义新的数据类型
D.与`define`作用相同
答案:AB
8.以下关于文件操作的函数有()
A.fopenB.freadC.fwriteD.printf
答案:ABC
9.以下哪些情况会导致程序出现内存泄漏()
A.动态分配内存后未释放
B.释放内存后继续访问
C.多次释放同一块内存
D.局部变量未初始化
答案:AB
10.以下关于C语言中内存管理的说法,正确的有()
A.`malloc`用于动态分配内存
B.`free`用于释放动态分配的内存
C.`calloc`分配的内存会初始化为0
D.`realloc`可以改变已分配内存的大小
答案:ABCD
三、判断题(每题2分,共20分)
1.C语言中,数组名就是数组的首地址。()
答案:对
2.指针变量可以指向任何类型的变量,包括函数。()
答案:对
3.结构体变量