国家二级(C语言)机试模拟试卷156
选择题
1.下列叙述中正确的是( )。(B)
A. 所谓算法就是计算方法
B. 程序可以作为算法的一种描述方法
C. 算法设计只需考虑得到的计算结果
D. 算法设计可以忽略算法的运算时间
解析:算法是一组有穷指令集,是解题方案的准确而完整的描述。通俗地说,算法就是计算机解题的过程,重在解题方案的设计,并且不等于计算方法,故A和C选项不正确。程序的编制不可能优于算法的设计,但算法的描述可以用程序、伪代码、流程图来描述,故B选项正确。算法要求执行过程中所需要的基本运算次数和时间最少,即时间复杂度最低,所以D选项不正确。正确答案为B。
2.程序流程图中带有箭头的线段表示的是( )。(C)
A. 图元关系
B. 数据流
C. 控制流
D. 调用关系
解析:在程序流程图中:①标有名字的带箭头线段表示控制流;②矩形表示加工步骤;③菱形表示逻辑条件。
3.深度为5的完全二叉树的结点数不可能是( )。(A)
A. 15
B. 16
C. 17
D. 18
解析:对于满二叉树,叶子结点的数目等于2n-1,n为深度,这里就是24=16。
4.下列选项中不属于结构化程序设计原则的是( )。(A)
A. 可封装
B. 自顶向下
C. 模块化
D. 逐步求精
解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。
5.下列关于栈的叙述中正确的是( )。(B)
A. 栈按“先进先出”组织数据
B. 栈按“先进后出”组织数据
C. 只能在栈底插入数据
D. 不能删除数据
解析:栈是只允许在栈顶进行插入和删除运算的线性表,按“先进后出”组织数据。
6.下列描述中不属于软件特点的是( )。(D)
A. 软件是一种逻辑实体,具有抽象性
B. 软件在使用中不存在磨损、老化问题
C. 软件复杂性高
D. 软件使用不涉及知识产权
解析:软件不像硬件一样具有实物的特性,而是一种逻辑实体,具有抽象性;开发复杂性高,成本昂贵;在运行、使用期间不存在磨损、老化问题。故A、B和C选项正确。由于软件是一种知识产品,受知识产权法的保护,所以D选项不正确。
7.计算机软件的构成是( )。(D)
A. 源代码
B. 程序和数据
C. 程序和文档
D. 程序、数据及相关文档
解析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。答案选D。
8.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是( )。(D)
A. 下画线
B. 大写字母
C. 数字字符
D. 连接符
解析:C语言中标识符由字母、下画线或数字组成,且开头必须是字母或下画线。
9.设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为( )。(C)
A. 课号,成绩
B. 学号,成绩
C. 学号,课号
D. 学号,姓名,成绩
解析:学号是学生表S的主键,课号是课程表C的主键,因此选课表SC的关键字应该与前两个表能够直接联系且能唯一定义元组,学号和课号的组合满足条件。
10.有两个关系R和T如下:
(A)
A. 投影
B. 交
C. 选择
D. 并
解析:从表图中可以看出,关系T是从关系R中选取一部分字段(A和C)及其值构成新的关系,是一种纵向操作产生新列,属于投影,正确选项为A。
11.以下叙述中正确的是( )。(C)
A. 不同函数的形式参数不能使用相同名称的标识符
B. 用户自己定义的函数只能调用库函数
C. 实用的C语言源程序总是由一个或多个函数组成
D. 在C语言的函数内部,可以定义局部嵌套函数
解析:函数是一个独立的模块,不同函数之间的定义相互没有影响,所以标识符可以相同,选项A错误;除了main函数不能被其他函数调用之外,用户自定义函数可以调用其他任意函数,选项B错误;一个C程序可以有一个或多个程序文件,所以也可以有一个或多个函数,选项C正确;函数体内部只可以调用,但是不可以定义其他函数,选项D错误。故答案选C。
12.以下叙述中错误的是( )。(B)
A. C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件
B. C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
C. 用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D. C语言源程序经编译后生成后缀为.obj的目标程序
解析:C语言程序编译时将每条可执行语句转换为二进制的机器指令,但非执行语句(如注释语句)不被编译。所以选项B错误。
13.设有两行定义语句:
int scanf:
float case;
则以下叙述中正确的是( )。(A)
A. 第2行语句不合法
B. 两行定义语句都合法
C. 第1行语句不合法
D. 两行定义语句都不合法
解析:本题考查用户标识符,用户自己定义的标识符不能与关键字相同,并且尽量避免和预定义标识符相同。本题中scanf为预定义标识符,可以作为用户标识符;case为关键字,不能作为用户标识符,故而答案选A。
14.以下各项中,能正确表述算式sin(2πr+30°)的C语言表达式是( )。(C)
A. sin(2*π*r+30)
B. sin(2*3.14*r+30)
C. sin(2*3.14*r+3.14*30/180.0)
D. sin(2*3.14*r+30*3.14/360.0)
解析:考查算术表达式的写法,选项C中没有,π,需要用数值3.14代替,sin函数的参数为弧度,角度30转成弧度应为3.14*30/180。故应选C。
15.若有定义:int a,b,c;,则以下选项中的赋值语句正确的是( )。(C)
A. a=(b==c)=1;
B. (a=b)=c=1;
C. a=(b=c)+1;
D. a+b=c;
解析:赋值运算符的左侧必须为变量而不能是表达式,所以答案选C。
16.有以下程序:
#include<stdio.h>
main()
{
printf(\\(D)
A. 1
B. 变量无定义,输出不确定
C. -1
D. 0
解析:NULL为一个符号常量,对应的ASCII码值为0,答案选D。
17.设有定义:double x=2.12;,则以下各项中不能完整输出变量x值的语句是( )。(A)
A. printf(\\
本文档预览:3600字符,共12991字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载