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

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

1、二级 C 语言分类模拟题 572 及答案解析(总分:42.50,做题时间:90 分钟)一、选择题(总题数:30,分数:42.50)1.以下程序段中,与其他三个功能不同的程序段是_。(分数:1.00)A.s=0;i=1;for(; ;)s+=i; i+; if(i=10)break;B.s=0,i=1;for(; i=10;) s+=i, i+; C.s=0;for(i=1;i=10; i+) s+=i;D.for(s=0,i=1;i=10; s+=i,i+);2.以下选项中非法的表达式是(分数:1.00)A.0x100B.i=j= =0C.(char)(65+3)D.x+1=x+13.有以下程

2、序: #includestdio.h main() int sum,pad,pAd; sum=pad=5; pAd=+sum,pAd+,+pad; printf(“%d/n“,pad); 程序运行后的输出结果是_。(分数:1.00)A.5B.6C.7D.84.有以下程序: # include stdio.h main() int x=011; printf(“%d/n“,+x); 程序运行后的输出结果是_。(分数:1.00)A.12B.11C.10D.95.按照 C 语言规定的用户标识符命名规则,不能出现在标识符中的是_。(分数:1.00)A.下划线B.大写字母C.数字字符D.连接符6.有以下

3、程序 #includestdio.h main() int x=1,y=0; if(!x)y+; else if(x=0) if(x)y+=2; else y+=3; printf(“%d/n“,y); 程序运行后的输出结果是_。(分数:2.50)A.0B.2C.1D.37.有以下程序 #includestdio.h int fun(int x, int y) static int m=0, i=2; i+=m+1; m=i+x+y; return m; main() int j=1, m=1, k; k=fun(j, m); printf(“%d“, k); k=fun(j, m); pri

4、ntf(“%d/n“, k); 执行后的输出结果是_。(分数:2.00)A.5, 11B.5, 5C.11, 11D.11, 58.以下语句中存在语法错误的是_。(分数:2.00)A.char ss620;ss1=“right?“;B.char ss20=“right?“;C.char*ss6;ss1=“right?“;D.char*ss=“right?“;9.有以下程序: #include stdio.h int fun() static int x=1; x*=2; return x; main( ) int i,s=1; for(i=1; i=3; i+ +) s*=fun(); pri

