计算机二级C语言模拟题及答案
2017年计算机二级C语言模拟题及答案 1.1 单选题 1.下列变量名中,非法的是( C )。 A.A25 B.My_car C.My-str D.abc 2.下列常量中,十六进制int型常量是( A )。 A.0x5f B.x2a C.046 D.7a 3.下列常量中,不是字符常量的是( B )。 A.'\n' B."y" C.'x' D.'\7' 4.在函数体内定义了下述变量a,a的存储类为( D )。 int a; A.寄存器类 B.外部类 C.静态类 D.自动类 5.下列关于变量存储类的描述中,错误的是( C )。 A.任何变量定义后都具有一个确定的存储类 B.变量的存储类确定了变量的作用域和寿命 C.定义变量时没有存储类说明符者一律为自动类 D.内部静态类变量和外部静态类变量的存储类说明符都是static 6.下列关于变量数据类型的描述中,错误的是( A )。 A.定义变量时int型数据类型可以省略 B.变量的数据类型可以决定该变量占内存的字节数 C.变量的数据类型是可以被强制的 D.变量的数据类型是有高低之分的 7.长双精度浮点型常量的后缀是( C )。 A.U B.F C.L D.无 8.下列运算符中,不能用于浮点数操作的是( D )。 A.++ B.+ C.*= D.&(双目) 9.下列运算符中,优先级最高的是( A )。 A.*(双目) B.|| C.>> D.%= 10.下列运算符中,优先级最低的是( B )。 A.== B.?: C.| D.&& 11.已知:int a(3);下列表达式中,错误的是( C )。 A.a%2==0 B.a--+2 C.(a2)++ D.a>>=2 12.已知:int b(5),下列表达式中,正确的是( D )。 A.b="a" B.++(b1) C.b%2.5 D.b=3,b+1,b+2 6 13.下列关于类型转换的'描述中,错误的是( C )。 A.类型转换运算符是() B.类型转换运算符是单目运算符 C.类型转换运算符通常用于保值转换中 D.类型转换运算符作用于表达式左边 1.1 判断题 ×1.C++语言和C语言都是面向对象的程序设计语言。 √2.面向对象方法具有封装性、继承性和多态性。 √3.C语言是C++语言的一个子集。C++语言继承了C语言。 ×4.C++语言程序与C语言程序一样都是函数串。 ×5.C++语言支持封装性和继承性,不支持多态性。 √6.C++语言比C语言对数据类型要求更加严格了。 √7.C++语言对C语言进行了一次改进,使得编程更加方便了。 ×8.C++源程序在编译时可能出现错误信息,而在连接时不会出现错误信息。 √9.编译C++源程序时,出现了警告错(Warning)也可以生成可执行文件。 √10.C++语言程序的实现也要经过编辑、编译连接和运行3个步骤。 通过对1.5题中3个程序的修改,回答下列问题 从1.5题中第1题程序的修改中,总结出编程应该注意哪些问题。 答:C++程序要包含iostraem.h,main()函数前应加类型说明符void。 C++程序中所出现的变量是否必须先说明后使用?在函数体内说明变量时是否都要放在函数体的开头? 答:C++程序中所出现的变量必须先说明后使用。在函数体内说明变量时不一定要放在函数体的开头。 使用cout和插入符(<<)输出字符串常量时应注意什么? 答:可输出一个字符串常量,也可输出多个字符串常量。每输出一个字符串常量要使用一次插入符(<<)。 程序中定义过的变量,但没有赋值,也没有默认值,这时能否使用? 答:不能使用。因为它的值不确定。 5.一个程序编译通过并已生成执行文件,运行后并获得输出结果,这一结果是否一定正确? 答:不一定正确。可能还有算法错。 ;
计算机二级c语言真题
我本人第一次考计算机二级的时候,因为没有这么认真的复习,加上遇到了新题就是“病毒”的那一题,然后就没有通过。第二次的话花了差不多一个半月的时间认真复习吧,只要一有空就做题,第二次考到的级别是“优秀”。然后使用的是小黑老师的计算机二级软件练习,有相关的公众号可以自己在微信里面搜索。加上小黑老师配套的练习视频,或者去B站看一下未来教育的相关免费视频,两个视频相结合,你认为小黑和未来教育中同一套题里面哪一个方式简单你就选哪一个。考前我个人还是建议要看一下小黑老师考前直播,因为我第二次考试的时候小黑老师压中的题。看了一下小黑老师总结的考前直播那些重点复习都题目,其实就是题型中比较经典的,也是比较难度的那几道题经常考。还有小黑老师的考前直播也会详细再教一下那些比较有难度,然后又有很大机会考的题。选择题的话,我也是刷的是小黑老师的选择题刷题,然后我2020年九月份考的选择题跟小黑老师选择题练习题库是20道题都是一样的,可能是我幸运吧,但是也少不了题库发挥的作用。
2018年计算机二级考试C语言试题及答案(2)
2018年计算机二级考试C语言试题及答案(2) 选择题(每小题1分,共40分) 1[单选题] 若有定义语句:double a,* P=&a;以下叙述中错误的是( )。 A.定义语句中的*号是一个间址运算符 B.定义语句中的*号是一个说明符 C.定义语句中的P只能存放double类型变量的地址 D.定义语句中,*P=&a把变量a的地址作为初值赋给指针变量P 参考答案:A 参考解析:在变量定义double a,* P=&a;中,*号是一个指针运算符,而非间址运算符,所以A错误。 6[单选题] 若有定义语句:int x=10;,则表达式x-=x+x的值为( )。 A.0 B.-20 C.-10 D.10 参考答案:C 参考解析:算术运算符+的优先级高于-=,且-=的结合方向为自右向左,所以表达式x-=x+x可以表示成x=x-(x+x)=10-(10+10)=-10,选择C。 2[单选题] 若有定义语句:double x,y,*px,*py;执行了px=&x;py=&y;之后,正确的输入语句是( )。 A.scanf(”%If%le”,px,py); B.scanf(”%f%f”&x,&y); C.sceanf(”%f%f”,x.y); D.scanf(”%If%If'’,x,y); 参考答案:A 参考解析:因为x,y都是double型数据,所以输入时的格式字符应为%lf,所以B与C错误。D选项中scanf("%lf%If",x,y);应为scanf(“%If%If"”,&x,&y);。 3[单选题] 下列数据结构中,属于非线性结构的是( )。 A.循环队列 B.带链队列 C.二叉树 D.带链栈 参考答案:C 参考解析:树是简单的非线性结构,所以二叉树作为树的一种也是一种非线性结构。 4[单选题] 对于循环队列,下列叙述中正确的是( )。 A.队头指针是固定不变的 B.队头指针一定大于队尾指针 C.队头指针一定小于队尾指针 D.队头指针可以大于队尾指针,也可以小于队尾指针 参考答案:D 参考解析:循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构,所以队头指针有时可能大于队尾指针,有时也可能小于队尾指针。 5[单选题] 若变量已正确定义,在if(W)printf(”%d\n”,k);中,以下不可替代w的是( )。 A.ab+c B.ch=getchar() C.a==b+c D.a++ 参考答案:A 参考解析:选项A是非法的表达式,C语言中没有运算符。 6[单选题] 下列排序方法中,最坏情况下比较次数最少的是( )。 A.冒泡排序 B.简单选择排序 C.直接插入排序 D.堆排序 参考答案:D 参考解析:冒泡排序与筒单插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是nlog2n。 7[单选题] 数据库管理系统是( )。 A.操作系统的一部分 B.在操作系统支持下的系统软件 C.一种编译系统 D.一种操作系统 参考答案:B 参考解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中数据组织、数据操纵、数据维护、控制及保护和数据服务等。是一种在操作系统之上的系统软件。 8[单选题] 以下选项中,能用作用户标识符的是( )。 A._0_ B.8_8 C.void D.unsigned 参考答案:A 参考解析:C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。B中以数字8开头,所以错误。C与D中用的是关键字void与unsigned,所以错误。 9[单选题] 以下叙述中错误的是( )。 A.使用三种基本结构构成的程序只能解决简单问题 B.结构化程序由顺序、分支、循环三种基本结构组成 C.C语言是一种结构化程序设计语言 D.结构化程序设计提倡模块化的设计方法 参考答案:A 参考解析:使用顺序,选择(分支),循环三种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,所以A错误。 10[单选题] 下列叙述中正确的是( )。 A.栈是“先进先出”的线性表 B.队列是“先进后出”的线性表 C.循环队列是非线性结构 D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 参考答案:D 参考解析:栈是先进后出的线性表,所以A错误;队列是先进先出的线性表,所以B错误;循环队列是线性结构的线性表,所以C错误。 11[单选题] 以下不构成无限循环的语句或语句组是( )。 A.n=0: do{++n;}while(n<=0); B.n=0; while(1){n++;} C.n=10; while(n);{n--;} D.for(n=0,i=1;;i++)n+=i; 参考答案:A 参考解析:选项A中do后面的语句只执行了一次便结束了循环;B选项中条件while(1)永远成立,所以是死循环;C选项中n的值为10,而循环体为空语句,所以wilile(n)永远为真,进入死循环;D选项中for语句第二个表达式为空,所以没有判别条件,进入死循环。 12[单选题] 若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是( )。 A.1 B.0 C.2 D.不知道a的值,不能确定 参考答案:A 参考解析:逻辑或”||”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道a的值,但是若a为l,则左边运算对象为1;若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零,所以结果为真,即1。 13[单选题] 下列选项中不属于结构化程序设计原则的是( )。 A.可封装 B.自顶向下 C.模块化 D.逐步求精 参考答案:A 参考解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。 14[单选题] 某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是( )。 A.10 B.8 C.6 D.4 参考答案:C 参考解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个,所以本题中是5+1=6个。 15[单选题] 支持子程序调用的数据结构是( )。 A.栈 B.树 C.队列 D.二叉树 参考答案:A 参考解析:栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为A。
2018年计算机二级考试C语言试题及答案(1)
2018年计算机二级考试C语言试题及答案(1) 选择题 1). 在软件设计中,不属于过程设计工具的是( ) A.PDL(过程设计语言) B.PAD图 C.N-S图 D.DFD图 正确答案:D 答案解析:DFD(数据流图Data-Flow-Diagram)是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示。它直接支持系统功能建模。在软件详细设计的过程阶段,要对每个模块规定的功能以及算法的设计给出适当的算法描述。常见的过程设计工具有:图形工具:程序流程图,N-S,PAD,HIPO;表格工具:判定表;语言工具:PDL(伪码)。 2). 数据结构中,与所使用的计算机无关的是数据的( )。 A.存储结构 B.物理结构 C.逻辑结构 D.线性结构 正确答案:C 答案解析:数据的逻辑结构反映的是数据元素之间的逻辑关系,与使用的计算机无关。 3). 设有定义: int x=2; 以下表达式中,值不为6的是( ) A.2*x, x+=2 B.x++,2*x C.x*=(1+x) D.x*=x+1 正确答案:A 答案解析:本题考查逗号表达式。逗号表达式的求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值,因此,选项A中值为4;选项B中,值为6。选项C中x*=x+1 等价于x=x*(x+1),所以等于6;选项D与选项C等价,结果也为6。 4). 在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为( ) A.63 B.64 C.6 D.7 正确答案:B 答案解析:顺序查找又称顺序搜索。顺序查找一般是指在线性表中查找指定的元素,其基本方法是:从线性表的第一元素开始,依次将线性表中的元素与被查找的元素进行比较,若相等则表示找到(即查找成功),若线性表中所有元素都与被查元素进行了比较但都不相等,则表示线性表中没有要找的元素(即查找失败)。如果线性表中的第一个元素就是要查找的元素,则只需要做一次比较就查找成功;但如果要查找的元素是线性表中的最后一个元素,或者要查找元素不在线性表中,则需要与线性表中所有元素进行比较,这是顺序查找的最坏情况,比较次数为线性表的长度。 5). 下列特征中不是面向对象方法的主要特征的是( )。 A.多态性 B.标识惟一性 C.封装性 D.耦合性 正确答案:D 答案解析:面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:标识惟一性、多态性、封装性、模块独立性、继承和多态性好。 6). 下列叙述中正确的是( )。 A.调用printf( )函数时,必须要有输出项 B.使用putchar( )函数时,必须在之前包含头文件stdio.h C.在C语言中,整数可以以二进制、八进制或十六进制的形式输出 D.调节getchar( )函数读入字符时,可以从键盘上输入字符所对应的ASCII码 正确答案:B 答案解析:选项A,若printf函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项C,在C语言中,整数可以十进制、八进制或十六进制的形式输出;选项D,getchar函数是从标准输入设备读取一个字符。 7). 以下结构体类型说明和变量定义中正确的是( ) A.typedef struct { int n; char c; } REC; REC t1,t2; B.struct REC ; { int n; char c; }; REC t1,t2; C.typedef struct REC; { int n=0; char c=′A′; } t1,t2; D.struct { int n; char c; } REC; REC t1,t2; 正确答案:A 答案解析:定义结构体类型的一般形式为:struct 结构体名 {成员列表};struct 结构体名后不能加″;″号,所以选项B、C)错误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为struct t1,t2;选项A为用户自定义类型,其为正确的定义形式。 8). 若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是( ) A.一对一 B.一对多 C.多对一 D.多对多 正确答案:B 答案解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。 9). 关于C语言的变量,以下叙述中错误的是( ) A.所谓变量是指在程序运行过程中其值可以被改变的量 B.变量所占的存储单元地址可以随时改变 C.程序中用到的所有变量都必须先定义后才能使用 D.由三条下划线构成的符号名是合法的变量名 正确答案:B 答案解析:变量是指在程序运行过程中其值可以改变的值,一个变量实质上是代表了内存中的某个存储单元。在程序中对某个变量的操作实际上就是对这个存储单元的操作,程序运行期间,这个分配的存储单元不会改变,但是其值可以变化。变量命名要符合标识符的规定,其中下划线是标识符的组成字符。程序中所有变量都必须先定义后使用。 10). 当变量c的值不为2、4、6时,值也为″真″的表达式是( ) A.(c==2)||(c==4)||(c==6) B.(c>=2 && c<=6)&& !(c%2) C.(c>=2 && c<=6)&&(c%2!=1) D.(c>=2 && c<=6) || (c!=3) || (c!=5) 正确答案:D 答案解析:逻辑或运算中,只要有一项为真,表达式的值就为真,故选项D中c的值不为2、4、6时,那么表达式(c>=2 && c<=6)以及(c!=3)、(c!=5)必有一个成立,表达式的值也为真。 11). 在C语言中,函数返回值的类型最终取决于 A.函数定义时在函数首部所说明的函数类型 B.return语句中表达式值的类型 C.调用函数时主调函数所传递的实参类型 D.函数定义时形参的类型 正确答案:A 答案解析:在C语言中,应当在定义函数时指定函数值的类型,凡不加类型说明的函数,一律按整型处理。在定义函数时,对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数类型为主,即函数类型决定返回值的类型。
2018年计算机二级考试C语言试题及答案(3)
2018年计算机二级考试C语言试题及答案(3) 1[单选题] 以下叙述中正确的是 A.两个字符串可以用关系运算符进行大小比较 B.函数调用strlen(s);会返回字符串S实际占用内存的大小(以字节为单位) C.C语言本身没有提供对字符串进行整体操作的运算符 D.当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和 参考答案:C 参考解析:本题考查字符串处理函数strien、strcat、strcmp。B选项中strlen返回的是字符串s实际占用内存大小加上结尾符,A选项中不能用关系运算符进行大小比较,可以使用strcmp。D选项当使用连接函数strcat时,内存空间会减少一个字符位置。 2[单选题] 一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是( )。 A.一对一B.一对多C.多对多D.多对一 参考答案:C 参考解析:因为一个人可以操作多个计算机,而一台计算机又可以被多个人使用,所以两个实体之间是多对多的关系。 3[单选题] 对于while(!E)s;,若要执行循环体s,则E的取值应为: A.E等于1B.E不等于0C.E不等于1D.E等于0 参考答案:D 参考解析:while语句的一般形式为:while(表达式)语句;其中表达式是循环条件,语句为循环体。while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。该题中如要执行语句s,则!E应为真,因此E应等于0,D选项正确。 4[单选题] 在软件设计中不使用的工具是( )。 A.系统结构图B.PAD图C.数据流图(DFD图)D.程序流程图 参考答案:C 参考解析:系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。PAD图是在详细设计阶段用到的。程序流程图是对程序流程的图形表示,在详细设计过程中用到。数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以选择C。 5[单选题] 若有定义语句:char a='\82';则变量a( ) A.说明不合法B.包含1个字符C.包含2个字符D.包含3个字符 参考答案:B 参考解析:char a='\82',定义字符量a,char型变量值为1个字节长度,并从右侧开始运算,所以a的值应为'2'。因此B选项正确。 6[单选题] 若fp已定义为指向某文件的指针,且没有读到该文件的末尾,则C语言函数feof(fp)的函数返回值是 A.EOFB.非0C.-1D.0 参考答案:D 参考解析:本题考查文件的定位,feof函数的用法是从输入流读取数据,如果到达文件末尾(遇文件结束符),eof函数值为非零值,否则为0,所以选项D正确。 7[单选题] 以下叙述中正确的是 A.只要适当地修改代码,就可以将do-while与while相互转换 B.对于“for(表达式1;表达式2;表达式3)循环体”首先要计算表达式2的值,以便决定是否开始循环 C.对于“for(表达式1;表达式2;表达式3)循环体”,只在个别情况下才能转换成while语句 D.如果根据算法需要使用无限循环(即通常所称的“死循环”),则只能使用while语句 参考答案:A 参考解析:B选项中,for语句中需要先求解先求解表达式1;C选项中,for语句使用最为灵活,它完全可以取代while语句;D选项中,对于死循环,也可以使用for语句。因此A选项正确。
2018年计算机二级考试C语言试题及答案(5)
2018年计算机二级考试C语言试题及答案(5) 1[单选题] 耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是( )。 A.提高耦合性降低内聚性有利于提高模块的独立性 B.降低耦合性提高内聚性有利于提高模块的独立性 C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度 D.内聚性是指模块问互相连接的紧密程度 参考答案:B 参考解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以A错误,B正确。耦合性是模块间互相连接的紧密程度的度量而内聚性是指一个模块内部各个元素问彼此结合的紧密程度,所以C与D错误。 2[单选题] 软件设计中划分模块的一个准则是( )。 A.低内聚低耦合 B.高内聚低耦合 C.低内聚高耦合 D.高内聚高耦合 参考答案:B 参考解析:一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。 3[单选题] 下列数据结构中,能够按照“先进后出”原则存取数据的是( )。 A.循环队列 B.栈 C.队列 D.二叉树 参考答案:B 参考解析:栈是按先进后出的原则组织数据的。队列是先进先出的原则组织数据。 4[单选题] 以下叙述中错误的是( )。 A.gets函数用于从终端读入字符串 B.getchar函数用于从磁盘文件读入字符 C.fput,函数用于把字符串输出到文件 D.fwrite函数用于以二进制形式输出数据到文件 参考答案:B 参考解析:本题考查字符处理函数和文件操作函数,属于基础知识,其中B选项getehar函数是用于从终端读入一个字符。 5[单选题] 以下选项中能表示合法常量的是( )。 A.1,200 B.1.5E2.0 C.'\' D."\007" 参考答案:D 参考解析:A选项中整型常量应表示为1200,不能包含“,”。B选项中E后面的指数必须为整数。C选项中转义字符以“\”开始,若要表示字符“\”,应写为“\\”。 6[单选题] 若有定义语句:char s[10]="1234567\0\0";则strlen(S)的值是( )。 A.7 B.8 C.9 D.10 参考答案:A 参考解析:strlen()函数在计算字符串长度时,遇到结束标识为止,且长度不包括结束标识。本题中字符串,从第一个字符开始,遇到第一个结束标识‘\0’为止,注意‘\0’不占字符串长度,所以字符串长度为7。因此A选项正确。 7[单选题] C源程序中不能表示的数制是( )。 A.十六进制 B.八进制 C.十进制 D.二进制 参考答案:D 参考解析:在C语言中整型常量可以用十进制、八进制和十六进制等形式表示,但不包括二进制,所以选择D。 8[单选题] 设有定义: int a=1,b=2,e=3; 以下语句中执行效果与其他三个不同的是( )。 A.if(a>b) c=a,a=b,b=c; B.if(a>b) {e=a,a=b,b=e;} C.if(a>b)e=a;a=b;b=C; D.if(a>b) {c-7-a;a=b;b=e;} 参考答案:C 参考解析:由于a小于b,所以所有选项中的条件都为假,c选项中实际执行了a=b;b=c;两个操作。而A、B、D选项由于条件不成立.所以什么也没有做,所以选择C选项。 9[单选题] 软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( )。 A.编译程序 B.操作系统 C.教务管理系统 D.汇编程序 参考答案:C 参考解析:编译软件、操作系统、汇编程序都属于系统软件,只有C教务管理系统才是应用软件。