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

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

1、二级 C语言分类模拟题 577及答案解析(总分:39.50,做题时间:90 分钟)一、选择题(总题数:30,分数:39.50)1.若有以下的定义:“int t32;”,能正确表示 t数组元素地址的表达式是_。(分数:1.00)A. printf(“%d/n“, i);(分数:2.50)A.32769B.32767C.-32766D.输出不确定数3.下列关于栈的叙述正确的是_。(分数:2.00)A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据4.利用 fseek函数可实现的操作是 _ 。(分数:1.00)A.实现文件的顺序读写B.改变文件的位置指针C

2、.实现文件的随机读写D.以上答案均正确5.有以下程序 main() char a=“a“,“b“,“c“,“d“,“e“,“f“,“g“,“h“,“/0“;int i,j; i=sized(a);j=stden(a); printf(“%d,%d/n”,i,j); 程序运行后的输出结果是(分数:1.00)A.9,9B.8,9C.1,8D.9,86.有以下程序 #includestdio.h main() int i=5; do if(i%3=1) if(i%5=2) (printf(“%d“,i);break; i+; while(i!=0); printf(“/n“1); 程序的运行结果是_

3、。(分数:2.00)A.*7B.*3*5C.*5D.*2*67.若有以下定义和语句; int a=1,2,3,4,5,6,7,8,9,10,*p=a;(分数:2.00)A.p+=2,*(p+)B.p+=2,*+pC.p+=3,*p+D.p+=2,+*p8.下面叙述中错误的是_。(分数:1.00)A.软件测试的目的是发现错误并改正错误B.对被调试的程序进行“错误定位”是程序调试的必要步骤C.程序调试通常也称为 DebugD.软件测试应严格执行测试计划,排除测试的随意性9.以下叙述中正确的是_。(分数:1.00)A.a是实型变量,C 允许进行赋值 a=10,但不可以这样说:实型变量中允许存放整型值

4、B.在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式C.执行表达式 a=b后,在内存中 a和 b存储单元中的原有值都将被改变,a 的值已由原值改变为 b的值,b的值由原值变为 0D.已有 a=3,b=5,当执行了表达式 a=b,b=a 之后,使 a中的值为 5,b 中的值为 310.当变量 c的值不为 2、4、6 时,值也为“真”的表达式是_。(分数:1.00)A.(c=2 p=a;,则以下选项中叙述错误的是_。(分数:1.00)A.系统将开辟一个名为 p的二维数组,p00中的值即为 a00中的值B.p+1代表 a10的地址C.p中将存放 a数组的首地址D.p+2代表 a数组最后一行的

5、首地址13.以下叙述中错误的是_。(分数:1.00)A.用 typedef定义新的类型名后,原有类型名仍有效B.可以用 typedef将已存在的类型用一个新的名字来代表C.可以通过 typedef增加新的类型D.用 typedef可以为各种类型起别名,但不能为变量起别名14.表示关系式 xyz 的 C语言表达式的是_。(分数:2.50)A.(x=y)ps+4,p+) printf(“%s/n“,p); (分数:1.00)A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA16.以下程序的输出结果是_。 point(char*pt); main() char b4=“a“,“

6、c“,“s“,“f“),*pt=b; pt=point(pt); printf(“%c/n“,*pt); point(char*p) p+=3; return p; (分数:2.00)AsBcCfDa17.有以下程序: #include stdio.h main( ) int a=10,20,30,40, *p=a,i; for(i=0;i=3;i+)ai=*p;p+; printf(“%d/n“,a2); 程序运行后的输出结果是_。(分数:1.00)A.10B.20C.30D.4018.有以下程序 main() int m=0256,n=256 ; printf(“%o %o/n“, m,n

7、); 程序运行后的输出结果是_。(分数:1.00)A.0256 0400B.0256 256C.256 400D.400 40019.有以下程序: #includestdio.h main() int i,j; for(i=1;i4;i+) for(j=i;j4;j+)printf(“%d$%d=%d“,i,j,i%j); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.1*1=1 1*2=21*3=32*2=4 2*3=63*3=9B.1*1=1 1*2=2 1*3=32*1=2 2*2=4C.1*1=11*3=3 2*3=6 3*3=9D.1*1=12*1=2

