【计算机类职业资格】二级C语言分类模拟题574及答案解析.doc

上传人:roleaisle130 文档编号:1325603 上传时间:2019-10-17 格式:DOC 页数:14 大小:67KB
下载 相关 举报
【计算机类职业资格】二级C语言分类模拟题574及答案解析.doc_第1页
第1页 / 共14页
【计算机类职业资格】二级C语言分类模拟题574及答案解析.doc_第2页
第2页 / 共14页
【计算机类职业资格】二级C语言分类模拟题574及答案解析.doc_第3页
第3页 / 共14页
【计算机类职业资格】二级C语言分类模拟题574及答案解析.doc_第4页
第4页 / 共14页
【计算机类职业资格】二级C语言分类模拟题574及答案解析.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、二级 C 语言分类模拟题 574 及答案解析(总分:46.50,做题时间:90 分钟)一、选择题(总题数:30,分数:46.50)1.有以下程序: #includestdio.h #includestdlib.h int fun(int n) int *p; p=(int*)malloc(sizeof(int); *p=n; return *p; main() int a; a=fun(10); printf(“%d/n“,a+fun(10); 程序运行后的输出结果是_。(分数:1.00)A.0B.10C.20D.出错2.以下能正确定义一维数组的选项是_。(分数:2.00)A.int a5=0

2、, 1, 2, 3, 4, 5);B.char a=0, 1, 2, 3, 4, 5);C.char a=“A“, “B“, “C“;D.int a5=“0123“;3.下面说明不正确的是 _ 。(分数:1.00)A.chara10=“china“;B.chara10,*p=a;p=“chiua“;C.char*a;a=“china“;D.chara10,*p;p=a=“china“;4.以下叙述中正确的是_。(分数:1.00)A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C.在一个程序中当对文件进

3、行了写操作后,必须先关闭该文件然后再打开,才能读到第 1 个数据D.C 语言中的文件是流式文件,因此只能顺序存取数据5.下列程序的输出结果是_。 #includestdio.h void main() int a=0,b=1,c=2; if(+a0|+b0)+c; pfintf(“%d,%d,%d“,a,b,c); (分数:2.00)A.0,1,2B.1,2,3C.1,1,3D.1,2,26.有以下程序: #includestdio.h main() struct nodeint n; struct node*next; *p; struct node x3=2, x+1, 4, x+2, 6

4、, NULL; p=x; printf(“%d, “, p-n); printf(“%d/n“, p-next-n ); 程序运行后的输出结果是_。(分数:1.00)A.2,3B.2,4C.3,4D.4,67.以下说法正确的是_。(分数:2.50)A.宏定义是 C 语句,要在行末加分号B.可以使用#undefine 提前结束宏名的使用C.在进行宏定义时,宏定义不能嵌套D.双引号中出现的宏名也要进行替换8.设有定义: int a=1,b=2,c=3; 以下语句中执行效果与其他三个不同的是_。(分数:2.00)A.if(ab)c=a;a=b;b=c;B.if(ab)c=a,a=b,b=c;C.if

5、(ab)c=a,a=b,b=c;D.if(ab)c=a;a=b;b=c;9.有以下程序: #includestdio.h double f(double x); main() double a=0; int i; for(i=0;i30;i+=10)a+=f(double)i); printf(“%3.0f/n“,a); double f(double x) return x*x+1; 程序运行后的输出结果是_。(分数:1.00)A.500B.401C.503D.140410.有以下程序: #include stdio.h #include string.h typedef struct st

