河源职业技术学院《C语言程序设计(实验)》2023-2024学年第一学期期末试卷.doc
装订线
装订线
PAGE2
第PAGE1页,共NUMPAGES3页
河源职业技术学院《C语言程序设计(实验)》
2023-2024学年第一学期期末试卷
院(系)_______班级_______学号_______姓名_______
题号
一
二
三
四
总分
得分
批阅人
一、单选题(本大题共35个小题,每小题1分,共35分.在每小题给出的四个选项中,只有一项是符合题目要求的.)
1、在C语言的函数调用中,参数传递有值传递和指针传递两种方式。假设定义了一个函数?voidswap(int*a,int*b)?用于交换两个整数的值。以下关于函数参数传递的描述,哪一项是错误的?()
A.值传递时,函数内部对参数的修改不会影响到函数外部的变量
B.指针传递可以在函数内部修改指针所指向变量的值
C.对于大型结构体或数组,为了提高效率,通常使用值传递
D.指针传递可以通过改变指针的指向来操作不同的变量
2、若有定义:inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};,则((a+1)+1)的值是()
A.6B.7C.8D.9
3、若有以下函数调用语句:func((a1,a2),(a3,a4,a5));在此函数调用语句中,含有的实参个数是()
A.2B.3C.4D.5
4、假设在C语言中有以下代码?typedefintINT;?,以下描述正确的是:()
A.?INT?和?int?是完全不同的类型
B.可以使用?INTa,b;?来定义变量
C.?typedef?定义的新类型不能用于函数参数和返回值类型
D.?typedef?只是给已有类型起了一个别名,不会创建新的类型
5、在C语言中,关于指针和数组的关系,以下代码:?intarr[]={1,2,3,4,5};int*ptr=arr;?,以下描述正确的是:()
A.?ptr+2?指向数组的第3个元素
B.?*(ptr+2)?的值为2
C.?ptr?和?arr?的地址一定不同
D.对?ptr?进行加减运算会导致程序错误
6、在C语言的结构体嵌套和共用体中,以下关于共用体的描述,不正确的是()
A.共用体的成员共用同一段内存空间,同一时刻只能存储其中一个成员的值
B.共用体的大小等于其最大成员的大小
C.可以对共用体的成员进行初始化
D.共用体常用于节省内存空间或实现某些特殊的数据存储需求
7、C语言中,关于字符串的操作,若有?charstr1[]=Hello;charstr2[]=World;?,以下描述正确的是:()
A.可以使用?str1=str2;?来将?str2?的内容复制到?str1?
B.?strlen(str1)?返回的是字符串?str1?所占的内存空间大小
C.可以使用?strcpy(str1,str2);?把?str2?复制到?str1?,但要确保?str1?有足够的空间
D.字符串比较可以直接使用关系运算符(如?==?)
8、C语言中的位域(BitField)可以用于节省内存空间。假设有以下定义:?struct{unsignedintflag1:1;unsignedintflag2:2;}flags;?,以下关于位域的描述,正确的是:()
A.整个结构体?flags?占用4个字节的内存空间
B.可以对?flag1?和?flag2?进行单独的位操作
C.位域的顺序和内存分配顺序一定相同
D.位域不能作为函数的参数传递
9、在C语言中,若有以下函数定义:intfun(inta,intb){returna+b;}调用该函数时,以下哪种方式是正确的?()
A.intresult=fun(5);
B.intresult=fun(5,6);
C.intresult=fun(5,6,7);
D.intresult=fun();
10、若有定义?inta[5]={1,2,3,4,5};?,则?a[1]?的值是()
A.0
B.1
C.2
D.3
11、以下C语言代码段中,?sizeof?操作符的返回值是多少??charstr[]=Hello;?()
A.5
B.6
C.10
D.不确定
12、若有定义:chars[10],*p=s;,以下输入