5、ntf(“%d/n“,s); 程序运行后的输出结果是_。(分数:2.50)A.10B.30C.0D.6410.有下列程序: main() int x=5; do printf(“%d“,x-=4); while(!(-x); 程序的输出结果是( )。(分数:1.00)A.1B.20C.1 4D.死循环11.有以下程序: #includestdio.h main() unsigned char a=2, b=4, c=5, d; d=a | b;d printf(“%d/n“,d); 程序运行后的输出结果是_。(分数:1.00)A.3B.4C.5D.612.有以下程序: main() int x

6、8=8,7,6,5,O,0,*s; s=x+3; printf(“%d/n“,s2); 执行后输出结果是( )。(分数:1.00)A.随机值B.0C.5D.613.以下能够实现计算 5!的程序段是_。(分数:1.00)A.int fac=1,k=0;dok+;fac*=k; while(k5);B.int fac=0,k=1;dofac*=k;k+; while(k5);C.int fac=1,k=1;dok+;fac*=k; while(k=5);D.int fac=1,k=0;dofac*=k;k+; while(k5);14.若变量已正确说明为 float 类型,要通过语句 scanf(

7、“%f %f %f“, s+; main() char a=“BYTE“; Fun(a); printf(“n“); 程序运行后的输出结果是_。(分数:1.00)A.BYB.BTC.YTD.YE16.以下关于字符串的叙述中正确的是_。(分数:1.00)A.空串比空格打头的字符串小B.两个字符串中的字符个数相同时才能进行字符串大小的比较C.可以用关系运算符对字符串的大小进行比较D.C 语言中有字符串类型的常量和变量17.以下程序运行后的输出结果是 #includestdio.h main() int a5=1, 2, 3, 4, 5, b5=0, 2, 1, 3, 0, i, s=0; for(

8、i=0; i5; i+) s=s+abi; printf(“%d/n“, s); (分数:2.00)A.6B.10C.11D.1518.以下叙述正确的是_。(分数:1.00)A.有些算法不能用 3 种基本结构来表达B.C 语言程序不编译也能直接运行C.结构化程序的 3 种基本结构是循环结构、选择结构、顺序结构D.如果 C 语言程序实现的算法很简单,则计算机不进行任何代码转换就能执行程序19.设有以下语句: int a=1, b=2, c; c=a(b2); 执行后,c 的值为_。(分数:2.00)A.7B.9C.8D.620.有以下程序 #includestdio.h main() int i

9、=1; i=ii; printf(“%d/n“,i); 程序运行后的输出结果是_。(分数:1.00)A.0B.-1C.1D.721.以下叙述中错误的是(分数:2.00)A.同一个数组中所有元素的类型相同B.不可以跳过前面的数组元素,给后面的元素赋初值C.定义语句:int a10=0;,给 a 数组中所有元素赋初值 0D.若有定义语句:int a4=1, 2, 3, 4, 5;,编译时将忽略多余的初值22.以下程序的运行结果为_。 #define MIN(x,y)(x)(y)?(x):(y) main() int a=0,b=3,c=1,d=3,X; X=MIN(c+d,a+b)*100; pr

10、intf(“%d/n“,X); (分数:2.00)A.300B.4C.3D.40023.若有以下程序段: int r=8; print(“%d/n“, r1); 输出结果是_。(分数:1.00)A.16B.8C.4D.224.若有定义语句:int m=5,4,3,2,1,i=4;,则下面对 m 数组元素的引用中错误的是_。(分数:2.00)A.m-iB.m2*2C.mm0D.mmi25.有以下程序: #include stdio.h typedef struct int b, p; A; void f(A c) /*注意:c 是结构变量名 */ int j; c.b+=1; c.p+=2; m

11、ain( ) int i; A a=1,2; f(a); printf(“%d,%d/n“,a.b,a.p); 程序运行后的输出结果是_。(分数:2.00)A.2,4B.1,2C.1,4D.2,326.逻辑模型是面向数据库系统的模型,下面属于逻辑模型的是_。(分数:1.00)A.关系模型B.谓词模型C.物理模型D.实体联系模型27.有以下程序: #includestdio.h main() char a,b,C,d; scanf(“%c%c“, c=getchar(); d=getchar(); printf(“%c%c%c%c/n“,a,b,c,d); 当执行程序时,按下列方式输入数据(从第

12、 1 列开始,CR代表回车,注意:回车也是一个字符) 12CR 34CR 则输出结果是_。(分数:1.00)A.123B.12C.1234D.123428.设有语句:if(a=1)b=2;c=3;,以下语句中与之等价的是_。(分数:2.50)A.if(a=1)b=2;c=3;B.if(a!=1); else b=2;c=3;C.if(a=1)c=3;b=2;D.(a=1)?b=2:a=a;c=3;29.有以下程序: # include stdio.h int a=1,b=2; void funl(int a,int b) printf(“%d%d“,a,b); void fun2() a=3;

13、b=4; main() fun1(5,6);fun2(); printf(“%d%d/n“,a,b); 程序运行后的输出结果是_。(分数:1.00)A.1 2 5 6B.5 6 3 4C.5 6 1 2D.3 4 5 630.有以下程序: #include stdio.h main( ) char name10 = “S“,“T“,“R“; name2 =“#“; name6 = 0; printf(“%s/n“, name); 程序运行后的输出结果是_。(分数:1.00)A.ST#B.STR#C.STR#0D.STR0二级 C 语言分类模拟题 572 答案解析(总分:42.50,做题时间:9

14、0 分钟)一、选择题(总题数:30,分数:42.50)1.以下程序段中,与其他三个功能不同的程序段是_。(分数:1.00)A.s=0;i=1;for(; ;)s+=i; i+; if(i=10)break; B.s=0,i=1;for(; i=10;) s+=i, i+; C.s=0;for(i=1;i=10; i+) s+=i;D.for(s=0,i=1;i=10; s+=i,i+);解析:解析 B、C、D 选项都表示对 1 到 10 进行累加后赋给 s,而 A 中含 break 语句,循环体只执行一次,结束整个循环过程,因此答案为 A 选项。2.以下选项中非法的表达式是(分数:1.00)A