8、2*2=43*1=3 3*2=6 3*3=920.以下叙述中正确的是 _。(分数:1.00)A.用 C程序实现的算法必须要有输入和输出操作B.用 C程序实现的算法可以没有输出但必须要输入C.用 C程序实现的算法可以没有输入但必须要有输出D.用 C程序实现的算法可以既没有输入也没有输出21.有两个关系 R,S 如下: R A B C a 3 2 b 0 1 c 2 1 S A B a 3 b 0 c 2 由关系 R通过运算得到关系 S,则所使用的运算为_。(分数:1.00)A.选择B.投影C.插入D.连接22.以下选项中正确的语句组是_。(分数:1.00)A.char *s;s=“BOOK!“;

9、B.char*s;s=“BOOK!“);C.char s10;s=“BOOK!“;D.char s;s=“BOOK!“;23.下列叙述中正确的是_。(分数:1.00)A.程序执行的效率与数据的存储结构密切相关B.程序执行的效率只取决于程序的控制结构C.程序执行的效率只取决于所处理的数据量D.以上三种说法都不对24.在 C语言中,只有在使用时才占用内存单元的变量,其存储类型是_。(分数:2.50)A.auto和 staticB.extern和 registerC.auto和 registerD.static和 register25.若有定义语句:int x=10;,则表达式 x-=x+x的值为_

