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

下载本文档

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

文档简介

自觉遵守考场纪律如考试作弊此答卷无效密自觉遵守考场纪律如考试作弊此答卷无效密封线第1页,共3页青海师范大学

《C语言程序设计基础》2022-2023学年第一学期期末试卷院(系)_______班级_______学号_______姓名_______题号一二三四总分得分一、单选题(本大题共20个小题,每小题1分,共20分.在每小题给出的四个选项中,只有一项是符合题目要求的.)1、若有定义:charc='A';,则以下表达式的值为66的是()A.c+1B.c++C.++cD.'B'2、以下C语言代码段的输出结果是什么?inta=7,b=3;printf("%d",a%b);()A.1B.2C.0D.程序报错3、若有定义:inta[10];,则以下对数组元素的正确引用是()A.a[10]B.a(5)C.a[3+5]D.a[10-10]4、在C语言的函数参数传递中,对于数组作为参数的情况,实际上传递的是什么?()A.数组的全部元素B.数组的第一个元素的地址C.数组的大小D.以上都不对5、有关C语言中的volatile关键字,以下陈述不正确的是()A.volatile关键字用于告诉编译器,变量的值可能会被意外地改变,不要进行优化B.多线程环境中共享的变量通常应该使用volatile关键字修饰C.使用volatile关键字修饰的变量,其读写操作一定是原子性的D.硬件寄存器通常使用volatile关键字修饰6、在C语言中,若有以下代码段:inta=5,b=3;intc=a+++b;执行完后,c的值是多少?()A.8B.9C.7D.107、在C语言中,若要将一个整数转换为字符串,以下哪个函数是合适的?()A.itoa()B.sprintf()C.atoi()D.strtol()8、对于C语言中的结构体,假设有如下定义

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

,创建一个该结构体类型的变量

structstudents;

,以下哪种方式可以正确地为结构体成员赋值?()A.

s.id=1;strcpy(,"Alice");s.score=90.5;

B.

s={1,"Alice",90.5};

C.

s->id=1;s->name="Alice";s->score=90.5;

D.

structstudents={1,"Alice",90.5};

9、若有定义:inta=5,b=3;则表达式a/b的值是()A.1B.1.666667C.1.0D.210、若有定义:chars[10],*p=s;,以下输入语句中正确的是()A.scanf("%s",s);B.scanf("%s",p);C.scanf("%c",s);D.scanf("%c",p);11、在C语言中,关于指针的概念和使用是一个重要且复杂的部分。假设我们有以下代码段:

inta=5;int*p=&a;

。以下关于指针

p

的描述,正确的是:()A.

*p

的值为5,

p

存储的是变量

a

的值B.

*p

的值为变量

a

的地址,

p

存储的是5C.

*p

的值为5,

p

存储的是变量

a

的地址D.

*p

的值为变量

a

的地址,

p

存储的也是变量

a

的地址12、在C语言中,以下代码的输出结果是什么?inta=10,b=20;if(a>b)printf("a大于b");elseprintf("a小于等于b");()A.a大于bB.a小于等于bC.程序报错D.无输出13、在C语言中,若有定义

structstudent{intnum;charname[20];};

,以下能正确定义结构体变量的是()A.

structstudents={101,"Tom"};

B.

structs={101,"Tom"};

C.

students={101,"Tom"};

D.

structstudent={101,"Tom"};

14、设有以下语句:charstr1[]="string",str2[8],*str3,*str4="string";则()是对库函数strcpy的不正确调用。A.strcpy(str2,"hello");B.strcpy(str3,"hello");C.strcpy(str1,"hello");D.strcpy(str4,"hello");15、C语言中的字符串比较函数

strcmp

用于比较两个字符串。假设我们有两个字符串

charstr1[]="Hello";

charstr2[]="HelloWorld";

,当使用

strcmp(str1,str2)

进行比较时,结果是什么?()A.0(表示相等)B.负数(表示

str1

小于

str2

)C.正数(表示

str1

大于

str2

)D.不确定16、在C语言中,动态内存分配是一项灵活但需要谨慎使用的操作。假设有如下代码

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

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

malloc

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

