岭南师范学院《C语言程序设计基础实验》2023-2024学年第一学期期末试卷_第1页
岭南师范学院《C语言程序设计基础实验》2023-2024学年第一学期期末试卷_第2页
岭南师范学院《C语言程序设计基础实验》2023-2024学年第一学期期末试卷_第3页
岭南师范学院《C语言程序设计基础实验》2023-2024学年第一学期期末试卷_第4页
岭南师范学院《C语言程序设计基础实验》2023-2024学年第一学期期末试卷_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

学校________________班级____________姓名____________考场____________准考证号学校________________班级____________姓名____________考场____________准考证号…………密…………封…………线…………内…………不…………要…………答…………题…………第2页,共2页岭南师范学院

《C语言程序设计基础实验》2023-2024学年第一学期期末试卷题号一二三四总分得分一、单选题(本大题共25个小题,每小题1分,共25分.在每小题给出的四个选项中,只有一项是符合题目要求的.)1、在C语言的输入输出函数中,以下关于scanf函数的描述,不正确的是()A.scanf函数可以从标准输入读取各种数据类型的值,并将其存储到相应的变量中B.在使用scanf函数时,需要严格按照指定的格式输入数据,否则可能导致读取错误C.scanf函数在读取字符串时,不会自动添加字符串结束符'\0'D.scanf函数的返回值是成功读取的数据项的个数2、若有定义:floatx;inta,b;则以下正确的输入语句是()A.scanf("%f%d",&x,&a,&b);B.scanf("%f%d",&x,&a);C.scanf("%f%d",x,a);D.scanf("%5.2f%d",&x,&a);3、C语言中,若有以下代码段

uniondata{inti;floatf;};uniondatad;

,以下描述正确的是:()A.联合体

data

的大小是其成员大小的总和B.可以同时给联合体的多个成员赋值C.在同一时刻,联合体中只有一个成员的值是有效的D.联合体成员的访问方式与结构体相同4、在C语言中,动态内存分配是一项灵活但需要谨慎使用的操作。假设有如下代码

int*ptr=(int*)malloc(sizeof(int)*10);

,以下对于动态内存分配的描述,哪一项是不准确的?()A.

malloc

函数返回的是一个指向分配内存的起始地址的指针,如果分配失败会返回

NULL

B.分配的内存空间是连续的,并且其大小由指定的字节数决定C.动态分配的内存空间在使用完毕后,必须使用

free

函数释放,否则会导致内存泄漏D.可以使用

realloc

函数直接修改已经分配的内存空间的大小,而不需要重新分配5、在C语言的库函数中,以下关于math.h头文件中的数学函数,描述不准确的是()A.sqrt函数用于计算一个数的平方根B.pow函数用于计算一个数的幂次方C.random函数用于生成随机数D.abs函数用于计算一个整数的绝对值6、C语言中的类型转换需要注意数据的精度和范围。假设有以下代码:

floatf=3.14;inti=(int)f;

,以下关于变量

i

的值,正确的是:()A.

i

的值为3B.

i

的值为3.14C.

i

的值为4D.程序会产生运行时错误,因为类型转换不正确7、在C语言中,关于指针的使用,假设我们有一个整数变量

intnum=5;

,同时定义了一个指针

int*ptr=#

。以下关于指针操作的描述,哪一项是不正确的?()A.通过

*ptr

可以访问

num

的值,并对其进行修改B.可以将另一个整数变量的地址直接赋给

ptr

,而无需类型匹配C.对

ptr

进行加减运算,可以使其指向相邻的内存位置D.指针

ptr

本身也占据一定的内存空间8、若有定义:inta[2][3]={{1,2,3},{4,5,6}};则*(*(a+1)+2)的值是()A.3B.4C.5D.69、以下C语言代码段的输出结果是什么?intnum=5;int*ptr=#*ptr=10;printf("%d",num);()A.5B.10C.0D.程序报错10、假设在C语言中有以下代码段

structpoint{intx;inty;}p1,p2;

,以下关于结构体变量赋值的描述,正确的是:()A.可以使用

p1=p2;

直接将

p2

的值赋给

p1

B.结构体变量之间不能相互赋值C.只能逐个成员进行赋值,不能整体赋值D.赋值时会自动进行类型转换11、设有定义:intx=10,y=20;,以下能正确交换x和y值的程序段是()A.intt;t=x;x=y;y=t;B.x=y;y=x;C.x+=y;y=x-y;x-=y;D.以上都正确12、C语言中,对于以下代码:

intarr[5]={0};

,数组

arr

中的元素值都是什么?()A.都是0B.都是未定义的值C.第一个元素是0,其他元素未定义D.以上都不对13、在C语言中,关于字符数组和字符串的初始化,以下代码:

charstr1[10]="Hello";charstr2[]="World";

,哪个数组的长度是不确定的?()A.

str1

B.

str2

C.两者长度都不确定D.两者长度都确定14、C语言中,对于函数声明

voidfun(inta[],intn)

,以下关于函数参数的描述,正确的是:()A.在函数内部修改数组元素的值,不会影响主调函数中的数组B.形参

n

用于指定数组

a

的长度,其值在函数内不可改变C.数组

a

