玉溪师范学院《C语言程序设计》2021-2022学年第一学期期末试卷_第1页
玉溪师范学院《C语言程序设计》2021-2022学年第一学期期末试卷_第2页
玉溪师范学院《C语言程序设计》2021-2022学年第一学期期末试卷_第3页
玉溪师范学院《C语言程序设计》2021-2022学年第一学期期末试卷_第4页
玉溪师范学院《C语言程序设计》2021-2022学年第一学期期末试卷_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

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

《C语言程序设计》2021-2022学年第一学期期末试卷题号一二三四总分得分批阅人一、单选题(本大题共35个小题,每小题1分,共35分.在每小题给出的四个选项中,只有一项是符合题目要求的.)1、在C语言的结构体嵌套中,假设我们有结构体

structAddress{charstreet[50];charcity[20];};

structPerson{charname[20];intage;structAddressaddr;};

,如何正确访问

Person

结构体中

Address

结构体里的

city

成员?()A.

person.addr.city

B.

person->addr.city

C.

person.addr->city

D.以上都不对2、关于C语言中的预处理器指令,如

#define

,假设有

#definePI3.14

,然后在代码中使用

floatarea=PI*r*r;

,这里的

PI

会被如何处理?()A.在编译时被替换为3.14B.在运行时被替换为3.14C.保持不变,作为一个变量D.导致编译错误3、C语言中的

volatile

关键字用于修饰变量,其主要作用是什么?()A.提高变量的访问速度B.防止变量被优化器优化C.使变量可以被多个线程同时访问D.以上都不对4、若有定义:charstr[]="hello";则sizeof(str)的值是()A.5B.6C.10D.不确定5、对于以下C语言代码段:

intx=10;int*p=&x;intq=&p;

,那么通过

q

访问

x

的值是多少?()A.10B.不确定C.运行时错误D.06、在C语言中,设有函数

voidfun(int*p)

,在函数体内通过

*p

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

inta=10;fun(&a);

,那么在函数

fun

中改变

*p

的值,主函数中的

a

的值会发生变化吗?()A.会B.不会C.不一定D.以上都不对7、在C语言的输入输出函数中,以下关于scanf函数的描述,不正确的是()A.scanf函数可以从标准输入读取各种数据类型的值,并将其存储到相应的变量中B.在使用scanf函数时,需要严格按照指定的格式输入数据,否则可能导致读取错误C.scanf函数在读取字符串时,不会自动添加字符串结束符'\0'D.scanf函数的返回值是成功读取的数据项的个数8、C语言中的文件读写操作可以通过

fscanf

fprintf

函数实现。假设有以下代码:

FILE*fp;fp=fopen("data.txt","w");fprintf(fp,"%d%f",5,3.14);fclose(fp);

,再次以读模式打开文件并读取数据,以下操作正确的是:()A.使用

fscanf(fp,"%d%f",&num,&fnum);

可以正确读取写入的数据B.直接使用

fscanf(fp,"%d%f",num,fnum);

读取数据,无需使用取地址符C.读取数据时,文件指针会自动移动到文件开头D.无法读取之前写入的数据,因为读写方式不匹配9、C语言中,对于函数声明

voidfun(inta[],intn)

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

n

用于指定数组

a

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

a

实际上是以指针的形式传递给函数的D.函数无法返回数组10、在C语言的宏定义中,如果宏的参数在宏体中出现多次,可能会导致意外的结果。假设我们有宏

#defineSQUARE(x)x*x

,当我们使用

SQUARE(2+3)

时,结果会是什么?()A.25B.11C.15D.不确定11、C语言中的类型转换需要小心处理。假设有

floatf=3.14;inti=(int)f;

,那么

i

的值是多少?()A.3B.3.14C.4D.不确定12、假设有以下C语言代码段:

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

,此时

p1

指向的内存是否已被释放?()A.是B.否C.不确定D.以上都不对13、在C语言中,以下不能将字符串"hello"赋给数组s的语句是()A.chars[10]="hello";B.chars[]="hello";C.char*s="hello";D.chars[6]={'h','e','l','l','o'};14、若有定义:inta=3,b=2,c=1;则表达式a-b>c的值是()A.0B.1C.2D.315、在C语言的指针函数中,以下关于返回指针的函数的描述,不正确的是()A.返回指针的函数可以返回静态分配的内存地址,也可以返回动态分配的内存地址B.如果返回的是动态分配的内存地址,调用者需要使用free函数释放C.返回的指针不能指向函数内部的局部变量,因为函数结束后局部变量的存储空间会被释放D.返回指针的函数一定比返回值的函数效率高16、C语言中,关于文件操作,若有

FILE*fp;

,以下描述正确的是:()A.使用

fopen

函数打开文件时,若文件不存在会自动创建B.以"w"模式打开文件时,总是从文件开头写入数据C.读取文件内容时,必须先知道文件的大小D.关闭文件后,还可以继续对文件进行读写操作17、在C语言的函数递归调用中,假设我们定义了一个递归函数来计算阶乘。当输入的数值较大时,可能会出现什么问题?()A.函数执行速度非常快B.可能会导致栈溢出C.结果总是准确无误D.没有任何问题18、C语言中的选择结构(如

if-else

)使用广泛。假设有

inta=10,b=20;

,执行

if(a>b)printf("A");elseprintf("B");

,会输出什么?()A.AB.BC.先输出A,再输出BD.程序出错19、在C语言中,位运算可以对二进制位进行操作。假设定义了一个整数