10、。(分数:1.00)A.10B.-20C.0D.-1026.以下叙述中错误的是_。(分数:1.00)A.C程序在运行过程中所有计算都以二进制方式进行B.C程序在运行过程中所有计算可以十进制方式进行C.所有 C程序都需要编译链接无误后才能运行D.C程序中整型变量只能存放整数,实型变量只能存放浮点数27.有以下结构体说明、变量定义和赋值语句: struct STD char name10; int age; char sex; s5,*ps; ps=s0; 则以下 scanf函数调用语句有错误的是_。(分数:1.00)A.scanf(“%s“,s0.name);B.scallf(“%d“,s0.a

11、ge);C.scanf(“%c“,(ps-sex);D.scanf(“%d“,ps-age);28.下面函数的功能是_。 sss(s, t) char*s, *t; while(*s) return(*s-*t); (分数:1.00)A.求字符串的长度B.比较两个字符串的大小C.将字符串 s复制到字符串 t中D.将字符串 s接续到字符串 t中29.有以下程序: #includestdio.h main() int a=7; while(a-); printf(“%d/n“, a); 程序运行后的输出结果是_。(分数:1.00)A.-1B.0C.1D.730.当没有指定 C语言中函数形参的存储类

12、别时,函数形参的存储类别是_。(分数:1.00)A.外部(extern)B.静态(static)C.寄存器(register)D.自动(auto)二级 C语言分类模拟题 577答案解析(总分:39.50,做题时间:90 分钟)一、选择题(总题数:30,分数:39.50)1.若有以下的定义:“int t32;”,能正确表示 t数组元素地址的表达式是_。(分数:1.00)A. printf(“%d/n“, i);(分数:2.50)A.32769B.32767C.-32766 D.输出不确定数解析:解析 在 Turbo C 2.0环境中,int 数据类型在内存中只占两个字节,其表示形式为二进制补码形

13、式,所以范围是:-3276832767,即 1000000000000000201111111111111112(首位为符号位)。而32770转换为二进制为 10000000000000102,其符号位为 1故输出时为一个负数,而它的绝对值是求负后的结果,补码求负的方法是:先按位求反,再加一。所以求得的绝对值为 01111111 111111012+1=0111111111111102,即十进制的 32766。综上所述,选项 C正确。3.下列关于栈的叙述正确的是_。(分数:2.00)A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据 C.只能在栈底插入数据D.不能删除数据解析:解析 栈是

14、只允许在同一端进行插入和删除运算的线性表,按“先进后出”组织数据,因此本题答案为 B。4.利用 fseek函数可实现的操作是 _ 。(分数:1.00)A.实现文件的顺序读写B.改变文件的位置指针C.实现文件的随机读写D.以上答案均正确 解析:解析 改变文件位置指针函数 fseek()的功能是:改变文件的位置指针;辅助实现文件的顺序读写;辅助实现文件的随机读写。5.有以下程序 main() char a=“a“,“b“,“c“,“d“,“e“,“f“,“g“,“h“,“/0“;int i,j; i=sized(a);j=stden(a); printf(“%d,%d/n”,i,j); 程序运行后

15、的输出结果是(分数:1.00)A.9,9B.8,9C.1,8D.9,8 解析:解析 本题中首先定义了字符数组 a,由于它的长度省略,所以其长度由初值个数确定,为 9。接着将 sizeof()函数返回的值赋给 i(sizeof()函数的作用是返回运算对象占用的字符数),所以 i值为 9;然后将 strlen()函数的返回值赋给 j(strlen()函数的作用是返回字符串的长度,不包括字符串的结束标记“/0“),所以 j值为 8,所以最后输出的 i, j 的值为 9,8。6.有以下程序 #includestdio.h main() int i=5; do if(i%3=1) if(i%5=2) (

16、printf(“%d“,i);break; i+; while(i!=0); printf(“/n“1); 程序的运行结果是_。(分数:2.00)A.*7 B.*3*5C.*5D.*2*6解析:解析 本题考查的是 break语句。dowhile 循环是“先执行,后判断”,所以无论条件如何,它都至少会执行一遍。程序首先初始化变量 i为 5,然后进入 dowhile循环体,首先判断(i%3=1),因为 5%3=2,所以 if条件不满足,跳过下面的 if语句,执行 i+,i 变为 6。第 1遍循环结束,判断(i!=0)为真,继续循环。现在 i%3=6%3=0,所以 if语句还是不被执行,继续 i+,

17、i 变为 7,仍然满足(i!=0),继续循环。第 3遍循环 i%3=7%3=1,满足条件(i%3=1),继续判断条件 i%5=2 成立,即输出*7,然后执行 break语句跳出循环。7.若有以下定义和语句; int a=1,2,3,4,5,6,7,8,9,10,*p=a;(分数:2.00)A.p+=2,*(p+) B.p+=2,*+pC.p+=3,*p+D.p+=2,+*p解析:解析 引用一个数组元素,可以用:(1)下标法,如 ai形式;(2)指针法,如*(a+i)或*(p+i)。数组的下标从 0开始,值为 3的数组元素是 a2。B、C 的内容为 a3,D 将 a2前自加,结果为 4。8.下面

18、叙述中错误的是_。(分数:1.00)A.软件测试的目的是发现错误并改正错误 B.对被调试的程序进行“错误定位”是程序调试的必要步骤C.程序调试通常也称为 DebugD.软件测试应严格执行测试计划,排除测试的随意性解析:解析 程序调试的基本步骤有:错误定位;修改设计和代码,以排除错误;进行回归测试,防止引进新的错误。所以 B选项正确。程序调试通常称为 Debug,即排错,所以 C选项正确。软件测试的基本准则有:所有测试都应追溯到需求;严格执行测试计划,排除测试的随意性;充分注意测试中的群集现象;程序员应避免检查自己的程序;穷举测试不可能;妥善保存测试计划等文件。所以 D选项正确。软件测试的目的是

19、为了发现错误,而执行程序的过程并不涉及改正错误,所以 A选项错误。9.以下叙述中正确的是_。(分数:1.00)A.a是实型变量,C 允许进行赋值 a=10,但不可以这样说:实型变量中允许存放整型值 B.在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式C.执行表达式 a=b后,在内存中 a和 b存储单元中的原有值都将被改变,a 的值已由原值改变为 b的值,b的值由原值变为 0D.已有 a=3,b=5,当执行了表达式 a=b,b=a 之后,使 a中的值为 5,b 中的值为 3解析:解析 C 语言中语法上规定实型变量是不能存放整型类的数据的,整型数据也不能存放实型数据。这是为了避免类型转换之

20、间可能会发生错误。10.当变量 c的值不为 2、4、6 时,值也为“真”的表达式是_。(分数:1.00)A.(c=2 p=a;,则以下选项中叙述错误的是_。(分数:1.00)A.系统将开辟一个名为 p的二维数组,p00中的值即为 a00中的值 B.p+1代表 a10的地址C.p中将存放 a数组的首地址D.p+2代表 a数组最后一行的首地址解析:解析 (*p)4定义了一个数组指针。p 可以指向类似于 arry4的数组,题设中,p 不是一个二维数组,只是可以指向这类二维数组,因此 A选项错误。p+1 代表了第一行第一个元素的地址,p=a 指向数组 a的首地址,则 B、C 选项正确,同理可知 D选项

21、也正确。故答案为 A选项。13.以下叙述中错误的是_。(分数:1.00)A.用 typedef定义新的类型名后,原有类型名仍有效B.可以用 typedef将已存在的类型用一个新的名字来代表C.可以通过 typedef增加新的类型 D.用 typedef可以为各种类型起别名,但不能为变量起别名解析:解析 关键字 typedef的作用只是将 C语言中已有的数据类型作置换,并不是增加新的类型,因此 C错误。14.表示关系式 xyz 的 C语言表达式的是_。(分数:2.50)A.(x=y)ps+4,p+) printf(“%s/n“,p); (分数:1.00)A.ABCDBCDCDD B.ABCDC.

22、DCBAD.ABCDABCABA解析:解析 在第一次执行 for循环时,字符数组的首地址赋给了指针变量 p,使得指针变量 p指向了s的首地址,输出 p所指向的字符串;第二次执行 for循环时, p 值增加 1,p 指向了 s的第二个元素输出 BCD;第三次输出 CD;第四次输出 D;直到 P指向字符串的结束字符“/0”,for 循环终止抽行。 16.以下程序的输出结果是_。 point(char*pt); main() char b4=“a“,“c“,“s“,“f“),*pt=b; pt=point(pt); printf(“%c/n“,*pt); point(char*p) p+=3; re

