试题

计算机二级C语言考试冲刺练习题

时间:2024-06-21 16:02:51 振濠 试题 我要投稿
  • 相关推荐

计算机二级C语言考试冲刺练习题

  C语言是把高级语言的基本结构和语句与低级语言的实用性结合起来的工作单元。下面给大家整理了计算机二级C语言考试冲刺练习题,欢迎阅读!

计算机二级C语言考试冲刺练习题

  计算机二级C语言考试冲刺练习题1

  1.(A )是构成C语言程序的基本单位。

  A、函数

  B、过程

  C、子程序

  D、子例程

  2.C语言程序从(C) 开始执行。

  A、 程序中第一条可执行语句

  B、 程序中第一个函数

  C、 程序中的main函数

  D、包含文件中的第一个函数

  3、以下说法中正确的是( C )。

  A、C语言程序总是从第一个定义的函数开始执行

  B、在C语言程序中,要调用的函数必须在main( )函数中定义

  C、C语言程序总是从main( )函数开始执行

  D、C语言程序中的main( )函数必须放在程序的开始部分

  4.下列关于C语言的说法错误的是( B ) 。

  A、 C程序的工作过程是编辑、编译、连接、运行

  B、 C语言不区分大小写。

  C、 C程序的三种基本结构是顺序、选择、循环

  D、C程序从main函数开始执行

  5.下列正确的标识符是(C )。

  A、-a1

  B、a[i]

  C、a2_i

  D、int t

  5-8题为相同类型题

  考点:标识符的命名规则

  只能由字母、数字、下划线构成

  数字不能作为标识符的开头

  关键字不能作为标识符

  选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)

  6.下列C语言用户标识符中合法的是(B )。

  A、3ax

  B、x

  C、case

  D、-e2 E)union

  选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);

  7.下列四组选项中,正确的C语言标识符是( C )。

  A、 %x

  B、a+b

  C、a123

  D、123

  选项A中的`“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)

  8、下列四组字符串中都可以用作C语言程序中的标识符的是( A)。

  A、print _3d db8 aBc

  B、Iam one_half start$it 3pai

  C、str_1 Cpp pow while

  D、Pxq My->book line# His.age

  选项B中的“”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)

  9.C语言中的简单数据类型包括(D )。

  A、整型、实型、逻辑型

  B、整型、实型、逻辑型、字符型

  C、整型、字符型、逻辑型

  D、整型、实型、字符型

  10.在C语言程序中,表达式5%2的结果是 C 。

  A、2.5

  B、2

  C、1

  D、3

  %为求余运算符,该运算符只能对整型数据进行运算。且符号与被模数相同。5%2=1; 5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1;

  /为求商运算符,该运算符能够对整型、字符、浮点等类型的数据进行运算,5/2=2

  计算机二级C语言考试冲刺练习题2

  一、 选择题

  1、 下列叙述中正确的是:

  A、循环队列是队列的一种顺序存储结构

  B、循环队列是队列的一种链式存储结构

  C、循环队列是非线性结构

  D、循环队列是一直逻辑结构

  1)【答案】A

  【解析】为了充分利用存储空间,可以把顺序队列看成一个环状空间,即把顺序队列的头尾指针相连,这样的队列称之为循环队列。它是对顺序队列的改进,故循环队列是队列的一种顺序存储结构

  2、 下列叙述中正确的是

  A、栈是一种先进先出的线性表

  B、队列是一种后进先出的线性表

  C、栈和队列都是非线性结构

  D、以上三种说法都不对

  (2)【D】

  【解析】栈是一种后进先出的线性表,队列是一种先进先出的线性表,二者均是线性结构,故选项A)、B)、C)均不对,答案为选项D)。

  3、 一棵二叉树共有25个节点,其中5个时子节点,那么度为1的节点数为

  A、4 B、6 C、10 D、16

  【D】

  【解析】由二叉树的性质n0=n2+1可知,度为0的结点数(即叶子结点数)=度为2的结点数+1,根据题意得知,度为2的结点数为4个,那么25-5-4=16即为度为1的结点数,选项D)正确

  4、 在下列模式中,能够给出数据库物理存储结构与物理存取方法的是

  A、内模式 B、外模式 C、概念模式 D、逻辑模式

  【答案】A

  【解析】内模式也称存储模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述。所以选项A)正确。

  5、 在满足实体完整性约束的条件下

  A、一个关系中可以没有候选关键词

  B、一个关系中只能有一个候选关键词

  C、一个关系中必须有多个候选关键词

  D、一个关系中应该有一个或者多个候选关键词

  【答案】D

  【解析】在关系R中如记录完全函数依赖于属性(组)X,则称X为关系R中的一个候选关键字。在一个关系中,候选关键字可以有多个且在任何关系中至少有一个关键字。所以在满足数据完整性约束的条件下,一个关系应该有一个或多个候选关键字,所以选项D)正确。

  6、 有三个关系R、S和T如下:

  R

  A B C

  a 1 2

  b 2 1

  c 3 1

  则由关系R和S得到关系T的操作是

  A、自然连接 B、并 C、差 D、交

  【答案】C

  【解析】R和S的差是由属于R但不属于S的元组组成的集合,运算符为“-”。记为T=R-S。根据本题关系R和关系S运算前后的变化,可以看出此处进行的是关系运算的差运算

  7、 软件生命周期中的活动不包括

  A、软件维护 B、市场调研 C、软件测试 D、需求分析

  【答案】B

  【解析】通常把软件产品从提出、实现、使用、维护到停止使用(退役)的过程称为软件生命周期。可以将软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。软件生命周期的主要活动阶段是可行性研究与计划制定、需求分析、软件设计、软件实现、软件测试、运行和维护。软件生命周期不包括市场调研。

  8、 下面不属于需求分析阶段任务的是

  A、确定软件系统的功能需求 B、确定软件系统的系统的系能需求

  B、制定软件集成测试计划 D、需求规格说明书审评

  【答案】C

  【解析】需求分析是对待开发软件提出的需求进行分析并给出详细的定义。主要工作是编写软件需求规格说明书及用户手册。需求分析的任务是导出目标系统的逻辑模型,解决“做什么”的问题。制定软件集成测试计划是软件设计阶段需要完成的任务

  9、 在黑盒测试方式中,设计测试用例的主要根据是

  A、程序外部功能 B、程序内部逻辑

  C、程序数据结构 D、程序流程图

  【答案】A

  【解析】黑盒测试也称功能测试或数据驱动测试,设计测试用例着眼于程序外部结构、不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。

  10、 在软件设计中不使用的工具是

  A、系统结构图 B、程序流程图

  C、PAD图 D、数据流图(DFD图)

  【答案】D

  【解析】软件设计包括概要设计和详细设计,软件概要设计中,面向数据流的设计方法有变换型系统结构图和事务型数据流两种。软件详细设计,程序流程图(PDF)和PAD(问题分析图)是过程设计的常用工具。数据流图(DFD图)是软件定义阶段结构化分析方法常用的工具。

  11、针对简单程序设计,以下叙述的实施步骤正确的是

  A、确定算法和数据结构、编码、调试、整理文档

  B、编码、确定算法和数据结构、调试、整理文档

  C、整理文档、确定算法和数据结构、编码、调试

  D、确定算法和数据结构、调试、编码、整理文档

  【答案】A)

  【解析】简单程序设计的步骤是首先要确定算法和数据结构,然胡编码、调试,最后整理相关文档。

  12、关于C语言中数的表示,以下叙述正确的是

  A、只有整型数在允许范围内能精确无误的表示,实型数会有误差

  B、只要在在允许范围内整型和实型都能精确表示

  C、只有实型数在允许范围内能精确无误的表示,整型数会有误差

  D、只有八进制表示的数在不会有误差

  【答案】A)

  【解析】实型数据在内存中存储的二进制位数是有限的,例如float型数据在内存中有24位二进制尾数。而一个十进制实数转化为二进制实数时,其有效数字位数有可能会超过尾数的存储长度,从而导致有效数字丢失而产生误差

  13、以下关于算法叙述错误的是

  A、算法可以用伪代码、流程图等多种形式来描述

  B、一个正确的算法必须有输入

  C、一个正确的算法必须有输出

  D、用流程图可以描述的算法可以用任何一种计算机高级语言编写成程序代码

  【答案】B)

  【解析】一个正确的算法可以有零个或者多个输入,必须有一个或者多个输出

  14、以下叙述错误的是

  A、一个C程序可以包含多个不同名的函数

  B、一个C程序只能有一个主函数

  C、C程序在书写时,有严格的缩进要求,否则不能编译通过

  D、C程序的主函数必须用main作为函数名

  【答案】C)

  【解析】一个C程序有且只有一个主函数 main()。一个C 程序可以包含多个不同名字的子函数。C程序在书写时没有严格的缩进要求。

  15、设有以下语句

  Char ch1,ch2, scanf(”%c%c”,&ch1,&ch2);

  若要为变量ch1和ch2分别输入字符A和B,正确的输入形式应该是

  A、A和B之间用逗号间隔 B、A和B之间不能有任何间隔符

  C、A和B之间可以用回车间隔 D、A和B之间用空格间隔

  【答案】B)

  【解析】考察C语言中输入格式,因为在输入格式中定义好了”%c%c”,其中没有任何符号,所以中间不能加任何字符,包含不能加逗号、回车和空格,因为这些也算是字符。所以在输入时也不可以有任何间隔符号。

  16、以下选项中非法的字符常量是

  A、’102’ B、’65’ C、’xff’ D、’19’

  【答案】D)

  【解析】字符常量有两种表示方法:

  一种是用该字符的图形符号,如'b' ,'y',''。另外还可以用字符的ASCII码表示,即用反斜符()开头,后跟字符的ASCII码,这种方法也称为转义序列表示法,具体方法是:有两种形式:一种是用字符的八进制ASCII码,表示为:odd.这里,ddd是八进制值(o可以省略)。另一种使用字符的十六进制ASCII码值,表示为 xhh或0Xhh 这里hh是两位十六进制值。

  本题中D)选项‘19'使用是八进制表示,不应该出现9,所以错误

  17、有以下程序

  #include <sthio.h>

  Main()

  {

  Int A=0,B=0,C=0;

  C=(A-=A-5);(A=B,B+=4);

  Printf(“%d, %d, %d ”,A,B,C)

  }

  程序运行后输出的结果是

  A 0,4,5 B 4,4,5 C 4,4,4 D 0,0,0

  【答案】A)

  【解析】考察C语言关于赋值的应用,首先执行a-=a-5,即a=a-(a-5),使得a的值为5,然后执行c=(a-=a-5),即将a的值5赋给变量c,使得c的值也为5。然后执行下句逗号表达式中的a=b,把b的值0赋给a,此时a的值为0,然后执行b=b+4,使得b的值为4,最后打印输出。

  18、设变量均已正确定义并且赋值,以下与其他三组输出结构不同的一组语句是

  A、x++; printf((“%d ”,x); B、n=++x; printf((“%d ”,n);

  C、++x; printf((“%d ”,x); D、n=x++; printf((“%d ”,n);

  【答案】D)

  【解析】本题考察自增运算符,++x表示先将x值加1后再用,x++表示先使用x值,用后加1,所以本题中ABC选项都会输出x+1的值,只有D选项会输出x值。

  19、以下选项中,能表示逻辑值“假”的是

  A 1 B 0.000001 C 0 D 100.0

  【答案】C)

  【解析】在C语言中非0的值表示真,0表示假

  20、有以下程序

  #include <sthio.h>

  Main()

  { int a;

  Scanf(“%d”,&a);

  If(a++<9) printf((“%d ”,a);

  Else printf((“%d ”,a--);

  }

  程序运行时键盘输入9<回车>,则输出的结构是

  A、10 B 11 C 9 D 8

  【答案】A)

  【解析】考察if语句和自增自减运算符,判断条件中if(a++<9)是先用后加,即a的值为9,所以条件不成立,但是a已经进行了自增1操作,a的值此时为10,执行else语句时,因为打印a--,是先用后减,所以先输出10,然后a的值变为9

  21、有以下程序

  #include <sthio.h>

  Main()

  {int s=0,n;

  For (n=0;n<3;n<++)

  {switch(s)

  { case 0;

  Case 1;s+=1;

  Case 2;s+=2;break;

  Case 3;s+3;

  Case 4;s+=4;

  }

  printf((“%d ”,s);

  }

  }

  程序运行后的结果是

  A 1,2,4 B 1,3,6 C 3,10,14 D 3,6,10

  【答案】C)

  【解析】本题考察switch语句的应用,case分支后面如果没有break,那么就会顺序执行下面的`case,直到遇到break跳出。所以第一次循环后s的值为3打印输出。第二次s的值为:s=s+3,s=s+4,即为10,打印输出。第三次没有匹配成功直接执行default语句,s=s+4,所以s的值为14,打印输出。

  22、若k是int类型变量,且有以下for语句

  For(k=-1;k<0;k++) printf( ”);

  下面关于语句执行情况的叙述中正确的是

  A、循环体执行一次 B、循环体执行两次

  C、循环体一次也不执行 D、构成无限循环

  【答案】A)

  【解析】考察for循环语句,本题中k初始值为-1,执行一次循环体,执行完后k值为0,不满足k<0条件,推出循环,所以执行了一次。

  23、有以下程序

  #include <sthio.h>

  Main()

  {char A,B,C;

  B=’1’;C=’A’

  For(A=0;A<6;A++)

  {if(A%2) putchar(B+A);

  Else putchar(C+A);

  }

  }

  程序运行后输出的结果是

  A 1B3D5F B ABCDFE C A2C4E6 D 123456

  【答案】C)

  【解析】考察for语句和if语句,第一次循环a的值为0 ,a%2也为0 ,条件不满足所以打印的是(c+a)即变量c的值“A”。第二次a的值为1,条件a%2的值为1,条件满足打印字符(b+a)即字符 “2”。第三次a的值为2,条件不满足,打印(a+c)即字符”C”。同理打印后续字符为“4E6”。

  24、设有如下定义语句

  Int m[ ]={2,4,6,8},k=m;

  以下选项中,表达式的值为6的是

  A (k+2) B k+2 C k+2 D k+=2

  【答案】A)

  【解析】考察数组和指针的概念,本题中k指向数组m的首地址。(k+2)现将指针后移两个元素,即为m[2]的首地址,然后取出m[2]的值6,所以选择A选项。选项B的值是一个地址无意义。选项C的值为4。选项D使得m[0]的值为4。

  25、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下列划线处应该填写的是

  #include <sthio.h>

  #define N 5

  Viod fun(int x[N])

  {int m;

  For(m=N-1;m>0;m--) scanf(“%d ”, );

  }

  A &x[++m] B &x[m+1] C x+(m++) D x+m

  【答案】D)

  【解析】考察指针的概念和应用,数组名本身就是地址,所以不需要在用&符号。C选项不能对所有元素赋值而是反复再给一个数值赋值且是死循环。

  26、若有函数

  Viod fun(double a[], int n)

  {………}

  以下叙述中正确的是

  A、 调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送

  B、 形参a和n都是指针变量

  C、 形参a是一个数组名,n是指针变量

  D、 调用fun函数时将把double型实参数组元素一一对应地传送给形参a数组

  【答案】B)

  【解析】函数中的形参a[]已经退化为一个指针,所以AC都不对,D选项中只是传入一个指针,并没有把数组的元素挨个赋值,正确选项为B。

  27、有以下程序

  #include <sthio.h>

  Main()

  {int a,b,k,m,p1,p2;

  k=1,m=8;

  p1=&k,p2=&m;

  a=/p1-m; b=p1+p2+6;

  printf(“%d ”,a); printf(“%d ”,b);

  }

  编译时编译器提示错误信息,你认为出错的语句是

  A、a=/p1-m B、b=p1+p2+6

  C、k=1,m=8; D、p1=&k,p2=&m;

  【答案】A)

  【解析】选项A中a = /p1-m;表示方式不正确,未能正确表示出含义

  28、以下选项中有语法错误的是

  A char str[ ]={“guest”}; B、char str[10 ]={“guest”};

  C、char str[3] str[1]={“guest”}; D、char str[3][10];str[1]={“guest”};

  【答案】D)

  【解析】考察指针数组的概念,D选项中str为二维字符数组,不能够直接把一个字符串赋值到二维数组的某一行中。

  29、avg函数的功能是求整型数组中的前若干个元素的平均值,设数组元素个数最多不超过10,则下列函数说明语句错误的是

  A、int avg(int a,int n); B、int avg(int a[10],int n);

  C、int avg(int a,int n) ; D、int avg(int a[],int n);

  【答案】C)

  【解析】考察函数声明基本用法,C选项中函数的第一形参没有指名是数组,代表的是一个整型数,声明不正确。

  30、有以下函数

  #include <sthio.h>

  #include <string.h>

  main()

  { printf(“%d ”,strren”ATS 0121”) );}

  程序运行后的输出结果是

  A 3 B 8 C 4 D 9

  【答案】B)

  【解析】考察转义字符的用法,strlen函数的作用是求得字符串长度, 与1均是反义字符各表示一个字符所以打印值为8。

  31、有以下函数

  #include <sthio.h>

  main()

  { char a[20],b[20],c[20];

  scanf(”%s%s”,a,b);

  get(c);

  printf(”%s%s ”,a,b,c);

  }

  程序运行时从第一行开始输入 this is a cat!<回车>,则输出结果是

  A thisisacat! B this is a C thisis a cat! D thisisa cat!

  【答案】C)

  【解析】考察scanf和gets输入字符串的区别,scanf语句接收字符时遇到空格就作为一个字符串的结束,所以a数组中为this ,b数组中为is,但是getchar函数见到回车才认为结束所以c数组为 a cat!。所以打印结果如选项C。

  32、有以下函数

  #include <sthio.h>

  viod fun(char c)

  {if(c>’x’) fun(c-1);

  printf (“%c”,c);

  }

  main()

  {fun”z”;}

  程序运行输出结果是

  A xyz B wxyz C zyxw D zyx

  【答案】A)

  【解析】考察函数的嵌套调用,当运行fun(‘z’),调用fun(‘y’),然后嵌套调用fun(‘x’),输出结果为先输出x,然后输出y,最后输出z。