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

下载本文档

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

文档简介

学校________________班级____________姓名____________考场____________准考证号学校________________班级____________姓名____________考场____________准考证号…………密…………封…………线…………内…………不…………要…………答…………题…………第2页,共2页许昌学院《C语言程序设计》

2021-2022学年第一学期期末试卷题号一二三四总分得分批阅人一、单选题(本大题共25个小题,每小题1分,共25分.在每小题给出的四个选项中,只有一项是符合题目要求的.)1、C语言中,若有定义

enumdays{MON,TUE,WED,THU,FRI,SAT,SUN};

,那么

enumdaystoday=TUE;

之后,执行

today++;

today

的值会变成多少?()A.WEDB.不确定C.运行时错误D.以上都不对2、在C语言中,对于

void

类型的指针,以下关于它的使用和限制的描述,哪一个是正确的?()A.可以指向任何类型的变量B.不能进行解引用操作C.可以进行算术运算D.以上都不对3、C语言中,关于动态内存分配,若使用

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

,以下描述正确的是:()A.分配的内存空间会自动初始化为0B.如果内存分配失败,

malloc

函数返回

NULL

C.可以使用

free(p)

释放部分已分配的内存D.不需要释放通过

malloc

分配的内存,程序结束时会自动释放4、若有定义:inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};,则((a+1)+2)的值是()A.5B.6C.8D.95、假设在C语言中有以下结构体定义

structstudent{intid;charname[20];floatscore;};

,以下关于结构体的描述,正确的是:()A.可以直接将一个结构体变量赋值给另一个结构体变量B.结构体成员的访问可以使用

struct.student.id

的形式C.结构体数组中的元素不能通过指针进行访问D.结构体变量所占的内存空间是其各成员所占空间之和6、在C语言中,关于动态内存分配的错误处理,假设使用

malloc

分配内存,以下关于错误处理的描述,哪一项是不正确的?()A.分配内存失败时,

malloc

返回

NULL

,可以通过判断是否为

NULL

来进行错误处理B.忽略对

malloc

返回值的检查,可能导致程序崩溃C.即使内存分配成功,也可能因为后续的操作导致内存访问错误D.一旦内存分配成功,就无需再担心内存相关的错误7、若有定义:floata=3.14;则以下不能正确输出a的值的语句是()A.printf("%f",a);B.printf("%d",a);C.printf("%lf",a);D.printf("%e",a);8、C语言中的指针数组是指针的一种特殊用法。假设有以下定义:

int*ptrArr[3];

,以下关于指针数组的描述,正确的是:()A.这是一个可以存储3个整数的数组B.这是一个可以存储3个指针的数组,每个指针指向一个整数C.这是一个错误的定义,C语言中不允许这样定义指针数组D.这是一个指针,指向一个包含3个整数的数组9、若有定义:inta=3,b=2,c=1;,则表达式a-b>c的值为()A.0B.1C.2D.-110、C语言中,关于递归函数,假设有以下定义:

intfactorial(intn){if(n==0||n==1)return1;elsereturnn*factorial(n-1);}

,那么

factorial(5)

的值是多少?()A.5B.15C.120D.程序会出错11、有关C语言中的volatile关键字,以下陈述不正确的是()A.volatile关键字用于告诉编译器,变量的值可能会被意外地改变,不要进行优化B.多线程环境中共享的变量通常应该使用volatile关键字修饰C.使用volatile关键字修饰的变量,其读写操作一定是原子性的D.硬件寄存器通常使用volatile关键字修饰12、若有定义:charc='A';,则以下表达式的值为66的是()A.c+1B.c++C.++cD.'B'13、C语言中的动态内存分配函数

malloc

free

用于在运行时分配和释放内存。假设有以下代码片段:

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

,以下关于这段代码的描述,正确的是:()A.如果内存分配成功,

ptr

将指向一段连续的、可存储5个整数的内存空间B.分配的内存会自动初始化为0C.即使内存分配失败,

ptr

也不会为

NULL

,需要通过其他方式判断分配是否成功D.使用完分配的内存后,不需要使用

free(ptr)

释放,操作系统会自动回收14、C语言中的文件读写模式有多种,如只读、只写、读写等。假设要以读写方式打开一个文件,以下关于文件模式的描述,哪一项是错误的?()A.使用

fopen("file.txt","r+")