15、.0x100B.i=j= =0C.(char)(65+3)D.x+1=x+1 解析:解析 选项 D 中将表达式的值赋给表达式,在 c 语言中是不允许给表达式赋值的。3.有以下程序: #includestdio.h main() int sum,pad,pAd; sum=pad=5; pAd=+sum,pAd+,+pad; printf(“%d/n“,pad); 程序运行后的输出结果是_。(分数:1.00)A.5B.6 C.7D.8解析:解析 C 语言区分大小写,pad 与 pAd 是两个不同的变量。首先将 5 赋值给两个变量,由于赋值运算符的优先级高于逗号运算符,所以计算 pAd=+ +sum

16、,此时 pAd 为 6,sum 也为 6,然后计算 pAd+ +,pAd 的值变为 7,+ +pad,pad 的值变为 6,所以选择 B 选项。4.有以下程序: # include stdio.h main() int x=011; printf(“%d/n“,+x); 程序运行后的输出结果是_。(分数:1.00)A.12B.11C.10 D.9解析:解析 考查简单的 C 语言程序,题目中 x=011;而输出函数中+x,说明是先加 1,所以为 10,答案选择 C。5.按照 C 语言规定的用户标识符命名规则,不能出现在标识符中的是_。(分数:1.00)A.下划线B.大写字母C.数字字符D.连接符

17、 解析:解析 C 语言中标识符由字母、下划线或数字组成,且开头必须是字母或下划线。因此 D 选项中的连接符不合法。6.有以下程序 #includestdio.h main() int x=1,y=0; if(!x)y+; else if(x=0) if(x)y+=2; else y+=3; printf(“%d/n“,y); 程序运行后的输出结果是_。(分数:2.50)A.0 B.2C.1D.3解析:解析 (!x)为假,然后判断(x=0),为假,最后就执行输出语句,y 的值仍为初始值,答案选择A。7.有以下程序 #includestdio.h int fun(int x, int y) sta

18、tic int m=0, i=2; i+=m+1; m=i+x+y; return m; main() int j=1, m=1, k; k=fun(j, m); printf(“%d“, k); k=fun(j, m); printf(“%d/n“, k); 执行后的输出结果是_。(分数:2.00)A.5, 11 B.5, 5C.11, 11D.11, 5解析:解析 声明静态局部变量:函数调用结束后,其占用的存储单元不释放,在下次该函数调用时,该变量保留上一次函数调用结束时的值。本题子函数 fun 中的变量 i 和 m 均为静态局部变量。因此第一次调用 fun 函数,返回 m 的值为 5,第

19、二次再调用 fun 函数时,i 的值为 3,m 的值已经是 5 了,所以执行i+=m+1,i 的值变为 9,m=i+x+y=9+1+1=11。故本题答案为 A。8.以下语句中存在语法错误的是_。(分数:2.00)A.char ss620;ss1=“right?“; B.char ss20=“right?“;C.char*ss6;ss1=“right?“;D.char*ss=“right?“;解析:解析 数组赋值时需要用表示出来,故选项 A 错误。9.有以下程序: #include stdio.h int fun() static int x=1; x*=2; return x; main( )