23、turn p; (分数:2.00)AsBcCf Da解析:17.有以下程序: #include stdio.h main( ) int a=10,20,30,40, *p=a,i; for(i=0;i=3;i+)ai=*p;p+; printf(“%d/n“,a2); 程序运行后的输出结果是_。(分数:1.00)A.10B.20C.30 D.40解析:解析 因为指针变量 p的初始值指向数组 a,所以执行 for循环语句后,数组 a中的元素的值不变。因此 C选项正确。18.有以下程序 main() int m=0256,n=256 ; printf(“%o %o/n“, m,n); 程序运行后的

24、输出结果是_。(分数:1.00)A.0256 0400B.0256 256C.256 400 D.400 400解析:解析 在本题的赋值语句中,对 m进行的赋值显然是一个八进制数,而 n则是一个十进制的整数,最终程序要求的输出形式为八进制数输出。所以此时应该把 n转换成十进制数,即 400输出。答案应该选C。19.有以下程序: #includestdio.h main() int i,j; for(i=1;i4;i+) for(j=i;j4;j+)printf(“%d$%d=%d“,i,j,i%j); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.1*1=1 1*

25、2=21*3=32*2=4 2*3=63*3=9 B.1*1=1 1*2=2 1*3=32*1=2 2*2=4C.1*1=11*3=3 2*3=6 3*3=9D.1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=9解析:解析 外循环第一次 i的值为 1,内循环第一次 j的初值为 1,打印 1*1=1;内循环第二次 j的值为 2,打印 1*2=2;内循环第三次 j的值为 3,打印 1*3=3,打印回车换行,退出内循环。外循环第二次 i的值为 2,内循环第一次 j的初值为 2,打印 2*2=4;内循环第二次 j的值为 3,打印 2*3=6,打印回车换行,退出内循环。外循环第三次 i的

26、值为 3,内循环第一次 j的初值为 3,打印 3*3=9,打印回车换行,退出内循环。20.以下叙述中正确的是 _。(分数:1.00)A.用 C程序实现的算法必须要有输入和输出操作B.用 C程序实现的算法可以没有输出但必须要输入C.用 C程序实现的算法可以没有输入但必须要有输出 D.用 C程序实现的算法可以既没有输入也没有输出解析:解析 算法的特性中包括“有零个或多个输入”及“有一个或多个输出”这两个特性。一个算法得到的结果就是算法的输出,没有输出的算法是没有意义的,所以一千算法必须至少有一个输出。21.有两个关系 R,S 如下: R A B C a 3 2 b 0 1 c 2 1 S A B