可以以读写方式打开一个文本文件B.在读写模式下,可以同时进行读取和写入操作C.读写模式下,文件指针的初始位置在文件开头D.以读写模式打开一个不存在的文件会导致错误15、在C语言的存储类别中,以下关于register变量的描述,不正确的是()A.register变量通常用于存储频繁使用的变量,以提高访问速度B.register变量的数量是有限制的,具体数量由编译器决定C.可以对register变量取地址D.register变量不一定真的被存储在寄存器中,取决于编译器的优化16、C语言中的函数可以递归调用自身。假设有以下递归函数定义:

intfactorial(intn){if(n==0||n==1)return1;elsereturnn*factorial(n-1);}

,调用

factorial(5)

,以下关于函数返回值的描述,正确的是:()A.5B.15C.120D.程序会产生运行时错误,因为递归次数过多17、C语言中的条件编译指令

#ifdef

#ifndef

常用于根据条件决定是否编译某段代码。假设我们定义了一个宏

DEBUG

,在代码中使用

#ifdefDEBUG

#ifndefDEBUG

,以下关于它们的作用和效果的描述,哪一个是正确的?()A.

#ifdefDEBUG

:如果定义了

DEBUG

宏,则编译后面的代码;

#ifndefDEBUG

:如果没有定义

DEBUG

宏,则编译后面的代码B.

#ifdefDEBUG

:如果没有定义

DEBUG

宏,则编译后面的代码;

#ifndefDEBUG

:如果定义了

DEBUG

宏,则编译后面的代码C.两者作用相同,都是根据是否定义了

DEBUG

宏来决定是否编译后面的代码D.以上都不对18、若有定义:chars[100];以下不能正确把字符串"HelloWorld"存入数组s的语句是()A.gets(s);B.scanf("%s",s);C.strcpy(s,"HelloWorld");D.strcat(s,"HelloWorld");19、若有定义:charstr[]="hello";则sizeof(str)的值是()A.5B.6C.10D.不确定20、在C语言中,指针数组和数组指针是不同的概念。假设定义了

int*ptr1[5];

int(*ptr2)[5];

,以下关于它们的描述,哪一项是错误的?()A.

ptr1

是一个指针数组,每个元素都是一个指针B.

ptr2

是一个数组指针,指向一个包含5个整数的数组C.对

ptr1

ptr2

的赋值和使用方式是相同的D.可以通过

ptr2

来访问数组中的元素21、在C语言的链表操作中,假设我们有一个简单的单向链表,每个节点包含一个整数数据和一个指向下一个节点的指针。当要删除链表中的一个节点时,需要注意哪些问题?()A.只需要修改要删除节点的指针B.要修改前一个节点的指针指向删除节点的下一个节点C.不需要做任何操作,系统会自动处理D.以上都不对22、若有定义:intx=3,y=2;则表达式x=(y++)+x的值是()A.5B.6C.7D.823、在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};

)24、若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()A.2.500000B.2.750000C.3.500000D.0.00000025、在C语言中,若有定义

charstr[20]="Hello";

,以下能正确将字符串

str

输出的是()A.

printf("%s",&str);

B.

printf("%s",str);

C.

printf("%c",&str);

D.

printf("%c",str);

二、判断题(本大题共10小题,每小题2分,共20分.有多个选项是符合题目要求的.)1、在C语言中,使用fflush函数可以强制将缓冲区中的数据写入文件。()2、C语言中的三目运算符

?:

的结合性是从右向左。()3、在C语言中,使用strcpy函数复制字符串时,目标字符串的空间必须足够大,否则会导致缓冲区溢出。()4、在C语言中,使用fscanf函数从文件中读取数据时,格式控制符必须与要读取的数据类型相匹配。()5、定义一个函数

intmultiply(inta,intb){returna*b;}

,然后在主函数中调用

multiply(3,4)

,返回的值一定是12。()6、在C语言中,使用toupper函数可以将字符串中的所有小写字母转换为大写字母。()7、在

switch

语句中,

case

后面的值必须是连续的整数。()8、在C语言中,预处理器指令#define可以用来定义常量和宏函数。()9、C语言中的预处理器指令可以实现条件包含,根据不同的条件决定是否包含某个头文件。()10、C语言中的枚举类型中的枚举常量默认从0开始递增。()三、编程题(本大题共5个小题,共25分)1、(本题5分)编写C程序,输入一个字符串,判断其中是否存在连续的三个相同字符。2、(本题5分)编写一个C语言程序,输入一个整数数组,找出其中所有元素的方差(保留两位小数)并输出。3、(本题5分)编写一个C语言程序,对一个链表进行分组,每k个节点为一组进行反转。4、(本题5分)编写一个C语言程序,

温馨提示

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

评论

0/150

提交评论