还剩13页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
c语言省二级笔试试题和答案
一、选择题(本题型共15题,每题2分,共30分)
1.以下关于C语言数据类型的描述中,错误的是()A.int类型的取值范围通常与系统位数有关,32位系统一般为-2^31~2^31-1B.float类型的精度比double类型低,且通常需要在数值后加f或F作为后缀C.char类型在内存中占1个字节,只能存储ASCII字符D.枚举类型enum的每个成员都是常量,其默认值从0开始依次递增
2.以下叙述中正确的是()A.C语言程序总是从main函数开始执行B.C语言程序中的注释只能出现在语句或表达式的后面C.一个C语言程序只能有一个函数D.C语言中,变量的定义必须在函数的开头
3.若有定义语句int a=5,b=10;则表达式a+b%3的值是()A.5B.6C.7D.
84.以下关于for循环的描述中,错误的是()A.for循环可以用于实现循环次数已知时的循环结构B.for循环的三个表达式(初始化、条件、增量)都可以省略C.在for循环中,continue语句的作用是结束整个循环D.for循环的语法结构为for表达式1;表达式2;表达式3循环体
5.以下关于数组的描述中,错误的是()A.数组是相同类型元素的集合,在内存中连续存储第1页共15页B.定义数组时,数组名后面的方括号中的值必须是正整数常量表达式C.可以对数组进行整体赋值,如int a
[3]={1,2,3};a={4,5,6};D.字符数组可以用字符串常量初始化,如char str[]=hello;
6.以下关于指针的描述中,正确的是()A.指针变量本身占用的内存空间大小与它所指向的数据类型无关B.指针变量可以直接指向函数,称为函数指针C.空指针是指指针变量的值为0,此时访问该指针指向的内存不会出错D.指针变量在定义时必须进行初始化,否则会产生未定义行为
7.以下关于函数的描述中,错误的是(A.函数可以没有返回值,此时返回类型应声明为voidB.函数参数传递方式有值传递和地址传递两种C.函数调用时,实参和形参的类型必须完全一致,否则会发生编译错误D.函数可以嵌套调用,即一个函数内部可以调用另一个函数
8.若有定义语句int arr
[4]={1,2,3,4};则以下不能正确表示数组元素arr
[2]的地址的是()A.arr
[2]B.arr+2C.arr
[0]+2D.arr
[2]
9.以下关于结构体的描述中,错误的是()A.结构体是一种自定义的数据类型,可以包含不同类型成员B.结构体变量的成员可以通过结构体变量名.成员名的方式访问C.结构体数组的每个元素都是结构体类型,访问时格式为数组名[索引].成员名D.结构体不能作为函数的参数进行传递
10.以下关于动态内存分配的描述中,错误的是()第2页共15页A.malloc函数的原型为void*mallocsize_t sizeB.calloc函数与malloc函数的区别是会将分配的内存初始化为0C.free函数用于释放动态分配的内存,释放后该内存不能再被访问D.使用malloc分配内存后,不需要手动释放,程序结束时系统会自动回收
11.以下关于字符串处理函数的描述中,正确的是()A.strcpy函数用于比较两个字符串的大小,返回值为0表示两个字符串相等B.strlen函数用于计算字符串的长度,包括字符串结束符\0C.strcat函数用于连接两个字符串,将源字符串拼接到目标字符串后面D.strcmp函数用于复制字符串,将源字符串复制到目标字符串中
12.若有定义语句int x=3,y=5;则执行语句x+=y--;后,x和y的值分别是()A.x=8,y=5B.x=8,y=4C.x=7,y=5D.x=7,y=
413.以下关于switch语句的描述中,正确的是()A.switch语句的表达式可以是任何基本数据类型B.case后面的常量表达式的值必须互不相同C.每个case分支后必须有break语句,否则会产生case穿透现象D.switch语句中不能包含default分支
14.以下关于数组作为函数参数的描述中,正确的是()A.当数组名作为函数参数时,实际上传递的是数组的首地址B.在函数内部,可以通过sizeofarr/sizeofarr
[0]计算数组的长度C.函数形参中的数组定义时可以指定大小,如void funcint arr
[5]第3页共15页D.以上描述都正确
15.以下关于C语言预处理指令的描述中,错误的is()A.#define指令用于定义宏,宏名通常用大写字母表示B.#include指令用于包含头文件,有两种形式#include头文件名和#include头文件名C.#ifdef指令用于判断某个宏是否已定义,若已定义则编译后面的代码D.预处理指令以#开头,在编译阶段进行处理,在程序运行时会执行预处理指令
二、填空题(本题型共15题,每题2分,共30分)
1.在C语言中,变量的存储类别包括自动变量、静态变量、______和寄存器变量
2.表达式5324的值为______(填1或0)
3.若int a=10,b=3;则a/b的结果为______,a%b的结果为______
4.for循环的一般形式为for表达式1;表达式2;表达式3循环体,其中表达式1是______,表达式2是______,表达式3是______
5.数组元素在内存中是连续存储的,数组名代表数组的______,即数组第一个元素的地址
6.指针变量的类型由它所指向的变量类型决定,若有int*p;则p指向的是______类型的变量
7.函数的______是指函数返回值的类型,函数的______是指函数接收的参数类型和个数
8.结构体类型的定义形式为struct结构体名{成员列表};,其中成员列表是由若干个______组成的第4页共15页
9.若有char str[]=C program;则strlenstr的值为______,strcpystr,hello后str的值为______
10.动态内存分配函数malloc和calloc区别在于malloc只分配内存空间,不______;calloc分配内存空间并将所有字节初始化为______
11.若有int arr
[3]
[2]={{1,2},{3,4},{5,6}};则arr
[1]
[0]的值为______,arr
[2]
[1]的值为______
12.函数调用时,若传递的是实参的地址,则称为______传递,此时函数可以通过修改形参的值来影响实参的值
13.若有int x=5;int p=x;则p的值为______,p的值为______(假设x的地址为0x123456)
14.在C语言中,字符串是用______结束的字符序列,通常用______类型数组来存储
15.递归函数的执行过程中,每次调用都会在______中为新的参数和局部变量分配空间,直到满足递归终止条件三;程序阅读题(本题型共5题,每题4分,共20分)阅读下列程序,写出程序运行时的输出结果
1.#include stdio.hint main{int a=10,b=20;ifab{printfab\n;}else{printfa=b\n;}第5页共15页return0;}输出结果_________________
2.#include stdio.hint addintx,int y{return x+y;}int main{int sum=add5,3;printfsum=%d\n,sum;return0;}输出结果_________________
3.#include stdio.hint main{int i,sum=0;fori=1;i=5;i++{sum+=i;}printfsum=%d\n,sum;return0;}输出结果_________________
4.#include stdio.hint main{第6页共15页char c=A;int i;fori=0;i5;i++{printf%c,c+i;}printf\n;return0;}输出结果_________________
5.#include stdio.hvoid print_numint n{ifn0{print_numn-1;printf%d,n;}}int main{print_num3;return0;}输出结果_________________
四、程序填空题(本题型共5题,每题4分,共20分)请在程序的空白处填入适当的语句或表达式,使程序完成相应功能
1.以下程序功能是计算1到10的所有偶数之和,请补全程序#include stdio.h第7页共15页int main{int sum=0,i;fori=2;
①;i+=2{sum+=
②;}printfSum ofeven numbersfrom1to10:%d\n,sum;return0;}
①处应填_________________
②处应填_________________
2.以下程序功能是找出数组中的最大值,请补全程序#include stdio.h#define N5int main{int arr[N]={3,1,4,2,5};int max,i;max=arr
[0];fori=1;iN;i++{ifarr[i]
①{max=
②;}}printfThe maximumnumber is:%d\n,max;return0;}第8页共15页
①处应填_________________
②处应填_________________
3.以下程序功能是判断一个整数是否为素数(只能被1和自身整除大于等于2的整数),请补全程序#include stdio.hint is_primeint n{int i;ifn=1{return0;}fori=2;i=
①;i++{ifn%i==0{return
②;}}return
③;}int main{int num=7;ifis_primenum{printf%d isa prime number\n,num;}else{printf%d isnot aprimenumber\n,num;}return0;第9页共15页}
①处应填_________________
②处应填_________________
③处应填_________________
4.以下程序功能将字符串hello world中的空格替换为下划线,请补全程序#include stdio.h#include string.hint main{char str[]=hello world;int len=strlenstr;int i;fori=0;ilen;i++{ifstr[i]==
①{str[i]=
②;}}printfModified string:%s\n,str;return0;}
①处应填;_________________
②处应填_________________
5.以下程序功能是计算n的阶乘(n!=1×2×…×n),请补全程序(使用递归函数)#include stdio.h第10页共15页long factorialint n{long result;ifn==0n==1{result=1;}else{result=n*
①;}return result;}int main{intn=5;long fact=factorialn;printf%d!=%ld,n,fact;return0;}
①处应填_________________
五、程序改错题(本题型共3题,每题5分,共15分)以下程序中存在错误,请找出错误并改正(每行最多一处错误)
1.#include stdio.hint main{int a=10,b=5;//计算a除以b的商和余数int quotient=a/b;int remainder=a%b;第11页共15页printfQuotient:%d,Remainder:%d\n,quotient,remainder;return0;}错误及改正_________________________________________________
2.#include stdio.hint main{int arr
[3]={1,2,3};forint i=0;i=3;i++{printf%d,arr[i];//此处访问越界}return0;}错误及改正_________________________________________________
3.#include stdio.hvoid swapintx,int y{int temp=x;x=y;y=temp;//此处为值传递,无法交换实参的值}int main{int a=3,b=5;swapa,b;printfa=%d,b=%d\n,a,b;return0;}第12页共15页错误及改正_________________________________________________
六、程序设计题(本题型共2题,每题10分,共20分)
1.编写一个函数,功能是计算两个正整数a和b的最大公约数(GCD),并在主函数中调用该函数输出结果函数原型int gcdinta,int b;要求使用辗转相除法(欧几里得算法)实现该函数
2.编写一个程序,功能是输出100以内的所有素数(每行打印5个,用空格分隔素数)答案汇总
一、选择题
1.C
2.A
3.B
4.C
5.C
6.B
7.C
8.D
9.D
10.D
11.C
12.B
13.B
14.D
15.D
二、填空题
1.外部变量
2.
13.3,
14.初始化表达式,条件表达式,增量表达式
5.首地址
6.int
7.返回类型,参数列表或参数类型与个数
8.成员声明
9.10,hello
10.初始化,
011.3,612地址
13.5,0x
12345614.\0,char
15.栈
三、程序阅读题
1.a=b
2.sum=
83.sum=
154.A BC DE
5.123
四、程序填空题
1.
①i=10
②i
2.
①max
②arr[i]
3.
①sqrtn或i*i=n
②0
③
14.
①②_
5.
①factorialn-1
五、程序改错题第13页共15页
1.无错误(或无需修改)
2.错误:for循环条件i=3改正:forinti=0;i3;i++
3.错误:swap函数参数为值传递改正:voidswapint*x,int y{int temp=x;x=y;*y=temp;}
六、程序设计题
1.参考代码:int gcdinta,int b{whileb!=0{int temp=a%b;a=b;b=temp;}return a;}int main{inta=12,b=18;printfGCD of%d and%d is%d\n,a,b,gcda,b;return0;}
2.参考代码:#include stdio.h#include math.hint is_primeint n{ifn=1return0;forint i=2;i=sqrtn;i++{ifn%i==0return0;第14页共15页}return1;}int main{int count=0;forint i=2;i=100;i++{ifis_primei{printf%d,i;count++;ifcount%5==0printf\n;}}return0;}第15页共15页。
个人认证
优秀文档
获得点赞 0