还剩9页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
c初赛试题及答案C语言程序设计初赛模拟试题及参考答案
一、单项选择题(共30题,每题1分)(以下各题均只有一个正确答案,将正确答案的字母填入括号内)以下关于C语言程序结构的描述,正确的是()A.一个C程序必须有且仅有一个main函数B.函数定义可以嵌套,即一个函数内部可以定义另一个函数C.所有语句必须以分号结尾,包括main函数内的一条语句D.注释只能单行书写,以//开头以下选项中,合法的C语言变量名是()A.2nd B.int C._abc D.a+b若有定义int a=5,b=10;,则表达式a+=b%3执行后,a的值为()A.5B.6C.10D.12以下关于if-else语句的描述,错误的是()A.if语句可以单独使用,无需搭配elseB.else语句必须与最近的未配对if语句配对C.嵌套if语句中,else的位置会影响执行逻辑D.当if条件为假时,直接执行else后的语句以下循环结构中,循环体至少执行一次的是()A.for inti=0;i5;i++{}B.while0{}C.do{printfHello;}while0;D.for inti=5;i0;i--{}以下函数调用中,属于“值传递”方式的是()第1页共11页A.void funcint a{a++;},调用funcxB.void funcint*a{*a++;},调用funcxC.void funcint a{a++;},调用funcxD.void funcint a[]{a
[0]++;},调用funcarr以下关于数组的描述,错误的是()A.数组元素的下标从0开始B.一维数组可以直接用=赋值,如int a
[3]={1,2,3};C.二维数组int a
[2]
[3]的行下标范围是0~1,列下标范围是0~2D.数组名作为函数参数时,传递的是数组的首地址若有定义char c=A;,则c在内存中占()字节A.1B.2C.4D.取决于编译器以下关于指针的描述,正确的是()A.指针变量可以赋值为NULLB.指针变量存储的是变量的类型C.指针变量可以直接进行加减运算,如p++D.指向不同类型的指针不能直接赋值以下函数中,用于打开文件的是()A.fclose B.fread C.fopen D.fprintf若int x=3;,则表达式x2x+1:x-1的值为()A.2B.3C.4D.5以下关于static关键字的描述,错误的是()A.静态局部变量在函数调用结束后不释放内存B.静态全局变量只能在定义它的文件中访问C.static修饰的函数只能在本文件中调用D.静态变量的初始值默认是0第2页共11页以下结构体定义正确的是()A.struct Student{int id;char name
[20];};B.struct{int id;char name
[20];};C.struct Student{int id;char name
[20];struct;};D.typedef struct Student{int id;char name
[20];};若有int*p=int*malloc4;,则p指向的内存块大小为()字节A.1B.2C.4D.不确定以下关于#define宏定义的描述,正确的是()A.宏定义可以带参数,如#define ADDa,b a+bB.宏定义中的参数需要加括号,避免优先级问题C.宏定义是在编译阶段处理的D.宏定义的作用域是整个程序若int a
[5]={1,2,3};,则a
[3]的值为()A.0B.1C.3D.不确定以下函数中,能正确计算1到n之和的是()A.int sumintn{int s=0;for inti=1;i=n;i++s+=i;return s;}B.int sumintn{int s=0;for inti=0;i n;i++s+=i;return s;}C.int sumintn{int s=0;while n0{s+=n--;}return s;}D.以上函数均正确以下关于break和continue的描述,正确的是()A.break用于跳出循环,continue用于跳过当前循环体剩余语句第3页共11页B.break和continue都只能用在for循环中C.在switch语句中不能使用breakD.break和continue都能用于while循环若char str[]=Hello;,则strlenstr的值为()A.5B.6C.0D.不确定以下关于结构体指针的描述,错误的是()A.结构体指针可以通过-访问成员,如p-idB.结构体指针赋值时,需指向已分配内存的结构体变量C.结构体指针作为函数参数时,传递的是地址D.结构体指针不能直接用=比较是否为NULL若int x=0,y=1;,则表达式x||y x的值为()A.0B.1C.2D.不确定以下关于const关键字的描述,正确的是()A.const int a定义的变量a不可修改B.const int*p定义的指针p指向的变量不可修改C.int*const p定义的指针p本身不可修改D.const修饰的变量必须初始化以下关于递归函数的描述,错误的是()A.递归函数必须有终止条件B.递归函数可能导致栈溢出C.递归函数的效率通常高于非递归函数D.递归本质是函数自己调用自己若int a=1,b=2;,则执行printf%d,a bb:a;的输出结果是()A.1B.2C.3D.0第4页共11页以下关于动态内存分配的描述,正确的是()A.malloc分配的内存需要用free释放B.malloc返回的指针类型是void*,使用时需强制转换C.calloc分配的内存初始化为0D.以上均正确若int a
[3]
[2]={{1,2},{3,4},{5,6}};,则a
[2]
[1]的值为()A.2B.4C.5D.6以下关于文件操作的步骤,正确的是()A.打开文件→读写数据→关闭文件B.读写数据→打开文件→关闭文件C.打开文件→关闭文件→读写数据D.以上均可以下关于typedef的描述,正确的是()A.typedef用于定义新的数据类型B.typedef可以为基本数据类型命名C.typedef intInteger;定义后,Integer a;等价于inta;D.以上均正确若int*p=int*malloc4*sizeofint;,则p可指向()个int类型的元素A.1B.4C.不确定D.编译错误以下关于C语言注释的描述,正确的是()A.单行注释以/*开头,*/结尾B.多行注释可以嵌套C.注释可以出现在字符串内部D.注释不参与程序编译,不影响执行第5页共11页
二、多项选择题(共20题,每题2分)(以下各题均有多个正确答案,将所有正确答案的字母填入括号内,多选、少选、错选均不得分)以下属于C语言基本数据类型的有()A.int B.float C.char D.void以下关于变量作用域的描述,正确的有()A.局部变量的作用域是定义它的函数或块B.全局变量的作用域是整个程序C.静态局部变量的作用域是整个程序D.静态全局变量的作用域是定义它的文件以下关于函数参数传递方式的有()A.传值传递B.传址传递C.传数组D.传结构体以下关于数组的描述,正确的有()A.数组名是常量,不能被赋值B.一维数组可以通过sizeof计算元素个数,如sizeofa/sizeofa
[0]C.二维数组在内存中按行优先存储D.数组可以直接用==比较是否相等以下函数中,属于字符串处理函数的有()A.strlen B.strcpy C.printf D.strcmp以下关于for循环的描述,正确的有()A.循环变量的初始化、条件判断、增值操作均可省略B.for;;是死循环C.for循环中,条件表达式必须是关系表达式D.for循环的三个部分用分号分隔第6页共11页以下关于指针的描述,正确的有()A.指针变量存储的是另一个变量的地址B.指针可以指向不同类型的变量C.空指针可以用NULL表示D.指针可以进行加减运算,如p+2以下关于结构体的描述,正确的有()A.结构体可以嵌套定义B.结构体变量可以直接用=整体赋值C.结构体指针可以访问结构体成员D.结构体大小等于各成员大小之和以下关于#include预处理指令的描述,正确的有()A.#include header.h用于包含当前目录下的头文件B.#include header.h用于包含系统头文件C.头文件可以防止重复包含D.#include指令在编译前处理以下关于switch语句的描述,正确的有()A.case后面的值必须是常量表达式B.switch的条件表达式类型只能是整数类型C.每个case后必须有break,否则会顺序执行后续caseD.default子句可以省略以下关于static的作用,正确的有()A.延长局部变量的生命周期B.限制全局变量的作用域C.修饰函数,限制函数作用域D.初始化静态变量为0第7页共11页以下关于动态内存分配的函数有()A.malloc B.calloc C.realloc D.freeall以下关于const和#define的区别,正确的有()A.const定义的是变量,有类型,可进行类型检查B.#define定义的是宏,无类型,直接替换C.const变量在编译时确定值,宏在预处理时替换D.const变量占用内存,宏不占用以下关于递归函数的描述,正确的有()A.递归函数的终止条件是避免无限递归B.递归可能导致栈溢出问题C.递归函数的代码通常比非递归简洁D.递归的本质是将问题分解为更小的子问题以下关于文件打开模式的描述,正确的有()A.r表示只读打开文件B.w表示只写打开文件,若文件不存在则创建C.a表示追加写,文件不存在则创建D.r+表示读写打开文件以下关于数组越界的描述,正确的有()A.C语言不检查数组越界B.数组越界可能导致程序崩溃C.数组越界可能读取到随机数据D.安全的数组访问应确保下标在有效范围内以下关于函数返回值的描述,正确的有()A.void类型函数无返回值B.函数可以通过return语句返回一个值第8页共11页C.若函数未显式return,返回值是不确定的D.函数返回值的类型必须与声明一致以下关于typedef的应用,正确的有()A.typedef intLength;将int重定义为LengthB.typedef struct{int x;int y;}Point;定义结构体类型PointC.typedef int*Funcint;定义函数指针类型FuncD.typedef不能为联合体定义别名以下关于C语言预处理命令的描述,正确的有()A.#define可以定义带参数的宏B.#ifdef用于判断宏是否已定义C.#ifndef用于判断宏是否未定义D.#include可以包含其他预处理命令以下关于内存的描述,正确的有()A.变量的存储类别决定其内存分配方式B.局部变量存储在栈区C.全局变量存储在静态区D.malloc分配的内存存储在堆区
三、判断题(共20题,每题1分)(对的打“√”,错的打“×”)C语言程序的执行入口是main函数()变量未初始时,全局变量的默认值是0,局部变量的默认值是随机值()inta=5;a++;执行后,a的值是6()for循环中,continue语句会跳过循环体中剩余语句,并直接进入下一次循环条件判断()第9页共11页数组名作为函数参数时,是值传递()char类型在内存中占1个字节,可存储的字符范围是0~255()static关键字修饰的全局变量,其作用域限制在定义它的文件中()结构体变量可以直接用=赋值,如structStudents1,s2;s1=s2;()指针变量的大小是固定的,与指向的变量类型无关()fopen函数成功打开文件后返回NULL指针()#define ADDa,b a+b,执行ADD2,3*4的结果是20()二维数组inta
[2]
[3],其总元素个数是6个()const int*p=a;*p=10;是合法的操作()return语句必须出现在函数的一行()free函数可以释放malloc和calloc分配的内存()注释中的内容会被编译器忽略()函数参数中的inta[]与int*a是等价的()递归函数的效率一定比非递归函数低()realloc函数可以调整动态分配内存的大小()C语言允许函数嵌套定义()
四、简答题(共2题,每题5分)简述C语言中malloc和calloc的区别简述数组和指针的关系,以及数组名作为函数参数时的特性参考答案
一、单项选择题1-10A CB DC AB A A C11-20C C A CC AAAB D第10页共11页21-30B CCAC DA DB D
二、多项选择题ABCD
2.ABD
3.ABCD
4.ABC
5.ABDABD
7.ACD
8.ABC
9.ABD
10.ABDABC
12.ABC
13.ABCD
14.ABCD
15.ABCDABCD
17.ABC
18.ABC
19.ABC
20.ABCD
三、判断题√
2.√
3.√
4.√
5.××
7.√
8.√
9.√
10.×√
12.√
13.×
14.×
15.√√
17.√
18.×
19.√
20.×
四、简答题malloc和calloc的区别mallocsize分配指定字节数的连续内存,返回指向首地址的指针,内存内容不确定callocn,size分配n个大小为size字节的连续内存,初始化为0,返回首地址指针相同点均为动态内存分配函数,需用free释放;不同点calloc自动初始化内存为0,参数形式不同(n,size vssize)数组和指针的关系及数组名作为函数参数的特性关系数组名本质是指向首元素的指针常量,可通过指针访问数组元素(如a[i]等价于*a+i)数组名作为函数参数时传递的是数组首地址(指针传递),而非数组副本;函数内无法通过sizeof获取数组长度(需传长度参数);可通过指针操作修改原数组元素第11页共11页。
个人认证
优秀文档
获得点赞 0