国家二级(C语言)机试模拟试卷462
选择题
1.有以下程序:
#include<stdio.h>
main()
{
float a,b,C,t;
a=3;b=7;c=1;
if(a>b)
{t=a;a=b.b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(b>c)
{t=b;b=c;c=t;}
printf(\\(C)
A. 口口3.00,口口1.00,口口7.00
B. 口口3.00,口口7.00,口口1.00
C. 口口1.00,口口3.00,口口7.00
D. 口口7.00,口口3.00,口口1.00
解析:本题考查if语句。该题包含了3个if语句,每个if语句后的{}都不可省略,因为每个{}中都包含了多条语句。首先判断条件a>b,由于3小于7,表达式a>b不成立,因此不执行{t=a;a=b;b=t;};然后判断条件a>c,由于3大于1,因此表达式a>c成立,则执行{t=a;a=c;c=t;},该表达式语句是用来交换a和c的值,执行完后a为1,c为3;然后判断条件b>c,由于7大于c中的3,因此b>c成立,则执行{t=b.b=c;c=t;},过程同上,执行后b为3,c为7。printf语句用来输出a,b,c中的值,并且要求输出的每个数据宽度为5个空格,小数部分保留2位,数据右对齐。故最后输出为C选项中所示结果。
2.在软件开发中,需求分析阶段产生的主要文档是( )。(D)
A. 数据字典
B. 详细设计说明书
C. 数据流图说明书
D. 软件需求规格说明书
解析:需求分析的最终结果是生成软件需求规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便。
3.层次型、网状型和关系型数据库划分原则是( )。(D)
A. 记录长度
B. 文件的大小
C. 联系的复杂程度
D. 数据之间的联系方式
解析:层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。
4.以下选项中可用做C程序合法实数的是( )。(B)
A. 3.0e0.2
B. .1eo
C. E9
D. 9.12E
解析:A选项中e后面的指数必须为整数,所以错误。C语言规定,E之前必须要有数字,所以C选项错误。E后面必须要有数字,且必须为整数,所以D选项错误。
5.设a和b均为int型变量,且a=6、b=11、c=3,则能使值为3的表达式是( )。(D)
A. b%(c%4)
B. b%(c-a%5)
C. b%a-a%5
D. (b%a)-(a%4)
解析:选项D)括号内的运算分别是b%a=11%6=5和a%c=6%4=2,最后得到5-2=3。
6.有下列程序段:
typedef struct NODE
{ int num;struct NODE*next;
} OLD;
下列叙述中正确的是( )。(C)
A. 以上的说明形式非法
B. NODE是一个结构体类型
C. OLD是一个结构体类型
D. OLD是一个结构体变量
解析:C语言允许用typedef说明一种新类型名,其一般形式为:typedef类型名标识符。typedef语句的作用仅仅是使“标识符”来代表已存在的“类型名”,并未产生新的数据类型。原有类型名依然有效。此题中,用使typedef定义了新的类型OLD结构,所以OLD为结构体类型。
7.以下叙述中错误的是( )。(A)
A. 可以给指针变量赋一个整数作为地址值
B. 函数可以返回地址值
C. 改变函数形参的值,不会改变对应实参的值
D. 当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL
解析:不能将一个整数直接赋给指针变量作为地址,所以A是错误的。函数的返回值可以是地址,即指针。函数调用中形参值的变化不会传递给实参。
8.在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。(C)
A. O(n)
B. O(n2)
C. O(log2n)
D. O(nlog2n)
解析:当有序线性表为顺序存储时才能用二分法查找。可以证明的是对于长度为凡的有序线性表,在最坏情况下,二分法查找只需要比较log2n次,而顺序查找需要比较n次。
9.下列模式中,能够给出数据库物理存储结构与物理存取方法的是( )。(A)
A. 内模式
B. 外模式
C. 概念模式
D. 逻辑模式
解析:数据库管理系统的三级模式结构由外模式、模式和内模式组成。 外模式,或子模式,或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式,或逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一部分。内模式,或存储模式,或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方式的描述。
10.以下不正确的转义字符是( )。(D )
A. ’\\\\\\\\’
B. ’\\\\d’
C. ’\\\\s’
D. ’088’
解析:’\\\\\\\\’是反斜线符,’\\\\d’是整型变量转义字符,’\\\\s’是字符串型转义字符,C语言中没有规定’088’为转义字符。
11.若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )。(C)
A. scanf(\\
B. scanfi(\\
C. scanf(\\
D. scanf(\\
解析:程序语句“int a,b,c,*p=&c;”定义了3个整型变量a,b,c和一个整型指针变量p,并且把变量c的地址赋给p。scanf函数的一般形式为“scanf(”格式控制字符串”,地址列表)”,其中的地址列表应当是存放输入数据变量的地址。
12.两次运行下面的程序,如果从键盘上分别输入3和2,则输出结果是( )。
#include
main()
{int x;
scanf(\\(A)
A. 4和3
B. 4和2
C. 4和1
D. 3和2
解析:本题考查if-else语句。首先,scanf函数通过键盘读入x的值。当x=3时,第一个if语句先判断条件,取x的值3和2比较,然后将x的值加1,if条件成立,执行下面的printf语句,输出x的值4。当x=2时,第一个if语句先判断条件,先取x的值2和2比较,然后将x的值加l(x的值变为3),if条件不成立,执行下面的else语句,先输出x的值3,再将x的值减1。
13.有以下程序:
#include<stdio.h
本文档预览:3600字符,共15701字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载