27、a 3 b 0 c 2 由关系 R通过运算得到关系 S,则所使用的运算为_。(分数:1.00)A.选择B.投影 C.插入D.连接解析:解析 投影运算是从关系模式中挑选若干属性组成新的关系,这是从列的角度进行的运算,相当于对关系进行垂直分解。本题中,S 是在原有关系 R的内部进行的,是由 R中原有的那些域的列所组成的关系,因此选择 B。22.以下选项中正确的语句组是_。(分数:1.00)A.char *s;s=“BOOK!“; B.char*s;s=“BOOK!“);C.char s10;s=“BOOK!“;D.char s;s=“BOOK!“;解析:解析 字符指针可以用字符串直接赋值,字符数组

28、不可以。所以选择 A。23.下列叙述中正确的是_。(分数:1.00)A.程序执行的效率与数据的存储结构密切相关 B.程序执行的效率只取决于程序的控制结构C.程序执行的效率只取决于所处理的数据量D.以上三种说法都不对解析:解析 数据的存储结构、程序处理的数据量、程序的算法等都会影响程序执行效率。24.在 C语言中,只有在使用时才占用内存单元的变量,其存储类型是_。(分数:2.50)A.auto和 staticB.extern和 registerC.auto和 register D.static和 register解析:解析 auto:函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,

29、在调用该函数时,系统会给它们分配存储空间,在函数调用结束后自动释放这些存储空间。register:为了提高效率,C语言允许将局部变量的值放在 CPU中的寄存器中,这种变量叫“寄存器变量”,只有局部自动变量和形参可以作为寄存器变量。extern:外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。static:静态局部变量,属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放。25.若有定义语句:int x=10;,则表达式 x-=x+x的值为_。(分数:1.00

30、)A.10B.-20C.0D.-10 解析:解析 算术运算符+的优先级高于-=,且-=的结合方向为自右向左,因此表达式 x-=x+x可以表示成 x=x-(x+x)=10-(10+10)=-10,所以选择 D。26.以下叙述中错误的是_。(分数:1.00)A.C程序在运行过程中所有计算都以二进制方式进行 B.C程序在运行过程中所有计算可以十进制方式进行C.所有 C程序都需要编译链接无误后才能运行D.C程序中整型变量只能存放整数,实型变量只能存放浮点数解析:解析 C 语言中,参与运算的数可以以八进制、十进制、十六进制等多种形式表示。27.有以下结构体说明、变量定义和赋值语句: struct STD

31、 char name10; int age; char sex; s5,*ps; ps=s0; 则以下 scanf函数调用语句有错误的是_。(分数:1.00)A.scanf(“%s“,s0.name);B.scallf(“%d“,s0.age);C.scanf(“%c“,(ps-sex);D.scanf(“%d“,ps-age); 解析:解析 本题考查结构体的相关知识,题目中需要输入一个变量,scanf 要求参数为指针,而 D选项中 ps-age 为一个变量,不是指针,所以错误。28.下面函数的功能是_。 sss(s, t) char*s, *t; while(*s) return(*s-*t

32、); (分数:1.00)A.求字符串的长度B.比较两个字符串的大小 C.将字符串 s复制到字符串 t中D.将字符串 s接续到字符串 t中解析:29.有以下程序: #includestdio.h main() int a=7; while(a-); printf(“%d/n“, a); 程序运行后的输出结果是_。(分数:1.00)A.-1 B.0C.1D.7解析:解析 此题考查 a-和-a 之间的区别,当 while(a-)为真循环执行,a-是执行再减 1,所以答案选择 A。30.当没有指定 C语言中函数形参的存储类别时,函数形参的存储类别是_。(分数:1.00)A.外部(extern)B.静态(static)C.寄存器(register)D.自动(auto) 解析:解析 auto 变量又称为自动变量,函数定义变量时,如果没有指定存储类别,系统就认为所定义的变量具有自动类别,D 选项正确。static 变量又称为静态变量,编译时为其分配的内存在静态存储区中。register变量又称为寄存器变量,变量的值保留在 CPU的寄存器中,而不是像一般变量那样占内存单元。当定义一个函数时,若在函数返回值的类型前加上说明符 extern时,称此函数为外部函数,外部函数在整个源程序中都有效。

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

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

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