吉林艺术学院《面向对象C程序设计2》2023-2024学年第一学期期末试卷.doc
自觉遵守考场纪律如考试作弊此答卷无效密
自觉遵守考场纪律如考试作弊此答卷无效
密
封
线
第PAGE1页,共NUMPAGES3页
吉林艺术学院《面向对象C程序设计2》
2023-2024学年第一学期期末试卷
院(系)_______班级_______学号_______姓名_______
题号
一
二
三
四
总分
得分
一、单选题(本大题共35个小题,每小题1分,共35分.在每小题给出的四个选项中,只有一项是符合题目要求的.)
1、在C语言中,对于指针和数组的关系,假设有一个数组?intarr[10]?,同时有一个指针?int*ptr=arr;?,那么?ptr+2?指向的是什么?()
A.?arr[2]?
B.?arr[3]?
C.?arr[1]?
D.不确定
2、C语言中,关于动态内存分配,若使用?int*p=(int*)malloc(sizeof(int)*10);?,以下描述正确的是:()
A.分配的内存空间会自动初始化为0
B.如果内存分配失败,?malloc?函数返回?NULL?
C.可以使用?free(p)?释放部分已分配的内存
D.不需要释放通过?malloc?分配的内存,程序结束时会自动释放
3、在C语言中,设有以下宏定义?#defineMAX(a,b)((a)(b)?(a):(b))?,那么?MAX(3+2,5)?的值是多少?()
A.5
B.6
C.8
D.不确定
4、在C语言的内存管理中,?malloc?和?free?函数用于动态分配和释放内存。假设需要为一个整数数组动态分配内存,以下关于内存管理的描述,哪一项是不准确的?()
A.使用?int*arr=(int*)malloc(sizeof(int)*5);?可以分配5个整数大小的内存空间
B.分配的内存使用完后,必须使用?free(arr);?释放,否则会导致内存泄漏
C.多次使用?malloc?分配的内存空间是连续的
D.?malloc?函数可能会分配失败,此时返回?NULL?
5、假设在C语言中有如下代码段?inta=5;int*p=a;?,以下关于指针运算的描述,正确的是:()
A.?p+1?指向的是下一个整数的地址
B.对指针进行乘法运算(如?p*2?)是合法的
C.可以直接将两个指针相加(如?p+p?)
D.指针的减法运算(如?p1-p2?)结果的单位是字节
6、若有定义:inta[5]={1,2,3,4,5},*p=a;则以下不能表示数组a中元素a[3]的是()
A.*(p+3)B.p[3]C.*(a+3)D.p+3
7、假设在C语言中有以下结构体定义?structstudent{intid;charname[20];floatscore;};?,以下关于结构体的描述,正确的是:()
A.可以直接将一个结构体变量赋值给另一个结构体变量
B.结构体成员的访问可以使用?struct.student.id?的形式
C.结构体数组中的元素不能通过指针进行访问
D.结构体变量所占的内存空间是其各成员所占空间之和
8、若有定义:charstr1[]=hello,str2[]=world;则执行strcat(str1,str2);后,str1的内容是()
A.hello
B.world
C.helloworld
D.worldhello
9、在C语言中,若有函数定义?voidfun(inta[],intn)?,以下调用正确的是()
A.?fun(10);?
B.?fun({1,2,3},3);?
C.?fun(1,2,3);?
D.?fun(a,3);?(假设?inta[]={1,2,3};?)
10、C语言中的字符串比较函数?strcmp?用于比较两个字符串。假设我们有两个字符串?charstr1[]=Hello;?和?charstr2[]=HelloWorld;?,当使用?strcmp(str1,str2)?进行比较时,结果是什么?()
A.0(表示相等)
B.负数(表示?str1?小于?str2?)
C.正数(表示?str1?大于?str2?)
D.不确定
11、在C语言中,关于字符串的操作,设有两个