国家二级C语言机试(选择题)模拟试卷151 (题后含答案及解析)
题型有:1. 
1. 设int类型的数据长度为2个字节,则unsigned int类型数据的取值范围是(    )。
A.0~255
B.0~65535
C.-32768~32767
D.-256~255
正确答案:B
解析:整型数据分为signed和unsigned两种,设int类型的数据长度为2个字节,则无符号整数表示的范围为0~65535。 知识模块:C语言的基本知识
2. 下列对于线性链表的描述中正确的是
A.存储空间不一定连续,且各元素的存储顺序是任意的
B.存储空间不一定连续,且前件元素一定存储在后件元素的前面
C.存储空间必须连续,且前件元素一定存储在后件元素的前面
D.存储空间必须连续,且各元素的存储顺序是任意的
正确答案:A
解析:一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。在线性链表中,各数据元素之间的前后件关系是由各结点的指针域来指示的,指向线性表中第一个结点的指针head称为头指针,当head=NULL(或0)时称为空表。 知识模块:公共基础知识
3. 以下选项中,不合法的C语言用户标识符是
A.AaBc
B.a-b
结构体数组不能作为参数传递给函数C.a_b
D._1
正确答案:B
解析:在C语言中的用户标识符只能由字母,数字和下划母组成,并且第一个字符必须是字母或下划线,在选项B中出现了非法的字符“-”。 知识模块:C语言基础知识
4. 在深度为7的满二叉树中,度为2的结点个数为
A.64
B.63
C.32
D.31
正确答案:B
解析:因为在任意的二叉树中,度为0的结点(即叶子结点)总比度为2的结点的个数多1个,而度为0的结点数n0=2m-1(其中m为二叉树的深度)。本题的度为0的结点个数n0=27-1=26=64。因此,度为2的结点数n2=n0-1=63。所以选项B正确。 知识模块:数据结构与运算
5. 下列叙述中正确的是(    )。
A.数据库的数据项之间无联系
B.数据库中任意两个表之间一定不存在联系
C.数据库的数据项之间存在联系
D.数据库的数据项之间以及两个表之间都不存在联系
正确答案:C
解析:数据库的数据项之间以及表之间都存在联系。 知识模块:公共基础知识
6. 下面不属于软件设计原则的是
A.抽象
B.模块化
C.自底向上
D.信息隐藏
正确答案:C
解析:软件设计的基本原则包括抽象、信息隐藏、模块化、局部化、确定性、一致性、完备性和可验证性。 知识模块:软件工程基础
7. 有以下程序段intj;floaty;charname[50];scanf(‘‘%2d%f%s’’,&j,&y,name);当执行上述程序段,从键盘上输入555667777abc后,y的值为
A.55566.0
B.7777.0
C.566.0
D.566777
正确答案:C
解析:因为在输入格式控制符中指定变量j的输入格式控制符为”%2d”,即变量i所占的宽度为2,所以变量j只接收输入数据的前两位,从第三位开始直到空格之间的输入整数都会被保存到变量y中,因为y为浮点型数据,所以输出结果为选项C。 知识模块:C语言程序设计
8. 以下程序的输出结果是(    )。main(  ){int x=1,y=0;if(!x)y++;else if(x==0)if(x)y+=2;else y+=3;printf(‘‘%d\n’’,y);}
A.一1
B.0
C.1
D.2
正确答案:B
解析:如果不满足if语句的条件,函数将不执行本题中x=1,if和else if的条件都不满足,故y值不改变输出。 知识模块:C语言程序设计
9. 以下叙述中正确的是
A.C程序中的每一行只能写一条语句
B.简单C语句必须以分号结束
C.C语言程序中的注释必须与语句写在同一行
D.C语句必须在一行内写完
正确答案:B
解析:C语言的书写格式自由,一行可写多条语句,一条语句也可写在不同行上。C语言注
释是比较自由的,可以写在一行或者多行。C语言规定每条语句和数据定义的最后必须有一个分号,分号是c语句的必要组成部分。 知识模块:C语言基础知识
10. 有以下程序:#include<stdio.h>int add(int a,int b){return(a+b);}main( ){int k,(*f)( ),a=5,b=10;f=add;…}则以下函数调用语句错误的是(    )。
A.k=f(a,b);
B.k=add(a,b);
C.k=(*f)(a,b);
D.k=*f(a,b);
正确答案:D
解析:D选项中,*f(a,b)表示调用后返回一个指向整型数据的地址指针,即该函数的返回值为指针类型,所以不能将其赋值给整形变量k。 知识模块:指针
11. 设有定义:  int x[2][3];则以下关于二维数组X的叙述错误的是
A.数组x可以看作是由x[0]和x[1]两个元素组成的一维数组
B.可以用x[0]=0;的形式为数组所有元素赋初值0
C.元素x[0]可看作是由3个整型元素组成的一维数组
D.x[0]和x[1]是数组名,分别代表一个地址常量
正确答案:B
解析:二维数组的元素在内存中占一系列连续的存储单元。数组元素在内存中的排列顺序是先存放第0行的元素,再存放第1行的元素……称这种存放顺序为按行存放。可以把一个二维数组看成是一个一维数组,每个数组元素又是包含有若干个元素的一维数组。另外在给二维数组赋初值时可以不用含花括号对。例如,inta[4][3]={1,2,4,5};在编译时,系统将按a数组元素在内存中排列的顺序,将花括号内的数据一一对应地赋给各个元素,若数据不足,系统将给后面的元素自动补初值0。以上将给a数组第一行的元素和第二行的第一个元素依次赋予1、2、4、5,其他元素的初值都为0。 知识模块:函数和数组
12. 当变量c的值不为2、4、6时,值为的表达式是( )。
A.(c>=2 && c<=6) || (c!=3) || (c!=5)
B.(c==2)||(c==4)||(c==6)
C.(c>=2 && c<=6)&& !(c%2)
D.(c>=2 && c<=6)&&(c%2!=1)
正确答案:A
解析:逻辑或运算符的两个运算对象中,只要有一个值为真,整个逻辑表达式的值就为真;逻辑与运算符的两个运算对象的值均为真,整个逻辑表达式的值才为真。选项A)中,只要c的值不为3或者不为5或者在2和6之间,这个表达式就为真,所以答案选A)。 知识模块:数据类型、运算符与表达式
13. 以下选项中,不合法的C语言用户标识符是
A.AaBc
B.a-b
C.a_b
D._1
正确答案:B
解析:在C语言中的用户标识符只能由字母,数字和下划母组成,并且第一个字符必须是字母或下划线,在选项B中出现了非法的字符“-”。 知识模块:C语言基础知识
14. 有以下程序#include<stdio.h>#defineSQR(x)x*xmain(    ){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf(‘‘%d\n’’,a);)程序的输出结果是
A.0
B.1
C.9
D.10412文件包含
正确答案:B
解析:SQR(k+m)宏展开以后为k+m*k+m,值为5,表达式a/=sQR(k+m)/SQR(k+m)为a=a/(5+5),表达式值为1。 知识模块:编译预处理和指针
15. 关于文件操作的叙述中正确的是(  )。
A.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
B.C语言中的文件是流式文件,因此只能顺序存取数据
C.打开一个已存在的文件并进行写操作后,原有文件中的全部数据必定被覆盖
D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失
正确答案:D
解析:在C语言中,有两种对文件的存取方式:顺序存取和直接存取。如果以“a”的方式对
一个已打开的文件进行写操作后,则原有文件中内容将保存,新的数据写在原有内容之后。如果以“a+”的方式为读和写而打开一个文件,则既可以对文件进行读,也可以对文件进行写,而且在读和写操作之间不必关闭文件,可以从头开始读。当对文件的读(写)操作完成之后,必须将它关闭。 知识模块:结构体及文件操作
16. 以下关于结构化程序设计的叙述中正确的是( )。
A.在C语言中,程序的模块化是利用函数实现的
B.结构化程序使用goto语句会很便捷
C.一个结构化程序必须同时由顺序、分支、循环三种结构组成
D.由三种基本结构构成的程序只能解决小规模的问题
正确答案:A
解析:goto语句会导致程序结构混乱,所以结构化程序中限制使用goto语句,选项B)错;一个结构化的程序可以依据该程序要实现的功能选用顺序、分支、循环这三种基本结构中
的某几种或者全部使用,不是必须都用上,选项C)错;已经证明,由这三种基本结构组成的算法可以解决任何复杂的问题,选项D)错;程序的模块化是指把程序要解决的总目标分解为若干目标,再进一步分解为具体的小目标,每个小目标即为一个模块,而函数是C语言的基本模块,实现某一模块的具体功能。答案选A)。 知识模块:循环结构程序设计
17. 若i和k都是int类型变量,有以下for语句for(i=0,k=-1;k=1;k++) printf(*\n);下面关于语句执行情况的叙述中正确的是
A.循环体执行两次
B.循环体执行一次
C.循环体一次也不能执行
D.构成无限循环
正确答案:D
解析:本题考查for循环。本题的for循环初始条件为i=0,k=-1;循环结束条件为k=1永
远为真(k不为0),因此循环不能结束。 知识模块:C语言程序设计
18. 以下叙述中正确的是
A.循环发生嵌套时,最多只能两层
B.三种循环for,while,do-while可以互相嵌套
C.循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误
D.for语句的圆括号中的表达式不能都省略掉
正确答案:B
解析:在一个循环体内又完整包含了另一个循环,称为循环嵌套。循环的嵌套可以多层,但每一层循环在逻辑上必须是完整的。for循环、while循环、do-while循环可以互相嵌套,但每层循环在逻辑上必须完整。而在for语句中,for语句中的表达式可以部分或全部省略,但两个“:”不可省略。 知识模块:C语言程序设计

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。