实际上是以指针的形式传递给函数的D.函数无法返回数组15、在C语言中,关于函数指针,设有函数

intadd(inta,intb){returna+b;}

,定义函数指针

int(*ptr)(int,int)=add;

,那么通过函数指针调用该函数计算

3+5

的结果,以下哪种方式正确?()A.

ptr(3,5)

B.

*ptr(3,5)

C.

ptr[3,5]

D.

(*ptr)(3,5)

16、在C语言中,设有函数

voidfun(int*p)

,在函数体内通过

*p

对指针所指向的变量进行操作。若在主函数中有

inta=10;fun(&a);

,那么在函数

fun

中改变

*p

的值,主函数中的

a

的值会发生变化吗?()A.会B.不会C.不一定D.以上都不对17、在C语言中,宏定义和函数调用有一些区别。假设定义了宏

#defineSQUARE(x)((x)*(x))

和函数

intsquare(intx){returnx*x;}

,以下关于它们的描述,哪一项是不准确的?()A.宏定义在编译时进行替换,函数调用在运行时执行B.宏定义不进行类型检查,函数调用会进行类型检查C.宏定义的参数没有副作用,函数调用的参数可能有副作用D.对于频繁调用且代码简短的操作,宏定义可能比函数调用更高效18、在C语言的函数指针使用中,假设我们定义了一个函数指针

int(*func_ptr)(int,int);

,并且有两个函数

intadd(inta,intb){returna+b;}

intsubtract(inta,intb){returna-b;}

,如何通过函数指针调用这两个函数?()A.直接使用函数名调用B.将函数名赋值给函数指针,然后通过函数指针调用C.无法通过函数指针调用D.以上都不对19、C语言中的循环结构是实现重复操作的重要手段。假设有一个

for

循环

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

,以下对于循环结构的描述,哪一项是不准确的?()A.循环条件

i<10

在每次循环开始时都会被判断,如果条件不满足则循环结束B.可以在循环体内使用

continue

语句直接开始下一次循环,跳过本次循环剩余的代码C.循环变量

i

的作用域仅限于循环体内,在循环体外无法访问D.循环可以嵌套使用,内层循环会先执行完所有的迭代,然后外层循环才会进行下一次迭代20、若有定义:inta[10];,则以下对数组元素的正确引用是()A.a[10]B.a(5)C.a[3+5]D.a[10-10]21、在C语言的复杂数据类型中,以下关于指针数组和数组指针的说法,不准确的是()A.指针数组是一个数组,其元素都是指针B.数组指针是指向一个数组的指针C.指针数组和数组指针在内存中的存储方式相同D.在使用指针数组和数组指针时,需要注意指针的运算和数组的下标操作22、假设有以下C语言代码段:

int*p1,*p2;p1=(int*)malloc(sizeof(int));p2=p1;free(p2);

,此时

p1

指向的内存是否已被释放?()A.是B.否C.不确定D.以上都不对23、在C语言中,关于函数的参数传递,假设有函数

voidmodify(int*p){*p=100;}

,在主函数中有

intnum=5;modify(&num);

,那么

num

的值会变成多少?()A.5B.100C.不确定D.程序出错24、C语言中的联合(

union

)数据类型可以节省内存空间。假设有

unionData{inti;floatf;};unionDatadata;

,然后给

data.i

赋值为5,再读取

data.f

的值,会得到什么结果?()A.0.0B.5.0C.不确定D.程序出错25、设有定义:intx=10,y=20,z=30;以下语句执行后,x、y、z的值是()if(x>y)z=x;x=y;y=z;A.x=10,y=20,z=30B.x=20,y=30,z=30C.x=20,y=30,z=10D.x=20,y=30,z=20二、判断题(本大题共10小题,每小题2分,共20分.有多个选项是符合题目要求的.)1、在C语言中,函数的默认返回值类型是int,如果函数没有明确指定返回值类型,则编译器会默认认为其返回int类型的值。()2、C语言中,strcat函数会在连接后的字符串末尾添加'\0'。()3、在C语言中,数组的下标从0开始,因此访问数组元素时,下标不能超过数组的长度减1,否则会导致数组越界访问的错误。()4、C语言中的

qsort

函数可以对任意类型的数组进行排序,但需要提供一个比较函数来定义元素的排序规则。()5、在C语言中,

calloc

函数分配的内存空间初始化为0。()6、在C语言中,函数的形参在函数调用结束后会被释放。()7、C语言中的

if-else

语句可以嵌套使用,形成复杂的条件判断结构。()8、在C语言中,使用fwrite函数向文件写入结构体数据时,需要注意字节对齐问题。()9、在C语言中,函数的默认返回值类型是

void

。()10、在C语言中,定义了一个共用体

unionData{intnum;doublefnum;};

,其占用的内存空间大小等于其中最大成员的大小。()三、编程题(本大题共5个小题,共25分)1、(本题5分)设计一个C语言程序,实现输入一个链表,删除链表中所有值为负数的节点,并输出删除后的链表。2、(本题5分)编写一个C语言程序,输入一个整数n,计算并输出n以内所有既能被3整除又能被7整除的数的个数。3、(本题5分)设计一个C语言程序,输入一个字符串,找出其中长度为3的子串,并输出。

温馨提示

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

评论

0/150

提交评论