20、 int i,s=1; for(i=1; i=3; i+ +) s*=fun(); printf(“%d/n“,s); 程序运行后的输出结果是_。(分数:2.50)A.10B.30C.0D.64 解析:解析 在本题中,静态局部变量 x 在静态存储区内分配存储单元,在程序整个运行期间都不释放。所以第一次循环 s 的值为 2,在第二次循环中,返回的 x 的值为 4,所以 s 的值为 8,第三次循环,返回的 x 的值为 8,所以 s 的值为 64。10.有下列程序: main() int x=5; do printf(“%d“,x-=4); while(!(-x); 程序的输出结果是( )。(分数:

21、1.00)A.1B.20C.1 4 D.死循环解析:解析 本题考查 dowhile 循环。执行 printf 语句,x=x-4 1,输出 1,判断 while 循环的控制条件,-x=0,则(!(-x)非零,循环条件成立,执行下一次循环;执行 printf 语句,x=x-4=-4,输出-4,判断 while 循环的控制条件,-x=-5,则(!(-x)为零,循环条件不成立,结束循环。11.有以下程序: #includestdio.h main() unsigned char a=2, b=4, c=5, d; d=a | b;d printf(“%d/n“,d); 程序运行后的输出结果是_。(分数

22、:1.00)A.3B.4 C.5D.6解析:解析 dok+;fac*=k; while(k5); B.int fac=0,k=1;dofac*=k;k+; while(k5);C.int fac=1,k=1;dok+;fac*=k; while(k=5);D.int fac=1,k=0;dofac*=k;k+; while(k5);解析:解析 dowhile 循环语句一般形式为:do循环体while(表达式),执行过程为:首先执行循环体,之后判断表达式,成立(非 0)则再一次执行循环体,不成立(0)则退出循环。A 选项:k=1,fac=1 * 1,判断 k5,条件成立进行下一次循环,直到 k=

23、5,fac=1*2*3*4*5,k5 不成立退出循环,实现计算5!,A 选项正确。B 选项:fac 从 0 开始,做乘法一直都是 0,无法实现 5!,错误。C 选项:k=2,fac=1*2,循环条件成立,直到 k=6,fac=1*2*3*4*5*6 才因循环条件不成立退出循环,实现 6!,错误。D 选项:k=0,fac=1*0=0,之后做乘法一直为 0,无法实现 5!,错误。故选择 A 选项。14.若变量已正确说明为 float 类型,要通过语句 scanf(“%f %f %f“, s+; main() char a=“BYTE“; Fun(a); printf(“n“); 程序运行后的输出结

24、果是_。(分数:1.00)A.BYB.BTC.YTD.YE 解析:解析 fun()函数的意思是当*s%2=0 的时候就输出并且 s 自加 1 次,然后判断。所以可知只有第2 和第 4 个位置上的才符合要求,所以答案为 D。16.以下关于字符串的叙述中正确的是_。(分数:1.00)A.空串比空格打头的字符串小 B.两个字符串中的字符个数相同时才能进行字符串大小的比较C.可以用关系运算符对字符串的大小进行比较D.C 语言中有字符串类型的常量和变量解析:解析 字符串比较大小是以第 1 个不相同字符的大小为标准的,跟长度没有关系,B 选项不正确。字符串比较大小除了使用库函数 strcmp()以外,就只

25、能靠自己写代码来实现了,而不能通过关系运算符来比较大小,因为字符串在表达式中相当于 const char*,即常字符指针,代表的是字符串的首地址,关系运算符会将两个字符串的首地址值比较大小,这是毫无意义的,C 选项不正确。C 语言中只有字符串常量而没有字符串变量,D 选项描述不正确。空串的长度为 O,而以空格打头的字符串的长度至少为 1,因此 A 选项是正确的。17.以下程序运行后的输出结果是 #includestdio.h main() int a5=1, 2, 3, 4, 5, b5=0, 2, 1, 3, 0, i, s=0; for(i=0; i5; i+) s=s+abi; prin

26、tf(“%d/n“, s); (分数:2.00)A.6B.10C.11 D.15解析:解析 数组元素 bi作为数组 a 的下标,s=a0+a2+a1+a3+a0,即 s=1+3+2+4+1=11。18.以下叙述正确的是_。(分数:1.00)A.有些算法不能用 3 种基本结构来表达B.C 语言程序不编译也能直接运行C.结构化程序的 3 种基本结构是循环结构、选择结构、顺序结构 D.如果 C 语言程序实现的算法很简单,则计算机不进行任何代码转换就能执行程序解析:解析 算法的 3 种基本结构可以表达任何算法,只是不同的实现复杂度不相同,因此 A 选项错误。C 语言是编译型语言,程序必须先编译、链接才

27、能运行,因此 B 选项错误。C 语言是高级程序语言,计算机不能识别除了机器语言以外的任何语言,因此 C 程序代码转换为机器语言才能在计算机上运行,因此选项 D 错误。答案为 C 选项。19.设有以下语句: int a=1, b=2, c; c=a(b2); 执行后,c 的值为_。(分数:2.00)A.7B.9 C.8D.6解析:解析 b 为 2,二进制为 00000010,执行左移两位操作后为 00001000,然后与 a(00000001)做异或操作结果为 00001001,即十进制的 9。20.有以下程序 #includestdio.h main() int i=1; i=ii; prin

28、tf(“%d/n“,i); 程序运行后的输出结果是_。(分数:1.00)A.0 B.-1C.1D.7解析:解析 是按位异或,11 结果为 0,答案选择 A。21.以下叙述中错误的是(分数:2.00)A.同一个数组中所有元素的类型相同B.不可以跳过前面的数组元素,给后面的元素赋初值C.定义语句:int a10=0;,给 a 数组中所有元素赋初值 0D.若有定义语句:int a4=1, 2, 3, 4, 5;,编译时将忽略多余的初值 解析:22.以下程序的运行结果为_。 #define MIN(x,y)(x)(y)?(x):(y) main() int a=0,b=3,c=1,d=3,X; X=M

29、IN(c+d,a+b)*100; printf(“%d/n“,X); (分数:2.00)A.300 B.4C.3D.400解析:23.若有以下程序段: int r=8; print(“%d/n“, r1); 输出结果是_。(分数:1.00)A.16B.8C.4 D.2解析:解析 本题考查移位运算。将 8 转为二进制数为 1000,右移一位不足补 0,结果为 0100,转化为十进制结果为 4。24.若有定义语句:int m=5,4,3,2,1,i=4;,则下面对 m 数组元素的引用中错误的是_。(分数:2.00)A.m-iB.m2*2C.mm0 D.mmi解析:解析 数组 m 下标从 0 到 4

30、 计算,共 5 个元素,选项 C 中 m0=5,则 mm0为 m5中,超出了数组 m 的下标范围。因此正确答案为 C。25.有以下程序: #include stdio.h typedef struct int b, p; A; void f(A c) /*注意:c 是结构变量名 */ int j; c.b+=1; c.p+=2; main( ) int i; A a=1,2; f(a); printf(“%d,%d/n“,a.b,a.p); 程序运行后的输出结果是_。(分数:2.00)A.2,4B.1,2 C.1,4D.2,3解析:解析 结构体变量可以作为函数的参数和返回值。作为函数的实参时,

31、可以实现函数的传值调用。当使用结构体变量作为函数的形参时,实参也应该是结构体变量名,以实现传值调用。实参将复制副本给形参,在被调用函数中改变形参值对于调用函数中的实参没有影响。所以选择 B。26.逻辑模型是面向数据库系统的模型,下面属于逻辑模型的是_。(分数:1.00)A.关系模型 B.谓词模型C.物理模型D.实体联系模型解析:解析 逻辑模型是面向数据库系统的模型,着重于在数据库系统一级的实现。成熟并大量使用的逻辑模型有层次模型、网状模型、关系模型和面向对象模型等。27.有以下程序: #includestdio.h main() char a,b,C,d; scanf(“%c%c“, c=ge

32、tchar(); d=getchar(); printf(“%c%c%c%c/n“,a,b,c,d); 当执行程序时,按下列方式输入数据(从第 1 列开始,CR代表回车,注意:回车也是一个字符) 12CR 34CR 则输出结果是_。(分数:1.00)A.123 B.12C.1234D.1234解析:解析 scanf()函数从标准输入输出中读入两个字符“1“、“2“分别赋给变量 a、b,遇到回车自动结束,但回车符已经存入缓冲区,函数 getchar()将从中接受了回车符,故 c 被赋值为回车符,第二个getchar()读入字符“3“,因此 a=“1“,b=“2“,c=CR,d=“3“。故答案为

33、A 选项。28.设有语句:if(a=1)b=2;c=3;,以下语句中与之等价的是_。(分数:2.50)A.if(a=1)b=2;c=3;B.if(a!=1); else b=2;c=3;C.if(a=1)c=3;b=2;D.(a=1)?b=2:a=a;c=3; 解析:解析 在 C 语言中,用分号表示一条语句的结束,用把几条语句放在一块表示一个语句块,其整体表示一个功能。因而在题目给出的四个选项中,选项 A、B、C 均与题中所给不同,而选项 D 相同。29.有以下程序: # include stdio.h int a=1,b=2; void funl(int a,int b) printf(“%

34、d%d“,a,b); void fun2() a=3;b=4; main() fun1(5,6);fun2(); printf(“%d%d/n“,a,b); 程序运行后的输出结果是_。(分数:1.00)A.1 2 5 6B.5 6 3 4 C.5 6 1 2D.3 4 5 6解析:解析 fun1 是输出局部变量的值,fun2 是把全局变量的值改成 3 和 4,所以输出的结果是 5 6 3 4。30.有以下程序: #include stdio.h main( ) char name10 = “S“,“T“,“R“; name2 =“#“; name6 = 0; printf(“%s/n“, name); 程序运行后的输出结果是_。(分数:1.00)A.ST# B.STR#C.STR#0D.STR0解析:解析 程序首先对 name 数组进行初始化,再对元素 name2赋值为#,由于用“%s”格式输出字符串时,以/0作为结束标志,/0对应于 0,在输出时,系统认为 name2后面已经结束,答案为 A 选项。

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

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

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