NULL

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

free

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

realloc

函数直接修改已经分配的内存空间的大小,而不需要重新分配17、C语言中的

typedef

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

typedefintINTEGER;

,以下关于

INTEGER

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

INTEGERa=5;

等价于

inta=5;

B.

INTEGER

不能用于声明数组C.

INTEGER

不能作为函数的返回类型D.以上都不对18、在C语言中,对于指针的操作,若有

int*p,a=10;p=&a;

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

*p

的值和

a

的值始终相等B.对

p

进行自增操作(

p++

),其指向的值会增加C.可以通过

*p=20;

来修改指针

p

所指向的内存地址D.指针

p

所占的内存空间大小与

int

型变量相同19、假设在C语言中有如下代码段

inta=5;int*p=&a;

,以下关于指针运算的描述,正确的是:()A.

p+1

指向的是下一个整数的地址B.对指针进行乘法运算(如

p*2

)是合法的C.可以直接将两个指针相加(如

p+p

)D.指针的减法运算(如

p1-p2

)结果的单位是字节20、在C语言的内存管理中,以下关于动态内存分配的描述,不正确的是()A.使用malloc函数分配的内存空间,如果不再使用,需要使用free函数释放,否则会造成内存泄漏B.calloc函数与malloc函数的功能相同,只是在分配内存时会将内存初始化为0C.realloc函数可以用于调整已分配内存的大小,但可能会导致数据丢失D.动态分配的内存位于代码段,其生命周期与程序的运行周期相同二、判断题(本大题共15小题,每小题2分,共30分.有多个选项是符合题目要求的.)1、C语言中的函数指针可以指向具有不同参数但返回值类型相同的函数。()2、在C语言中,使用#define定义的宏可以使用参数,这种宏被称为带参数的宏。()3、

inta[10];int*p=a;

,对

p

进行自增操作

p++;

,会使

p

指向数组的下一个元素。()4、在C语言中,使用while循环和do-while循环的效果是完全相同的。()5、在C语言中,当一个函数调用另一个函数时,会将调用函数的现场信息(如返回地址、寄存器值等)保存到栈中。()6、

strcpy

函数在目标字符串空间不足时会导致程序崩溃。()7、对于

intarr[5]={1,2,3,4,5};

,如果要将数组

arr

的所有元素的值都乘以2,可以使用一个循环逐个元素进行操作,而不能直接对数组名进行乘法运算。()8、C语言中的联合体(union)的成员变量在内存中是重叠存储的。()9、C语言中的指针可以指向函数、数组、结构体等各种数据类型,通过指针的间接访问,可以更加灵活地操作数据,提高程序的效率和功能。()10、在C语言中,使用rewind函数可以将文件指针移动到文件的开头。()11、在C语言中,使用setvbuf函数可以设置文件的缓冲区类型和大小。()12、C语言中的位运算可以直接对整数的二进制位进行操作,通过位运算可以实现一些高效的编程技巧,例如设置、清除或检测特定的位。()13、在C语言中,数组作为函数参数传递时,实际上传递的是数组的首地址,而不是整个数组的内容,因此在函数内部对数组元素的修改会影响到原数组。()14、在C语言中,

atoi

函数用于将字符串转换为整数,如果字符串不是有效的数字表示,其行为是未定义的。()15、C语言中,定义了一个函数指针

void(*funcPtr)(int);

,然后将一个返回值为

void

,参数为

int

的函数地址赋给它,调用时可以传递任何类型的参数。()三、编程题(本大题共6个小题,共30分)1、(本题5分)编写一个C语言程序,用户输入一个字符串,程序找出其中出现频率最高的字符,并输出该字符及其出现的次数。2、(本题5分)编写一个C语言程序,实现归并排序算法对一个整数数组进行排序,并输出排序前后数组的元素值。3、(本题5分)编写C程序,输入一个整数数组及数组长度,计算数组元素的平均值并输出。4、(本题5分)编写一个C语言程序,实现一个函数,接受一个整数数组和一个整数k,在数组中查找所有元素值在[k-5,k+5]范围内的元素。5、(本题5分

温馨提示

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

评论

0/150

提交评论