6、u char name10; char gender; int score; STU; void f(STU *c) strcpy(c-name,“Qian“); c-gende r= “f“; e-score = 350; main( ) STU a = “Zhao“, “m“, 290, b; b = a; f( printf(“%s,%c,%d,“, a.name, a.gender, a.score); printf(“%s,%c,%d/n“, b.name, b.gender, b.score); 程序运行后的输出结果是_。(分数:1.00)A.Zhao,m,290,Qian,f,3

7、50B.Zhao,m,290,Qian,m,290C.Zhao,m,290,Zhao,m,290D.Zhao,m,290,Qian,m,35011.有定义语句:int b;char c10;,则正确的输入语句是_。(分数:2.00)A.scanf(“%d%s“,B.scanf(“%d%s“,C.scanf(“%d%s“,b,c);D.scanf(“%d%s“,b,12.有以下程序 #includestdio.h main() FILE*fp; int a10=1,2,3,0,0,i; fp=fopen(“d2.dat“,“wb“); fwrite(a,sizeof(int),5,fp); fw

8、rite(a,sizeof(int),5,fp); fclose(fp); fp=fopen(“d2.dat“,“rb“); fread(a,sizeof(int),10,fp); fclose(fp); for(i=0;i10;i+) printf(“%d,“,ai); 程序的运行结果是_。(分数:1.00)A.1,2,3,0,0,1,2,3,0,0,B.1,2,3,1,2,3,0,0,0,0,C.123,0,0,0,0,123,0,0,0,0,D.1,2,3,0,0,0,0,0,0,0,13.有以下程序段: char name20; int num; scanf(“name=%s num=

9、%d“,name, 当执行上述程序段,并从键盘输入:name=Lili num=1001回车后,name 的值为_。(分数:1.00)A.name=Lili num=1001B.name=LiliC.Lili num=D.Lili14.以下选项中叙述正确的是_。(分数:1.00)A.函数体必须由开始B.C 程序必须由 main 语句开始C.C 程序中的注释可以嵌套D.C 程序中的注释必须在一行完成15.以下选项中不合法的标识符是 _ 。(分数:1.00)A.printB.FORC. if(k=0)printf(“*/n“) else printf(“ 程序的输出结果是_。(分数:2.50)A.

10、输出#B.输出,以下不能计算出一个 char 型数据所占字节数的表达式是_。(分数:2.00)A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p0)20.设有定义: char s81;int i=0; 以下不能将一行(不超过 80 个字符)带有空格的字符串正确读入的语句或语句组是_。(分数:2.00)A.scanf(“%s“,s);B.while(si+=getchar()!=“/n“);si=“/0“;C.gets(s);D.doscanf(“%c“,si);while(si+!=“/n“);si=“/0“;21.若有定义语句:“int a=3,

11、b=2, c=1;”,以下选项中错误的赋值表达式是_。(分数:1.00)A.a=(b=4)=3;B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);22.下列数据结构中,能用二分法进行查找的是_。(分数:1.00)A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表23.下列描述错误的是_。(分数:2.50)A.继承分为多重继承和单继承B.对象之间的通信靠传递消息来实现C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征D.类是具有共同属性、共同方法的对象的集合24.有以下程序: #includestdio.h struct S int n;int

12、 a20; void f(struct S*p) int i,j,t; for(i=0;ip-n-1;i+) for(j=i+1;jp-n;j+) if(p-aip-aj) t=p-ai; p-ai=p-aj; p-aj=t; main() int i; struct S s=10,2,3,1,6,8,7,5,4,10,9; f( for(i=0;is.n;i+) printf(“%d,“,s.ai); 程序的运行结果是_。(分数:2.00)A.2,3,1,6,8,7,5,4,10,9,B.10,9,8,7,6,5,4,3,2,1,C.1,2,3,4,5,6,7,8,9,10,D.10,9,8

13、,7,6,1,2,3,4,5,25.若有代数式 (分数:1.00)A.sqrt(fabs(pow(n,x)+pow(x,e)B.sqrt(fabs(pow(n,x)+exp(x)C.sqrt(abs(nx+ex)D.sqrt(fabs(pow(x,n)+exp(x)26.在 C 语言中,只有在使用时才占用内存单元的变量,其存储类型是_。(分数:2.50)A.auto 和 staticB.extern 和 registerC.auto 和 registerD.static 和 register27.在 C 语言中,只有在使用时才占用内存单元的变量,其存储类型是_。(分数:2.00)A.auto

14、和 registerB.extern 和 registerC.auto 和 staticD.static 和 register28.请阅读以下程序: #includestdio.h #includestring.h void fun(int b) static inti=0; do bi+=bi+1;while(+i2); main() int k,a5=1,3,5,4,9); fun(a); for(k=0;k5;k+)printf(“%d“,ak); 上面程序的输出是_。(分数:2.50)A.13579B.48579C.48549D.4899929.以下叙述正确的是(分数:1.00)A.在

15、 C 语言中,只能用“/*“和“*/“对程序进行注释B.在 C 语言注释语句中,“/“和“*“之间不可以有空格C.注释语句只能使用西文D.在 C 程序中,注释说明只能位于一条语句的后面30.若在定义语句:int a,b,c,*p=B.scanf(“%d%d%d“,a,b,c);C.scanf(“%d“,p);D.scanf(“%d“,二级 C 语言分类模拟题 574 答案解析(总分:46.50,做题时间:90 分钟)一、选择题(总题数:30,分数:46.50)1.有以下程序: #includestdio.h #includestdlib.h int fun(int n) int *p; p=(

16、int*)malloc(sizeof(int); *p=n; return *p; main() int a; a=fun(10); printf(“%d/n“,a+fun(10); 程序运行后的输出结果是_。(分数:1.00)A.0B.10C.20 D.出错解析:解析 malloc(sizeof(int)的作用是开辟一个长度为 sizeof(int)的存储空间,并通过强制类型转换(int*)将此存储空间的地址赋给了一个整型的指针变量 p。然后执行语句*p=n;使得*p 的值为 10,并通过 return 返回此值,即 a 的值为 10。然后在主函数中输出 a+fun(10)=10+10=20

17、。所以选择 C 选项。2.以下能正确定义一维数组的选项是_。(分数:2.00)A.int a5=0, 1, 2, 3, 4, 5);B.char a=0, 1, 2, 3, 4, 5); C.char a=“A“, “B“, “C“;D.int a5=“0123“;解析:解析 A 中初值的个数大于 a 的定义的长度,错误。C 中 a 被定为字符却给它赋值为数值,错误。D 中 a 是整型数组却给它赋值为字符串,错误。3.下面说明不正确的是 _ 。(分数:1.00)A.chara10=“china“;B.chara10,*p=a;p=“chiua“;C.char*a;a=“china“;D.cha

18、ra10,*p;p=a=“china“; 解析:解析 C 语言中操作一个字符串常量的方法有: 把字符串常量存放在一个字符数组之中。 用字符指针指向字符串,然后通过字符指针来访问字符串存储区域。 当字符串常量在表达式中出现时,根据数组的类型转换规则,它被转换成字符指针。 本题选项 D) 错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。4.以下叙述中正确的是_。(分数:1.00)A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失 B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C.在一个程序中当对文件进行了写操作后,必

19、须先关闭该文件然后再打开,才能读到第 1 个数据D.C 语言中的文件是流式文件,因此只能顺序存取数据解析:解析 B 选项中打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。C 选项中在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第 1 个数据,可以用 fseek()函数进行重新定位即可。D 选项中,C 语言中的文件可以进行随机读写。故本题答案为 A。5.下列程序的输出结果是_。 #includestdio.h void main() int a=0,b=1,c=2; if(+a0|+b0)+c; pfintf(“%d

20、,%d,%d“,a,b,c); (分数:2.00)A.0,1,2B.1,2,3C.1,1,3 D.1,2,2解析:6.有以下程序: #includestdio.h main() struct nodeint n; struct node*next; *p; struct node x3=2, x+1, 4, x+2, 6, NULL; p=x; printf(“%d, “, p-n); printf(“%d/n“, p-next-n ); 程序运行后的输出结果是_。(分数:1.00)A.2,3B.2,4 C.3,4D.4,6解析:解析 由题干中的函数可知,程序运行后的输出结果为 2,4。7.以

21、下说法正确的是_。(分数:2.50)A.宏定义是 C 语句,要在行末加分号B.可以使用#undefine 提前结束宏名的使用 C.在进行宏定义时,宏定义不能嵌套D.双引号中出现的宏名也要进行替换解析:解析 本题考查宏的使用规则:字符替换格式:#define 标识符字符串,行末不加分号;双引号中出现的宏名不替换:如果提前结束宏名的使用,程序中可以使用#undefine;在进行宏定义时,宏定义能层层置换,能够嵌套。8.设有定义: int a=1,b=2,c=3; 以下语句中执行效果与其他三个不同的是_。(分数:2.00)A.if(ab)c=a;a=b;b=c;B.if(ab)c=a,a=b,b=c

22、;C.if(ab)c=a,a=b,b=c;D.if(ab)c=a;a=b;b=c; 解析:9.有以下程序: #includestdio.h double f(double x); main() double a=0; int i; for(i=0;i30;i+=10)a+=f(double)i); printf(“%3.0f/n“,a); double f(double x) return x*x+1; 程序运行后的输出结果是_。(分数:1.00)A.500B.401C.503 D.1404解析:解析 本题重点考察函数的定义和调用,第一次循环,a=0,i=0,返回值 a=0*0+1+0=1;第

23、二次循环,a=1,i=10,返回值 a=10*10+1+1=102;第三次循环,a=102,i=20,返回值 a=20*20+1+102=503;第四次循环,a=503,i=30,不符合 i30,跳出循环,最后结果输出 a=503。10.有以下程序: #include stdio.h #include string.h typedef struct stu char name10; char gender; int score; STU; void f(STU *c) strcpy(c-name,“Qian“); c-gende r= “f“; e-score = 350; main( ) S

24、TU a = “Zhao“, “m“, 290, b; b = a; f( printf(“%s,%c,%d,“, a.name, a.gender, a.score); printf(“%s,%c,%d/n“, b.name, b.gender, b.score); 程序运行后的输出结果是_。(分数:1.00)A.Zhao,m,290,Qian,f,350 B.Zhao,m,290,Qian,m,290C.Zhao,m,290,Zhao,m,290D.Zhao,m,290,Qian,m,350解析:解析 本题定义了一个结构变量 struct stu,并且命名为 STU,STU 结构中包含 3

25、 个数据。main()函数中,首先定义两个结构体 STU 类型的变量 a,b,并对 a 完成初始化,然后将 a 赋值给 b,使得结构体a,b 的值都是“Zhao“,“m“,290,再调用 f()函数。f()函数的功能是将形参结构体指针 c 指向的结构体赋值为“Qian“,“f“,350,由于形参是指针,c 指向的结构体就是 b,所以实参 b 的值被修改为“Qian“,“f“,350,而 a 的值不变,故答案为 A 选项。11.有定义语句:int b;char c10;,则正确的输入语句是_。(分数:2.00)A.scanf(“%d%s“,B.scanf(“%d%s“, C.scanf(“%d%

26、s“,b,c);D.scanf(“%d%s“,b,解析:12.有以下程序 #includestdio.h main() FILE*fp; int a10=1,2,3,0,0,i; fp=fopen(“d2.dat“,“wb“); fwrite(a,sizeof(int),5,fp); fwrite(a,sizeof(int),5,fp); fclose(fp); fp=fopen(“d2.dat“,“rb“); fread(a,sizeof(int),10,fp); fclose(fp); for(i=0;i10;i+) printf(“%d,“,ai); 程序的运行结果是_。(分数:1.00

27、)A.1,2,3,0,0,1,2,3,0,0, B.1,2,3,1,2,3,0,0,0,0,C.123,0,0,0,0,123,0,0,0,0,D.1,2,3,0,0,0,0,0,0,0,解析:解析 fwrite 函数将数组 a 写入文件,写入两遍,读出后为选项 A 的值,所以选择 A。13.有以下程序段: char name20; int num; scanf(“name=%s num=%d“,name, 当执行上述程序段,并从键盘输入:name=Lili num=1001回车后,name 的值为_。(分数:1.00)A.name=Lili num=1001B.name=LiliC.Lili

28、 num=D.Lili 解析:解析 在输入格式控制“name=%s num=%d”中,普通字符“name=num=”在输入时要原样输入,而格式控制符%s 和%d 对应各自的输入项,将输入的数据赋给相应的输入项。本题中输入“name=Lili num=1001回车”后,将字符串 Lili 赋给字符数组 name,整数 1001 赋给变量 num。因此 D 选项正确。14.以下选项中叙述正确的是_。(分数:1.00)A.函数体必须由开始 B.C 程序必须由 main 语句开始C.C 程序中的注释可以嵌套D.C 程序中的注释必须在一行完成解析:解析 函数体是函数首部下面的花括号内的部分,所以函数体必

29、须由开始,A 选项正确。一个源程序文件可以包括预处理命令、全局声明、函数定义,程序总是从。main 函数开始执行的,不是 main 语句,B 选项错误。C 程序中允许两种注释,以/开头的单行注释;以/*开始,以*/结束的块式注释,D 选项错误。函数可以嵌套,注释不能嵌套,C 选项错误。15.以下选项中不合法的标识符是 _ 。(分数:1.00)A.printB.FORC. if(k=0)printf(“*/n“) else printf(“ 程序的输出结果是_。(分数:2.50)A.输出#B.输出 if(k=0)printf(“*/n“)else printf(“中 printf(“*/n“)缺

30、少分号,因此会报编译错误。19.设有定义:char p=“1“,“2“,“3“,*q=p;,以下不能计算出一个 char 型数据所占字节数的表达式是_。(分数:2.00)A.sizeof(p) B.sizeof(char)C.sizeof(*q)D.sizeof(p0)解析:解析 在本题中,p 和 q 同为指向字符类型数据的指针,*q 和 p0同为字符型数据。选项 B、C和 D 都符合题目的要求。选项 A 计算得出的是指针类型数据所占的内存字节数。故本题答案为 A。20.设有定义: char s81;int i=0; 以下不能将一行(不超过 80 个字符)带有空格的字符串正确读入的语句或语句组

31、是_。(分数:2.00)A.scanf(“%s“,s); B.while(si+=getchar()!=“/n“);si=“/0“;C.gets(s);D.doscanf(“%c“,si);while(si+!=“/n“);si=“/0“;解析:解析 字符串的输入不能使用“scanf(“%s“,s);”,而应该使用“gets(s)”,因此选择 A。21.若有定义语句:“int a=3, b=2, c=1;”,以下选项中错误的赋值表达式是_。(分数:1.00)A.a=(b=4)=3; B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);解析:解析 由等式的规则可知,A 选项错

32、误。先对括号的 b 进行等式运算,得出 b=4,然后计算得出a=4=3,所以会导致错误。答案选择 A。22.下列数据结构中,能用二分法进行查找的是_。(分数:1.00)A.顺序存储的有序线性表 B.线性链表C.二叉链表D.有序线性链表解析:解析 二分查找只适用于顺序存储的有序表。所谓有序表是指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相等)。23.下列描述错误的是_。(分数:2.50)A.继承分为多重继承和单继承B.对象之间的通信靠传递消息来实现C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征 D.类是具有共同属性、共同方法的对象的集合解析:解析 对象的封装性

33、是指从外面看只能看到对象的外部特性,而对象的内部,其处理能力的实行和内部状态对外本来就是不可见的、隐蔽的。24.有以下程序: #includestdio.h struct S int n;int a20; void f(struct S*p) int i,j,t; for(i=0;ip-n-1;i+) for(j=i+1;jp-n;j+) if(p-aip-aj) t=p-ai; p-ai=p-aj; p-aj=t; main() int i; struct S s=10,2,3,1,6,8,7,5,4,10,9; f( for(i=0;is.n;i+) printf(“%d,“,s.ai);

34、 程序的运行结果是_。(分数:2.00)A.2,3,1,6,8,7,5,4,10,9,B.10,9,8,7,6,5,4,3,2,1,C.1,2,3,4,5,6,7,8,9,10, D.10,9,8,7,6,1,2,3,4,5,解析:解析 本题中子函数 f 的功能是对结构体变量 s 中第二个成员数组中的所有数据进行从小到大的冒泡排序,所以结果是 C 选项。25.若有代数式 (分数:1.00)A.sqrt(fabs(pow(n,x)+pow(x,e) B.sqrt(fabs(pow(n,x)+exp(x)C.sqrt(abs(nx+ex)D.sqrt(fabs(pow(x,n)+exp(x)解析:

35、解析 B 选项中函数 pow(x,e)错误,应该直接使用 exp(x)函数。C 选项中函数 abs(nx+ex)错误,应该使用 fabs()返回浮点数的绝对值。D 选项中 pow(x,n)参数顺序错误。本题正确答案为 A。26.在 C 语言中,只有在使用时才占用内存单元的变量,其存储类型是_。(分数:2.50)A.auto 和 staticB.extern 和 registerC.auto 和 register D.static 和 register解析:解析 auto:函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时系统会给它们分配存储空问,在函数调用结束时就自动

36、释放这些存储空间。register:为了提高效率,C 语言允许将局部变量的值放在 CPU 的寄存器中,这种变量叫“寄存器变量”,只有局部自动变量和形式参数可以作为寄存器变量。extern:外部变量(即全局变量)是在函数的外部定义的,它的作用域从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。static:静态局部变量属于静态存储类别,在静态存储区内分配存储单元。静态局部变量在程序整个运行期间都不释放。27.在 C 语言中,只有在使用时才占用内存单元的变量,其存储类型是_。(分数:2.00)A.auto 和 register B.ext

37、ern 和 registerC.auto 和 staticD.static 和 register解析:解析 auto 和 register 只有在使用时才开辟空间,占用内存单元,所以选择 A。28.请阅读以下程序: #includestdio.h #includestring.h void fun(int b) static inti=0; do bi+=bi+1;while(+i2); main() int k,a5=1,3,5,4,9); fun(a); for(k=0;k5;k+)printf(“%d“,ak); 上面程序的输出是_。(分数:2.50)A.13579B.48579C.48

38、549 D.48999解析:29.以下叙述正确的是(分数:1.00)A.在 C 语言中,只能用“/*“和“*/“对程序进行注释B.在 C 语言注释语句中,“/“和“*“之间不可以有空格 C.注释语句只能使用西文D.在 C 程序中,注释说明只能位于一条语句的后面解析:解析 在 C 语言程序段中可以对程序进行注释,注释部分必须用“/*”和“*/”括起来,其中,“/”和“*”之间不可有空格,注释可以是西文,也可以是中文,注释说明语同步以出现在程序的任意位置。综上所述,本题的答案为 B)。30.若在定义语句:int a,b,c,*p=B.scanf(“%d%d%d“,a,b,c);C.scanf(“%d“,p); D.scanf(“%d“,解析:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1