intnum=5;

(二进制表示为0101),以下关于位运算的描述,哪一项是不正确的?()A.

num<<1

会将

num

的二进制位向左移动一位,结果为10(二进制1010)B.

num&3

(二进制0011)进行按位与运算,结果为1(二进制0001)C.位运算的速度比普通的算术运算慢D.可以使用位运算来设置或清除某些位20、若有定义:floata=3.14;则以下不能正确输出a的值的语句是()A.printf("%f",a);B.printf("%d",a);C.printf("%lf",a);D.printf("%e",a);21、C语言中的共用体(union)是一种特殊的数据类型。假设有以下共用体定义:

uniondata{intnum;floatfnum;};

,以下关于共用体的描述,正确的是:()A.共用体的成员同时占用内存空间,总大小为各成员大小之和B.同一时刻只能有一个成员的值是有效的C.共用体可以作为函数的返回值类型D.共用体的成员可以是不同类型的数组22、在C语言的复杂数据类型中,以下关于指针数组和数组指针的说法,不准确的是()A.指针数组是一个数组,其元素都是指针B.数组指针是指向一个数组的指针C.指针数组和数组指针在内存中的存储方式相同D.在使用指针数组和数组指针时,需要注意指针的运算和数组的下标操作23、若有定义:inta[3][4]={{1,2},{3,4},{5,6}};则a[1][1]的值是()A.1B.2C.3D.424、若有以下C语言代码:charstr1[]="Hello";char*str2="World";以下说法正确的是:()A.str1和str2存储方式相同B.str1可以修改其内容,str2不行C.str2可以修改其内容,str1不行D.str1和str2都可以修改其内容25、C语言中的指针数组和数组指针是两个容易混淆的概念。假设我们有以下定义:

int*ptr1[5];

int(*ptr2)[5];

,它们分别表示什么?()A.

ptr1

是一个指针数组,

ptr2

是一个数组指针B.

ptr1

是一个数组指针,

ptr2

是一个指针数组C.两者都是指针数组D.两者都是数组指针26、C语言中,若有函数定义

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

,以下关于函数调用的描述,正确的是:()A.调用该函数时,实参和形参的类型必须完全一致B.函数的返回值可以不被接收C.可以通过

func(a=1,b=2);

的方式进行调用D.函数调用时,参数传递都是值传递27、C语言中的位域(BitField)可以用于节省内存空间。假设有以下定义:

struct{unsignedintflag1:1;unsignedintflag2:2;}flags;

,以下关于位域的描述,正确的是:()A.整个结构体

flags

占用4个字节的内存空间B.可以对

flag1

flag2

进行单独的位操作C.位域的顺序和内存分配顺序一定相同D.位域不能作为函数的参数传递28、在C语言中,关于函数指针的定义和使用,假设有以下代码:

int(*funcPtr)(int,int);

,以下关于函数指针的描述,正确的是:()A.这是一个指向返回值为

int

,有两个

int

类型参数的函数的指针B.这是一个返回值为指针,参数为两个

int

的函数声明C.这是一个错误的函数指针定义,C语言中不允许这样定义D.这是一个指向

int

类型数组的指针29、以下C语言代码段的输出结果是什么?intnum=5;int*ptr=#*ptr=10;printf("%d",num);()A.5B.10C.0D.程序报错30、在C语言的预处理器指令中,

#define

用于定义常量和宏。假设定义了

#definePI3.14

#defineSQUARE(x)(x*x)

,以下关于预处理器指令的描述,哪一项是不正确的?()A.在程序中使用

PI

就相当于使用3.14B.宏

SQUARE(x)

在展开时会进行参数的替换和表达式的计算C.预处理器指令在编译前进行处理,会改变源代码的结构D.宏定义中的参数不需要指定数据类型31、C语言中的联合(

union

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

unionData{inti;floatf;};unionDatadata;

,然后给

data.i

赋值为5,再读取

data.f

的值,会得到什么结果?()A.0.0B.5.0C.不确定D.程序出错32、若有定义:inta[3][4]={{1,2},{3,4},{5,6}};,则a[1][1]的值是()A.2B.3C.4D.533、在C语言中,若要将一个整数转换为字符串,以下哪个函数是合适的?()A.itoa()B.sprintf()C.atoi()D.strtol()34、C语言中的

typedef

关键字常用于为数据类型定义新的名称。假设我们有

typedefintINTEGER;

,以下关于

INTEGER

的使用,哪一个是正确的?()A.

INTEGERa=5;

等价于

inta=5;

B.

INTEGER

不能用于声明数组C.

INTEGER

不能作为函数的返回类型D.以上都不对35、在C语言中,若有定义

inta[10]={1,2,3,4,5,6,7,8,9,10};

,以下关于数组的描述,正确的是:()A.可以通过

a[10]

访问数组的最后一个元素B.数组

a

的长度是可以动态改变的C.使用

for

循环遍历数组时,循环条件可以是

i<10

D.数组元素的存储顺序是从大到小二、判断题(本大题共10小题,每小题2分,共20分.有多个选项是符合题目要求的.)1、若有

inta=10;int&ref=a;

,通过

ref

对变量进行操作与直接对

a

进行操作效果相同。()2、在C语言中,结构体可以作为函数的返回值类型,但需要注意结构体的大小和内存布局。()3、

#defi

温馨提示

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

评论

0/150

提交评论