互盾应急下线了没手机服务没有了吗 互盾应急下线了没手机服务下线公

【2016计算机二级java考试上机试题及答案】-学路网-学习路上 有我相伴
2016计算机二级java考试上机试题及答案
来源:应届毕业生 &责任编辑:小易 &时间: 14:07:10
  1. 基本操作(1小题,计30分)
  注意:下面出现的&考生文件夹&均为%UsER%
  在考生文件夹中存有文件名为java_1.java的文件,该程序是不完整的,请
  在注释行&//**********Found**********&下一行语句的下划线地方填入
  正确内容, 然后删除下划线,请勿删除注释行或改动其他已有语句内容。
  存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。
  本题的要求是:
  使程序按下列格式打印:
  注意:
  在输出的字符串中不含有空格。
  给定源程序:
  //用一个打印语句输出多行结果
  public class java_1
  public static void main( string args[] )
  //*********Found********
  ___________system.out.print______________(&欢迎\n你\n参加\njava\n考试&);
  解题思路:
  java程序修改如下:
  第1处:在屏幕上打印输出,需填入 system.out.println 或 system.out.print
  参考源程序:c:\wexam\\hlpsys\参考答案\java_1.java
  请把该程序复制到c:\wexam\中,然后进行编译和执行。
  2. 简单应用(1小题,计40分)
  注意:下面出现的&考生文件夹&均为%UsER%
  在考生文件夹中存有文件名为java_2.java的文件,该程序是不完整的,请
  在注释行&//**********Found**********&下一行语句的下划线地方填入
  正确内容, 然后删除下划线,请勿删除注释行或改动其他已有语句内容。
  存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。
  本题的要求是:
  程序中Handlebutton类是&Please press me!&按钮的监听器类。
  完成程序,使在点击&Please press me!&按钮时在命令窗口中打印
  &The button is pressed!&,并且在点击窗口右上方的关闭窗口按钮时能
  够关闭窗口。
  给定源程序:
  import java.awt.*;
  import java.awt.event.*;
  public class java_2 extends Frame {
  \TAb \TAb
  \TAb public java_2(string s){
  \TAb \TAb super(s);
  \TAb }
  \TAb public static void main(string args[]){\TAb \TAb
  \TAb \TAb java_2 fr = new java_2(&Testing&);
  \TAb \TAb button b=new button(&Please press me!&);
  //*********Found********
  b.addActionListener(____new Handlebutton()__);
  \TAb \TAb fr.add(b);
  \TAb \TAb fr.setsize(200,200);
  \TAb \TAb \TAb \TAb
  \TAb \TAb fr.addWindowListener(new WindowAdapter(){
  \TAb \TAb \TAb public void windowClosing(WindowEvent e) {
  \TAb \TAb \TAb \TAb system.exit(0);
  \TAb \TAb \
  \TAb \TAb });
  //*********Found********
  \TAb \TAb fr.setVisible(____true________);\TAb
  \TAb }
  class Handlebutton implements ActionListener{
  public void actionPerformed(ActionEvent e){
  \TAb system.out.println(&The button is pressed!&);
  解题思路:
  java程序修改如下:
  第1处:为按钮注册监听器,需填入 new Handlebutton()
  第2处:将窗体设为可见,需填入 true
  参考源程序:c:\wexam\\hlpsys\参考答案\java_2.java
  请把该程序复制到c:\wexam\中,然后进行编译和执行。
  3. 综合应用(1小题,计30分)
  注意:下面出现的&考生文件夹&均为%UsER%
  在考生文件夹中存有文件名为java_3.java的文件,该程序是不完整的,请
  在注释行&//**********Found**********&下一行语句的下划线地方填入
  正确内容, 然后删除下划线,请勿删除注释行或改动其他已有语句内容。
  存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。
  本题的要求是:
  该程序是测试以0作除数异常,在文本域中,显示出异常信息。完成程序
  并正常运行,运行结果如图所示。
  给定源程序:
  import java.awt.*;
  import java.awt.event.*;
  import javax.swing.*;
  import java.io.*;
  public class java_3
  public static void main(string[] args)
  ExceptTestFrame frame = new ExceptTestFrame();
  frame.setDefaultCloseOperation(jFrame.EXIT_ON_CLOsE);
  frame.setVisible(true);
  class ExceptTestFrame extends jFrame
  public ExceptTestFrame()
  setTitle(&ExceptTest&);
  Container contentPane = getContentPane();
  ExceptTestPanel panel = new ExceptTestPanel();
  contentPane.add(panel);
  pack();
  class ExceptTestPanel extends box
  public ExceptTestPanel()
  super(boxLayout.y_AXIs);
  group = new buttonGroup();
  addRadiobutton(&整数被零除&, new
  ActionListener()
  //*********Found********
  public void ________________(ActionEvent event)
  //*********Found********
  a[1] = 1 / (a.length - a.__length________);
  textField = new jTextField(30);
  add(textField);
  private void addRadiobutton(string s, ActionListener listener)
  jRadiobutton button = new jRadiobutton(s, false)
  protected void fireActionPerformed(ActionEvent event)
  textField.setText(&No exception&);
  super.fireActionPerformed(event);
  catch (Exception exception)
  //*********Found********
  textField.__setText______(exception.tostring());
  button.addActionListener(listener);
  add(button);
  group.add(button);
  private buttonG
  private jTextField textF
  private double[] a = new double[10];
  解题思路:
  java程序修改如下:
  第1处:事件处理方法,需填入 actionPerformed
  第2处:被零除,测试异常处理,需填入 length
  第3处:设置文本框文字,需填入 setText
  参考源程序:c:\wexam\\hlpsys\参考答案\java_3.java
  请把该程序复制到c:\wexam\中,然后进行编译和执行。
下页更精彩:1
本文相关:当前位置: >>
计算机二级填空选择汇总
计算机二级 C语言填空选择汇总
(1) 下面叙述正确的是______。(C)
A. 算法的执行效率与数据的存储结构无关
B. 算法的空间复杂度是指算法程序中指令(或语句)的条数
C. 算法的有穷性是指算法必须能在执
行有限个步骤之后终止
D. 以上三种描述都不对
(2) 以下数据结构中不属于线性数据结构的是______。(C)
A. 队列
D. 栈
(3) 在一棵二叉树上第5层的结点数最多是______。(B)
A. 8
D. 15
(4) 下面描述中,符合结构化程序设计风格的是______。(A)
A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑
B. 模块只有一个入口,可以有多个出口
C. 注重提高程序的执行效率
D. 不使用goto语句
(5) 下面概念中,不属于面向对象方法的是______。(D)
A. 对象
D. 过程调用
(6) 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是______。(B)
A. 可行性分析
B. 需求分析
C. 详细设计
D. 程序编码
(7) 在软件开发中,下面任务不属于设计阶段的是______。(D)
A. 数据结构设计
B. 给出系统模块结构
C. 定义模块算法
D. 定义需求并建立系统模型
(8) 数据库系统的核心是______。(B)
A. 数据模型
B. 数据库管理系统
C. 软件工具
D. 数据库
(9) 下列叙述中正确的是______。(C)
A. 数据库是一个独立的系统,不需要操作系统的支持
B. 数据库设计是指设计数据库管理系统
C. 数据库技术的根本目标是要解决数据共享的问题
D. 数据库系统中,数据的物理结构必须与逻辑结构一致
(10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是______。(A)
A. 内模式
C. 概念模式
D. 逻辑模式
(11) 算法的时间复杂度是指______。(C)
A. 执行算法程序所需要的时间
B. 算法程序的长度
C. 算法执行过程中所需要的基本运算次数
D. 算法程序中的指令条数
(12) 下列叙述中正确的是______。(A)
A. 线性表是线性结构
B. 栈与队列是非线性结构
C. 线性链表是非线性结构
D. 二叉树是线性结构
(13) 设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为______。(B)
A. 349
D. 351
(14) 结构化程序设计主要强调的是______。(B)
A. 程序的规模
B. 程序的易读性
C. 程序的执行效率
D. 程序的可移植性
(15) 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是______。(D)
A. 概要设计
B. 详细设计
C. 可行性分析
D. 需求分析
(16) 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是______。(A)
A. 控制流
C. 数据存储
D. 源和潭
(17) 软件需求分析阶段的工作,可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及______。(B)
A. 阶段性报告
B. 需求评审
D. 都不正确
(18) 下述关于数据库系统的叙述中正确的是______。(A)
A. 数据库系统减少了数据冗余
B. 数据库系统避免了一切冗余
C. 数据库系统中数据的一致性是指数据类型的一致 D. 数据库系统比文件系统能管理更多的数据
(19) 关系表中的每一横行称为一个______。(A)
A. 元组
D. 码
(20) 数据库设计包括两个方面的设计内容,它们是______。(A)
A. 概念设计和逻辑设计
B. 模式设计和内模式设计
C. 内模式设计和物理设计
D. 结构特性设计和行为特性设计
(21) 算法的空间复杂度是指______。(D)
A. 算法程序的长度
B. 算法程序中的指令条数
C. 算法程序所占的存储空间
D. 算法执行过程中所需要的存储空间
(22) 下列关于栈的叙述中正确的是______。(D)
A. 在栈中只能插入数据
B. 在栈中只能删除数据
C. 栈是先进先出的线性表
D. 栈是先进后出的线性表
(23) 在深度为5的满二叉树中,叶子结点的个数为______。(C)
A. 32
D. 15
(24) 对建立良好的程序设计风格,下面描述正确的是______。(A)
A. 程序应简单、清晰、可读性好 B. 符号名的命名要符合语法 C. 充分考虑程序的执行效率 D. 程序的注释可有可无
(25) 下面对对象概念描述错误的是______。(A)
A. 任何对象都必须有继承性 B. 对象是属性和方法的封装体 C. 对象间的通讯靠消息传递 D. 操作是对象的动态性属性
(26) 下面不属于软件工程的3个要素的是______。(D)
A. 工具
D. 环境
(27) 程序流程图(PFD)中的箭头代表的是______。(B)
A. 数据流
C. 调用关系
D. 组成关系
(28) 在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是______。(A)
A. 数据库系统
B. 文件系统
C. 人工管理
D. 数据项管理
(29) 用树形结构来表示实体之间联系的模型称为______。(B)
A. 关系模型
B. 层次模型
C. 网状模型 D. 数据模型
(30) 关系数据库管理系统能实现的专门关系运算包括______。(B)
A. 排序、索引、统计
B. 选择、投影、连接
C. 关联、更新、排序
D. 显示、打印、制表
(31) 算法一般都可以用哪几种控制结构组合而成______。(D)
A. 循环、分支、递归
B. 顺序、循环、嵌套
C. 循环、递归、选择
D. 顺序、选择、循环
(32) 数据的存储结构是指______。(B)
A. 数据所占的存储空间量B. 数据的逻辑结构在计算机中的表示
C. 数据在计算机中的顺序存储方式D. 存储在外存中的数据
(33) 设有下列二叉树:
对此二叉树中序遍历的结果为______。(B)
A. ABCDEF
D. DEBFCA
(34) 在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送______。(D)
A. 调用语句
D. 消息
(35) 检查软件产品是否符合需求定义的过程称为______。(A)
A. 确认测试
B. 集成测试
C. 验证测试
D. 验收测试
(36) 下列工具中属于需求分析常用工具的是______。(D)
A. PAD
D. DFD
(37) 下面不属于软件设计原则的是______。(C)
A. 抽象
C. 自底向上
D. 信息隐蔽
(38) 索引属于______。(B)
D. 概念模式
(39) 在关系数据库中,用来表示实体之间联系的是______。(D)
A. 树结构
D. 二维表
(40) 将E-R图转换到关系模式时,实体与联系都可以表示成______。(B)
A. 属性
D. 域
(41) 在下列选项中,哪个不是一个算法一般应该具有的基本特征______。(C)
A. 确定性
D. 拥有足够的情报
(42) 希尔排序法属于哪一种类型的排序法______。(B)
A. 交换类排序法
B. 插入类排序法
C. 选择类排序法
D. 建堆排序法
(43) 下列关于队列的叙述中正确的是______。(C)
A. 在队列中只能插入数据
B. 在队列中只能删除数据
C. 队列是先进先出的线性表
D. 队列是先进后出的线性表
(44) 对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。(B)
A. N+1
C. (N+1)/2
D. N/2
(45) 信息隐蔽的概念与下述哪一种概念直接相关______。(B)
A. 软件结构定义
B. 模块独立性
C. 模块类型划分
D. 模拟耦合度
(46) 面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是______。(C)
A. 模拟现实世界中不同事物之间的联系
B. 强调模拟现实世界中的算法而不强调概念
C. 使用现实世界的概念抽象地思考问题从而自然地解决问题
D. 鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考
(47) 在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。(C)
A. 详细设计
B. 需求分析
C. 总体设计
D. 编程调试
(48) 软件调试的目的是______。(B)
A. 发现错误
B. 改正错误
C. 改善软件的性能
D. 挖掘软件的潜能
(49) 按条件f对关系R进行选择,其关系代数表达式为______。(C)
A. R|X|R
D. ∏f(R)
(50) 数据库概念设计的过程中,视图设计一般有三种设计次序,以下各项中不对的是______。(D)
A. 自顶向下
B. 由底向上
C. 由内向外
D. 由整体到局部
(51) 在计算机中,算法是指______。(C)
A. 查询方法
B. 加工方法
C. 解题方案的准确而完整的描述
D. 排序方法
(52) 栈和队列的共同点是______。(C)
A. 都是先进后出
B. 都是先进先出
C. 只允许在端点处插入和删除元素
D. 没有共同点
(53) 已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是______。(A)
A. cedba
D. deabc
(54) 在下列几种排序方法中,要求内存量最大的是______。(D)
A. 插入排序
B. 选择排序
C. 快速排序
D. 归并排序
(55) 在设计程序时,应采纳的原则之一是______。(A)
A. 程序结构应有助于读者理解
B. 不限制goto语句的使用
C. 减少或取消注解行
D. 程序越短越好
(56) 下列不属于软件调试技术的是______。(B)
A. 强行排错法
B. 集成测试法
D. 原因排除法
(57) 下列叙述中,不属于软件需求规格说明书的作用的是______。(D)
A. 便于用户、开发人员进行理解和交流 B. 反映出用户问题的结构,可以作为软件开发工作的基础和依据
C. 作为确认测试和验收的依据D. 便于开发人员进行需求分析
(58) 在数据流图(DFD)中,带有名字的箭头表示______。(C)
A. 控制程序的执行顺序B. 模块之间的调用关系
C. 数据的流向D. 程序的组成成分
(59) SQL语言又称为______。(C)
A. 结构化定义语言
B. 结构化控制语言
C. 结构化查询语言
D. 结构化操纵语言
(60) 视图设计一般有3种设计次序,下列不属于视图设计的是______。(B)
A. 自顶向下
B. 由外向内
C. 由内向外
D. 自底向上
(61) 数据结构中,与所使用的计算机无关的是数据的______。(C)
A. 存储结构
B. 物理结构
C. 逻辑结构
D. 物理和存储结构
(62) 栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是______。(D)
A. ABCED
D. DCBEA
(63) 线性表的顺序存储结构和线性表的链式存储结构分别是______。(B)
A. 顺序存取的存储结构、顺序存取的存储结构
B. 随机存取的存储结构、顺序存取的存储结构
C. 随机存取的存储结构、随机存取的存储结构
D. 任意存取的存储结构、任意存取的存储结构
(64) 在单链表中,增加头结点的目的是______。(A)
A. 方便运算的实现
B. 使单链表至少有一个结点 C. 标识表结点中首结点的位置 D. 说明单链表是线性表的链式存储实现
(65) 软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指______。(B)
A. 模块间的关系
B. 系统结构部件转换成软件的过程描述
C. 软件层次结构
D. 软件开发过程
(66) 为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为______。(B)
A. PAD图
D. 数据流图
(67) 数据处理的最小单位是______。(C)
B. 数据元素
D. 数据结构
(68) 下列有关数据库的描述,正确的是______。(C)
A. 数据库是一个DBF文件
B. 数据库是一个关系
C. 数据库是一个结构化的数据集合
D. 数据库是一组文件
(69) 单个用户使用的数据视图的描述称为______。(A)
A. 外模式
B. 概念模式
D. 存储模式
(70) 需求分析阶段的任务是确定______。(D)
A. 软件开发方法
B. 软件开发工具 C. 软件开发费用
D. 软件系统功能
(71) 算法分析的目的是______。(D)
A. 找出数据结构的合理性
B. 找出算法中输入和输出之间的关系
C. 分析算法的易懂性和可靠性D. 分析算法的效率以求改进
(72) n个顶点的强连通图的边数至少有______。(C)
D. n+1
(73) 已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是______。(B)
A. 堆排序
B. 直接插入排序
C. 快速排序
D. 直接选择排序
(74) 用链表表示线性表的优点是______。(A)
A. 便于插入和删除操作
B. 数据元素的物理顺序与逻辑顺序相同
C. 花费的存储空间较顺序存储少D. 便于随机存取
(75) 下列不属于结构化分析的常用工具的是______。(D)
A. 数据流图
B. 数据字典
D. PAD图
(76) 软件开发的结构化生命周期方法将软件生命周期划分成______。(A)
A. 定义、开发、运行维护
B. 设计阶段、编程阶段、测试阶段
C. 总体设计、详细设计、编程调试D. 需求分析、功能定义、系统设计
(77) 在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看做是______。(C)
A. 循环的集合
B. 地址的集合
C. 路径的集合
D. 目标的集合
(78) 在数据管理技术发展过程中,文件系统与数据库系统的主要区别是数据库系统具有______。(D)
A. 数据无冗余
B. 数据可共享
C. 专门的数据管理软件
D. 特定的数据模型
(79) 分布式数据库系统不具有的特点是______。(B)
A. 分布式
B. 数据冗余
C. 数据分布性和逻辑整体性
D. 位置透明性和复制透明性
(80) 下列说法中,不属于数据模型所描述的内容的是______。(C)
A. 数据结构
B. 数据操作
C. 数据查询
D. 数据约束
公共基础知识填空40题
1) 算法的复杂度主要包括______复杂度和空间复杂度。
答:时间
(2) 数据的逻辑结构在计算机存储空间中的存放形式称为数据的______。
答:模式或逻辑模式或概念模式
(3) 若按功能划分,软件测试的方法通常分为白盒测试方法和______测试方法。
(4) 如果一个工人可管理多个设施,而一个设施只被一个工人管理,则实体&工人&与实体&设备&之间存在______联系。
答:一对多或1:N或1:n
(5) 关系数据库管理系统能实现的专门关系运算包括选择、连接和______。
(6) 在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、______遍历和后序遍历。答:中序
(7) 结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、______和限制使用goto语句。答:模块化
(8) 软件的调试方法主要有:强行排错法、______和原因排除法。答:回溯法
(9) 数据库系统的三级模式分别为______模式、内部级模式与外部级模式。答:概念或概念级
(10) 数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。
答:数据存储
(11) 设一棵完全二叉树共有500个结点,则在该二叉树中有______个叶子结点。答:250
(12) 在最坏情况下,冒泡排序的时间复杂度为______。答:n(n-1)/2或n*(n-1)/2或O(n(n-1)/2)或O(n*(n-1)/2)
(13) 面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个______。答:实体
(14) 软件的需求分析阶段的工作,可以概括为四个方面:______、需求分析、编写需求规格说明书和需求评审。
答:需求获取
(15) ______是数据库应用的核心。答:数据库设计
(16) 数据结构包括数据的______结构和数据的存储结构。答:逻辑
(17) 软件工程研究的内容主要包括:______技术和软件工程管理。答:软件开发
(18) 与结构化需求分析方法相对应的是______方法。答:结构化设计
(19) 关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。答:参照完整性
(20) 数据模型按不同的应用层次分为三种类型,它们是______数据模型、逻辑数据模型和物理数据模型。答:概念
(21) 栈的基本运算有三种:入栈、退栈和______。答:读栈顶元素或读栈顶的元素或读出栈顶元素
(22) 在面向对象方法中,信息隐蔽是通过对象的______性来实现的。答:封装
(23) 数据流的类型有______和事务型。答:变换型
(24) 数据库系统中实现各种数据管理功能的核心软件称为______。答:数据库管理系统或DBMS
(25) 关系模型的数据操纵即是建立在关系上的数据操纵,一般有______、增加、删除和修改四种操作。答:查询
(26) 实现算法所需的存储单元多少和算法的工作量大小分别称为算法的 ______。答:空间复杂度和时间复杂度
(27) 数据结构包括数据的逻辑结构、数据的 ______以及对数据的操作运算。答:存储结构
(28) 一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的______。答:可重用性
(29) 面向对象的模型中,最基本的概念是对象和 ______。答:类
(30) 软件维护活动包括以下几类:改正性维护、适应性维护、______维护和预防性维护。答:完善性
(31) 算法的基本特征是可行性、确定性、______和拥有足够的情报。答:有穷性
(32) 顺序存储方法是把逻辑上相邻的结点存储在物理位置______的存储单元中。答:相邻
(33) Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向______的设计方法。答:数据结构
(34) 数据库设计分为以下6个设计阶段:需求分析阶段、______、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。
答:概念设计阶段或数据库概念设计阶段
(35) 数据库保护分为:安全性控制 、______、并发性控制和数据的恢复。答:完整性控制
(36) 测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。答:调试
(37) 在最坏情况下,堆排序需要比较的次数为______。答:O(nlog2n)
(38) 若串s=&Program&,则其子串的数目是______。答:29
(39) 一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体&项目主管&与实体&项目&的联系属于______的联系。
答:1对多或1:N
(40) 数据库管理系统常见的数据模型有层次模型、网状模型和______三种。答:关系模型
【例1】算法的时间复杂度取决于_______。(考点2)
A)问题的规模
B)待处理的数据的初态
C)问题的难度
D)A)和B)
解析:算法的时间复杂度不仅与问题的规模有关,在同一个问题规模下,而且与输入数据有关。即与输入数据所有的可能取值范围、输入各种数据或数据集的概率有关。答案:D)
【例2】在数据结构中,从逻辑上可以把数据结构分成_______。(考点3)
A)内部结构和外部结构
B)线性结构和非线性结构C)紧凑结构和非紧凑结构
D)动态结构和静态结构
解析:逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间为一对一的关系,非线性结构表示数据元素之间为一对多或者多对一的关系,所以答案为B)。答案:B)
【例3】以下_______不是栈的基本运算。(考点5)
A)判断栈是否为素空
B)将栈置为空栈C)删除栈顶元素
D)删除栈底元素
解析:栈的基本运算有:入栈,出栈(删除栈顶元素),初始化、置空、判断栈是否为空或满、提取栈顶元素等,对栈的操作都是在栈顶进行的。答案:D)
【例4】链表不具备的特点是_______。(考点6)
A)可随机访问任意一个结点
B)插入和删除不需要移动任何元素
C)不必事先估计存储空间
D)所需空间与其长度成正比
解析:顺序表可以随机访问任意一个结点,而链表必须从第一个数据结点出发,逐一查找每个结点。所以答案为A)。
【例5】已知某二叉树的后序遍历序列是DACBE,中序遍历序列是DEBAC,则它的前序遍历序列是_______。(考点8)
A)ACBED
B)DEABCC)DECAB
D)EDBAC
解析:后序遍历的顺序是&左子树-右子树-根结点&;中序遍历顺序是&左子树-根结点-右子树&;前序遍历顺序是&根结点-左子树-右子树&。根据各种遍历算法,不难得出前序遍历序列是EDBAC。所以答案为D)。
【例6】设有一个已按各元素的值排好序的线性表(长度大于2),对给定的值k,分别用顺序查找法和二分查找法查找一个与k相等的元素,比较的次数分别是s和b,在查找不成功的情况下,s和b的关系是_______。(考点9)
A)s=b
D)s≥b
解析:对于顺序查找,查找不成功时和给定关键字比较的次数为n+1。二分查找查找不成功的关键字比较次数为〔log2n〕+1。当n≥2时,显然n+1&〔log2n〕+1。答案:B)
【例7】在快速排序过程中,每次划分,将被划分的表(或子表)分成左、右两个子表,考虑这两个子表,下列结论一定正确的是_______。(考点11)
A)左、右两个子表都已各自排好序B)左边子表中的元素都不大于右边子表中的元素
C) 左边子表的长度小于右边子表的长度D)左、右两个子表中元素的平均值相等
解析:快速排序基本思想是:任取待排序表中的某个元素作为基准(一般取第一个元素),通过一趟排序,将待排元素分为左右两个子表,左子表元素的排序码均小于或等于基准元素的排序码,右子表的排序码则大于基准元素的排序码,然后分别对两个子表继续进行排序,直至整个表有序。答案:B)
二、填空题
【例1】问题处理方案的正确而完整的描述称为_______。(考点1)
解析:计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。答案:算法
【例2】一个空的数据结构是按线性结构处理的,则属于_______。(考点4)
解析:一个空的数据结构是线性结构或是非线性结构,要根据具体情况而定。如果对数据结构的运算是按线性结构来处理的,则属于线性结构,否则属于非线性结构。答案:线性结构
【例3】设树T的度为4,其中度为1、2、3和4的结点的个数分别为4、2、1、1,则T中叶子结点的个数为_______。(考点7)
解析:根据树的性质:树的结点数等于所有结点的度与对应的结点个数乘积之和加1。
因此树的结点数为1×4+2×2+3×1+4×1+1=16。叶子结点数目等于树结点总数减去度不为0的结点数之和,即16-(4+2+1+1)=8。答案:8
【例4】二分法查找的存储结构仅限于_______且是有序的。(考点10)
解析:二分查找,也称折半查找,它是一种高效率的查找方法。但二分查找有条件限制:要求表必须用顺序存储结构,且表中元素必须按关键字有序(升序或降序均可)。答案:顺序存储结构
2010年3月二级c语言笔试真题及答案
试题:
一、选择题((1)―(10)、(21)―(40)每题2分,(11)―(20)每题1分。共70分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写
在答题卡上,答在试卷上不得分。
(1) 下列叙述中正确的是A
A)对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n
B)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)
C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)
D) 对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n log2n)
(2) 算法的时间复杂度是指D
A)算法的执行时间
B)算法所处理的数据量
C)算法程序中的语句或指令条数
D)算法在执行过程中所需要的基本运算次数
(3) 软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是B
A)编辑软件
B)操作系统
C)教务管理系统
D)浏览器
(4) 软件(程序)调试的任务是A
A)诊断和改正程序中的错误
B)尽可能多地发现程序中的错误
C)发现并改正程序中的所有错误
D)确定程序中错误的性质
(5) 数据流程图(DFD图)是C
A)软件概要设计的工具
B)软件详细设计的工具
C)结构化方法的需求分析工具
D)面向对象方法的需求分析工具
(6) 软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于B
A)定义阶段
B)开发阶段
C)维护阶段
D)上述三个阶段
(7) 数据库管理系统中负责数据模式定义的语言是A
A)数据定义语言
B)数据管理语言
C)数据操纵语言
D)数据控制语言
(8) 在学生管理的关系数据库中,存取一个学生信息的数据单位是D
(9) 数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的B
A)需求分析阶段
B)逻辑设计阶段
C)概念设计阶段
D)物理设计阶段
(10) 有两个关系R和T如下:
R
T
A B C
a 1 2
b 2 2
c 3 2
A B C
c 3 2
d 3 2
则由关系R得到关系T的操作是A
选择
(11) 以下叙述正确的是B
A)C语言程序是由过程和函数组成的
B)C语言函数可以嵌套调用,例如:fun(fun(x))
C)C语言函数不可以单独编译
D)C语言中除了main函数,其他函数不可以作为单独文件形式存在
(12) 以下关于C语言的叙述中正确的是B
A)C语言中的注释不可以夹在变量名或关键字的中间
B)C语言中的变量可以再使用之前的任何位置进行定义
C)在C语言算术的书写中,运算符两侧的运算数类型必须一致
D)C语言的数值常量中夹带空格不影响常量值的正确表示
(13) 以下C语言用户标示符中,不合法的是D
A)_1
(14) 若有定义:double a=22;int i=0,k=18;则不符合C语言规定的赋值语句是C
A)a=a++,i++
B)i=(a+k)&=(i+k)
(15)
#include &stdio.h&
Void main()
{
char a,b,c,d;
scanf(”%c%c”,&a,&b);
c=getchar();
d=getchar();
printf(”%c%c%c%c\n”,a,b,c,d);
}
当执行程序时,按下列方式输入数据(从第一列开始,&CR&代表回车,注意:回车是一个字符)
12&CR&
34&CR&
则输出结果是:C
A、1234
16、以下关于C语言数据类型使用的叙述中错误的是:D
A、若要准确无误的表示自然数,应使用整数类型。
B、若要保存带有多位小数的数据,应使用双精度类型。
C、若要处理如”人员信息”等含有不同类型的相关数据,应自定义结构体类型。
D、若只处理”真”和”假”两种逻辑值,应使用逻辑类型。
17、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是:A
A、1
D、不知道a的值,不能确定
18、以下选项中与if(a==1) a=b;else a++;语句功能不同的switch语句是:B
A、switch(a)
B、switch(a==1)
{ case 1:a=b;
case 0 : a=b;
default : a++;
case 1 : a++;
}
}
C、switch(a)
D、switch(a==1)
default : a++;
case 1:a=b;
case 1:a=b;
case 0: a++;
}
19、有如下嵌套的if语句
k=c;
以下选项中与上述if语句等价的语句是C
A、k=(a&b)?a:b;k=(b&c)?b:c;
B、k=(a&b)?((b&c)?a:b):((b&c)?b:c);
C、k=(a&b)?((a&c)?a:c):((b&c)?b:c);
D、k=(a&b)?a:b;k=(a&c)?a;c
(20)有以下程序
#include
&stdio.h&
main()
{ int i,j,m=1;
for(i=1;i&3;i++)
{ for(j=3;j&0;j--)
{ if(i*j&3)
m*=i*j;
}
}
printf(”m=%d\n”,m)
}
程序运行后的输出结果是C
(A) m=6
(21)有以下程序
#includes &stdio.h&
main()
{ int a=1,b=2;
for(;a&8;a++) {b+=a; a+=2;}
printf (”%d,%d\n”,a,b);
}
程序运行后的输出结果是D
(A)9,18
(D)10,14
(22)有以下程序,其中k的初值为八进制数
#include &stdio.h&
main()
{int k=011;
printf(”%d\n”,k++);
}
程序运行后的输出结果是D
(A)12
(23)下列语句中,正确的是A
A) char * s=”Olympic”;
B) char s[7] ; s=”Olympic”;
C) char * s={”Olympic”};
D) char s[7] ; s={”Olympic”};
(24)以下关于return语句的叙述中正确的是D
A)一个自定义函数中必须有一条return语句
B) 一个自定义函数中可以根据不同情况设置多条return语句
C)定义成viod类型的函数中可以有带返回值的return语句
D)没有return语句的自定义函数在执行结束时不能返回到调用处
(25)下列选项中,能够正确定义数组的语句是D
A)int num[0..2008];
B) int num[];
C) int N=2008;
D) #define N 2008
int num[N];
int num[N]
(26)有以下程序
#include&stdio.h&
void fun (char*c,int d)
{*c=*c+1;d=d+1;
printf(”%c,%c,”,*c,d);
}
main()
{char b=’a’,a=’A’;
fun(&b,a); printf(”%c,%c\n”,b,a);
}
程序运行后的输出结果是A
(27)若有定义int(*pt)[3];,则下列说法正确的是D
A)定义了基类型为int的三个指针变量
B)定义了基类型为int的具有三个元素的指针数组pt。
C)定义了一个名为*pt、具有三个元素的整型数组
D)定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组
(28)设有定义double a[10],*s=a;,一下能够代表数组元素a[3]的是B
A)(*s)[3]
(29)有以下程序
#include&stdio.h&
main()
{ int a[5]={1,2,3,4,5}, b[5]={0,2,1,3,0},is=0
for(i=0;i&5;i++) s=s+a[b[i]];
printf(&%d\n&,s);
}
程序运行后的输出结果是C
A) 6
30)有以下程序
#include&stdio.h&
main()
{ int b[3] [3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0; i&3; i++)
For(j=i;j&=i;j++)
t+=b[i][b[j][i]];
Printf(&%d\n&,t);
}
程序运行后的输出结果是 C
A)1
(31)若有以下定义和语句A
char sl[10]= &abcd!&, *s2=&n123\\&;
printf(&%d %d\n&, strlen(s1),strlen(s2));
则输出结果是
A) 5 5
(32)有以下程序
#include&stdio.h&
#define N 8
void fun(int
{*x=*(x+i);}
main()
{ int a[N]={1,2,3,4,5,6,7,8},i;
fun(a,2);
for(i=0; i&N/2); i++)
{ printf(&%d&,a[i]);}
printf(&\n&);
}
程序运行后的输出结果是C
A)1 3 1 3
B) 2 2 3 4
C) 3 2 3 4
(33)有以下程序
#include&studio.h&
int f(int t [ ],int n);
main()
{int a[4]={1,2,3,4},s;
s=f{a,4}; printf(”%d\n”,s);
}
int f(int t[], int n)
{ if (n&0)
return t[n-1]+f(t,n-1);
else
return 0;
}
程序运行后的输出结果是B
A)4
(34)有以下程序
#include&studio.h&
int fun()
{static int
x=1;
x*=2;
}
main()
{int I,s=1;
for (i=1;i&=2;i++)
s=fun();
printf(”%d\n”,s);
}
程序运行后的输出结果是C
A)0
(35)以下程序
#include &stdio.h&
#define
(a)-(a)
main()
{int
a=2,b=3,c=5,d;
d=SUB(a+b)*c;
printf(”%d\n”,d);
}
程序运行后的结果是C
A)0
(36)没有定义
struct complex
{
real,} datal={1,8},data2;
则以下赋值语句中的错误的是B
A)data2=data1;
B)data2=(2,6);
C)data2.real1=data1.
D)data2.real=data1.
(37)有以下程序
#include &studio.h&
#include &string.h&
struct A
{ char b[10];};
void f(struct
t);
main()
{struct
a={1001,”ZhangDa”,1098.0};
f(a); pringt(”%d,%s,%6.1f\n”,a.a,a.b,a.c);
}
void f(struct
t)
{t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;}
程序运行后的输出结果是A
A)1001,ZhangDa,1098.0
B)1002,ChangRong,1202.0
C)1001,ChangRong,1098.0
D)1002,ZhangDa,1202.0
(38)有以下定义和语句
struct
workers
{ char name[20];
srruct
{}
};
struct workers
w,*
pw=&w
能给w中year成员赋1980的语句是D
A)*pw.year=1980;
B)w.year=1980;
C)pw-&year=1980;
D)w.s.year=1980;
(39)有以下程序
#include &stdio.h&
main()
{int a=2,b=2,c=2;
printf(”%d\n”,a/b&c);
}
程序运行后的结果是C
A)0
(40)以下程序
#include&stdio.h&
main( )
{
str[10];
fp=fopen(”myfile.dat”,”w”);
fputs(”abc”,fp);
fclose(fp);
fp=fopen(”myfile.dat”,”a+”);
rewind(fp,”gd”,28);
rewind(fp);
fscanf(fp,”gs”,str);
puts(str);
fclose(fp);
}
程序运行后的输出结果是C
A)abc
D)因类型不一致而出错
二、填空题(每空2分,共30分)
请将每空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。
(1)一个队列的初始状态为空,先将元素A,CB,C,D,E,F,5,4,3,2,1依次入队,然后再依次退队,则元素退队的顺序为_ABCDEF__54321__。
(2)设某循环列队的容量为50,如果头指针front=45(指向队头元素的前一位置),尾指针rear=10(指向队尾元素),则该循环队列中共有___15__个元素。
(3)设二叉数如下:
对该二叉树进行后序遍历的结果为EDBGHFCA
(4)软件是
程序 、数据和文档的集合。
(5)有一个学生选课的关系,其中学生的关系模式为:学生(学号,姓名,班级,年龄),课程的关系模式为:课程(课号,课程名,学时),其中两个关系模式的键分别是学好和课号,则关系模式选课可以定义为:选课(学号,
,成绩)。
(6)设x为int型变量,请写出一个关系表达式
:x%3==0&&x%7==0
,用以判断x同时为3和7的倍数时,关系表达式的值为真。
(7)有以下程序
#include & stdio.h &
main()
{ int a=1,b=2,c=3,d=0;
if (a==1)
else if(c!=3)
printf(”%d\n”,d);
}
程序运行后的输出结果是:

(8)有以下程序
#include & stdio.h &
main()
{
int m,n;
scanf(”%d%d”,&m,&n);
while (m!=n)
{
while(m&n) m=m-n;
while(m&n)n=n-m;
}
printf(”%d\n”,m);
}
程序运行后,当输入14
63&回车&时,输出结果是
(9)有以下程序
#include &stdio.h&
main ()
{
int I,j,a[][3]={1,2,3,4,5,6,7,8,9};
for (i=1;i&3;i++)
for(j=I;j&3;j++)
printtf(”%d”,a[i][j]);
printf(”\n”);
}
程序运行后的输出结果是
(10) 有以下程序
#include &stdio.h&
main()
{
[]={1,2,3,4,5,6},*k[3],i=0;
while(i&3)
k[i]=&a[2*i];
printf(”%d”,*k[i]);
}
}
程序运行后的输出结果是____135______
(11) 有以下程序
#include &stdio.h&
main()
{
a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
b[3]={0},i;
for(i=0;i&3;i++) b[i]=a[i][2]+a[2][i];
for(i=0;i&3;i++) printf(”%d”,b[i]);
printf(”\n”);
}
程序运行后的结果是____101418________
(12) 有以下程序
#include &stdio.h&
#include &string.h&
void fun(char*str)
{
n=strlen(str);
temp=str[n-1];
for(i=n-1;i&0;i--) str[i]=str[i-1];
str[0]=
}
main()
{
char s[50];
scanf(”%s”,s);
printf(”%s\n”,s);
}
程序运行后输入:abcdef&回车&,则输出结果是____________
13、以下程序的功能是:将值为三位正整数的变量x中的数值按照个位、十位、百位的顺序拆分并输出。请填空。
#include&stdio.h&
main()
{
int x=256;
printf(”%d-%d-%d\n”, X%10
,x/10%10,x/100);
}
14、以下程序用以删除字符串中的所有的空格,请填空。
#include&stdio.h&
main()
{
s[100]={”our .tercher teach
c language!”};int i,j;
for( i=j=0;s[i]!=‘\0’;i++)
if(s[i]!=‘\0’ ’) { s[j]=s[i];j++; }
s[j]=
printf(”%s\n”,s);
}
(15)以下程序功能是:借助指针变量找出数组元素中的最大值及其元素的下标值。请填空。
#include &stdio.h&
main()
{
int a[10],*p,*s;
for(p=a;p-a&10;p++) scanf(”%d”,p);
for(p=a,s=a;p-a&10;p++)
if(*p&*s) s=_______p________;
printf(”index=%d\n”,s-a);
答案:
1――――――10:A,D,B,A,C,B,A,D,B,A
11-----------20:B,B,D,C,C,D,A,B,C,C
21-----------30:D,D,A,D,D,A,D,B,C,C
31----------40:A,C,B,C,C,B,A,D,C,C
填空题:
1:ABCDEF54321
2:15
3:EDBGHFCA
4:程序
5:课号
6:x%3==0&&x%7==0
7:4
8:7
9:123569
10:135
11:101418
12:fabcde
13:X%10
14:‘\0’
15:p
2009年9月全国计算机等级考试二级笔试试卷
C语言程序设计
(考试时间90分钟,满分100分)
一、选择题((1)―(10)、(21)―(40)每题2分,(11)―(20)每题1分,共70分)
(1)下列数据结构中,属于非线性结构的是
A)循环队列
B) 带链队列
C) 二叉树
D)带链栈
(2)下列数据结果中,能够按照“先进后出”原则存取数据的是
A) 循环队列
B) 栈
C)队列
D)二叉树
(3)对于循环队列,下列叙述中正确的是
A)队头指针是固定不变的
B)队头指针一定大于队尾指针
C)队头指针一定小于队尾指针
D)队头指针可以大于队尾指针,也可以小于队尾指针
(4)算法的空间复杂度是指
A)算法在执行过程中所需要的计算机存储空间
B)算法所处理的数据量
C)算法程序中的语句或指令条数
D)算法在执行过程中所需要的临时工作单元数
(5)软件设计中划分模块的一个准则是
A) 低内聚低耦合
B) 高内聚低耦合
C) 低内聚高耦合
D) 高内聚高耦合
(6)下列选项中不属于结构化程序设计原则的是
A) 可封装
D) 自顶向下
C) 模块化
D) 逐步求精
(7)软件详细设计产生的图如下:
该图是
A) N-S图
B) PAD图
C) 程序流程图
D) E-R图
(8)数据库管理系统是
A)操作系统的一部分
B) 在操作系统支持下的系统软件
C) 一种编译系统
D) 一种操作系统
(9)在E-R图中,用来表示实体联系的图形是
A) 椭圆图
B) 矩形
C) 菱形
D) 三角形
(10)有三个关系R,S和T如下:
其中关系T由关系R和S通过某种操作得到,该操作为
A)
(11)以下叙述中正确的是
A)程序设计的任务就是编写程序代码并上机调试
B)程序设计的任务就是确定所用数据结构
C)程序设计的任务就是确定所用算法
D)以上三种说法都不完整
(12)以下选项中,能用作用户标识符的是
A)void
B)8_8
C)_0_
D)unsigned
(13)阅读以下程序
#include &stdio.h&
{ float printF;
printf(“请输入2个数:”);
scanf(“%d %f”,&case,&pjrintF);
printf(“%d %f\n”,case,printF);
该程序编译时产生错误,其出错原因是
A)定义语句出错,case是关键字,不能用作用户自定义标识符
B)定义语句出错,printF不能用作用户自定义标识符
C)定义语句无错,scanf不能作为输入函数使用
D)定义语句无错,printf不能输出case的值
(14)表达式:(int)((double)9/2)-(9)%2的值是
(15)若有定义语句:int x=10;,则表达式x-=x+x的值为
(16)有以下程序
#include &stdio.h&
{ int a=1,b=0;
printf(“%d,”,b=a+b);
printf(“%d\n”,a=2*b);
程序运行后的输出结果是
D)1,2
17)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是
A)if(a&b) c=a,a=b,b=c;
B)if(a&b) {c=a,a=b,b=c;}
C)if(a&b) c=a;a=b;b=c;
D)if(a&b) {c=a;a=b;b=c;}
(18)有以下程序
#include &stdio.h&
{ int c=0,k;
for (k=1;k&3;k++)
switch (k)
{ default: c+=k
case 2: c++;
case 4: c+=2;
printf(“%d\n”,c);
程序运行后的输出结果是
(19)以下程序段中,与语句:k=a&b?(b&c?1:0):0;功能相同的是
A)if((a&b)&&(b&c)) k=1;
B)if((a&b)||(b&c) k=1;
C)if(a&=b) k=0;
else if(b&=c) k=1;
D)if(a&b) k=1;
else if(b&c) k=1;
else k=0;
20)有以下程序
#include &stdio.h&
{ char s[]={“012xy”};int i,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]&=’a’&&s[i]&=’z’) n++;
printf(“%d\n”,n);
程序运行后的输出结果是
(21)有以下程序
#include &stdio.h&
{ int n=2,k=0;
while(k++&&n++&2);
printf(“%d %d\n”,k,n);
程序运行后的输出结果是
(22)有以下定义语句,编译时会出现编译错误的是
A)char a=’a’;
B)char a=’\n’;
C)char a=’aa’;
D)char a=’\x2d’;
(23)有以下程序
#include &stdio.h&
main()
{ char c1,c2;
c1=’A’+’8’-‘4’;
c2=’A’+’8’-‘5’;
printf(“%c,%d\n”,c1,c2);
}
已知字母A的ASCII码为65,程序运行后的输出结果是
D)输出无定值
(24)有以下程序
#include &stdio.h&
void fun(int p)
{ int d=2;
p=d++; printf(“%d”,p);}
{ int a=1;
fun(a); printf(“%d\n”,a);}
程序运行后的输出结果是
(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能
#define MIN -
int findmax (int x[],int n)
for(i=0;i&n;i++)
{ max=MIN;
if(max&x[i]) max=x[i];}
造成错误的原因是
A)定义语句int i,中max未赋初值
B)赋值语句max=MIN;中,不应给max赋MIN值
C)语句if(max&x[i]) max=x[i];中判断条件设置错误
D)赋值语句max=MIN;放错了位置
(26)有以下程序
#include &stdio.h&
{ int m=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf(“%d,%d,%d,%d\n”,m,n,*p,*q);
程序运行后的输出结果是
A)1,2,1,2
B)1,2,2,1
C)2,1,2,1
D)2,1,1,2
(27)若有定义语句:int a[4][10],*p,*q[4];且0≤i&4,则错误的赋值是
B)q[i]=a[i]
D)p=&a[2][1]
(28)有以下程序
#include &stdio.h&
#include&string.h&
{ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];
printf(“%d,”,strlen(p));printf(“%s\n”,p);
程序运行后的输出结果是
A)9,One*World
B)9,One*Dream
C)10,One*Dream
D)10,One*World
(29)有以下程序
#include &stdio.h&
{ int a[ ]={2,3,5,4},i;
for(i=0;i&4;i++)
switch(i%2)
{ case 0:switch(a[i]%2)
{case 0:a[i]++;
case 1:a[i]--;
case 1:a[i[=0;
}
for(i=0;i&4;i++) printf(“%d”,a[i]); printf(“\n”);
}
A)3 3 4 4
B)2 0 5 0
C)3 0 4 0
D)0 3 0 4
(30)有以下程序
#include &stdio.h&
#include&string.h&
main()
{ char a[10]=”abcd”;
printf(“%d,%d\n”,strlen(a),sizeof(a));
}
程序运行后的输出结果是
(31)下面是有关C语言字符数组的描述,其中错误的是
A)不可以用赋值语句给字符数组名赋字符串
B)可以用输入语句把字符串整体输入给字符数组
C)字符数组中的内容不一定是字符串
D)字符数组只能存放字符串
(32)下列函数的功能是
fun(char * a,char * b)
{ while((*b=*a)!=’\0’) {a++,b++;} }
A)将a所指字符串赋给b所指空间
B)使指针b指向a所指字符串
C)将a所指字符串和b所指字符串进行比较
D)检查a和b所指字符串中是否有’\0’
(33)设有以下函数
void fun(int n,char * s) {……}
则下面对函数指针的定义和赋值均是正确的是
A)void (*pf)(); pf=
B)viod *pf(); pf=
C)void *pf(); *pf=
D)void (*pf)(int,char);pf=&
(34)有以下程序
#include &stdio.h&
int f(int n);
{ int a=3,s;
s=f(a);s=s+f(a);printf(“%d\n”,s);
int f(int n)
{ static int a=1;
程序运行以后的输出结果是
(35)有以下程序
#include &stdio.h&
#define f(x) x*x*x
{ int a=3,s,t;
s=f(a+1);t=f((a+1));
printf(“%d,%d\n’,s,t);
程序运行后的输出结果是
(36)下面结构体的定义语句中,错误的是
A)struct ord {};
B)struct ord {}
C)struct ord {}
D)struct {}
(37)设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是
A)char str[ ]=”string”;c=
B)scanf(“%s”,c);
C)c=getchar();
D)*c=”string”;
(38)有以下程序
#include &stdio.h&
#include&string.h&
{ char b[10];};
struct A f(struct A t);
{ struct A a={1001,”ZhangDa”,1098.0};
a=f(a);jprintf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);
struct A f(struct A t)
( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0; )
程序运行后的输出结果是
A)1001,ZhangDa,1098.0
B)1001,ZhangDa,1202.0
C)1001,ChangRong,1098.0
D)1001,ChangRong,1202.0
(39)若有以下程序段
printf(“%d\n”,r&&1);
输出结果是
(40)下列关于C语言文件的叙述中正确的是
A)文件由一系列数据依次排列组成,只能构成二进制文件
B)文件由结构序列组成,可以构成二进制文件或文本文件
C)文件由数据序列组成,可以构成二进制文件或文本文件
D)文件由字符序列组成,其类型只能是文本文件
二、填空题(每空2分,共30分)
(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有 【1】 个结点。
(2)程序流程图中的菱形框表示的是 【2】 。
(3)软件开发过程主要分为需求分析、设计、编码与测试四个阶段,其中 【3】 阶段产生“软件需求规格说明书。
(4)在数据库技术中,实体集之间的联系可以是一对一或一对多或多对多的,那么“学生”和“可选课程”的联系为 【4】 。
(5)人员基本信息一般包括:身份证号,姓名,性别,年龄等。其中可以作为主关键字的是 【5】 。
(6)若有定义语句:int a=5;,则表达式:a++的值是 【6】 。
(7)若有语句double x=17;,当执行y=(int)(x/5)%2;之后y的值为 【7】 。
(8)以下程序运行后的输出结果是 【8】 。
#include &stdio.h&
main()
{ int x=20;
printf(“%d”,0&x&20);
printf(“%d\n”,0&x&&x&20); }
(9)以下程序运行后的输出结果是 【9】 。
#include &stdio.h&
main()
{ int a=1,b=7;
b=b/2;a+=b;
} while (b&1);
printf(“%d\n”,a);}
(10)有以下程序
#include &stdio.h&
main()
{ int f,f1,f2,i;
f1=0;f2=1;
printf(“%d %d”,f1,f2);
for(i=3;i&=5;i++)
{ f=f1+f2; printf(“%d”,f);
f1=f2; f2=f;
printf(“\n”);
}
程序运行后的输出结果是 【10】 。
(11)有以下程序
#include &stdio.h&
int a=5;
void fun(int b)
{ int a=10;
a+=b;printf(“%d”,a);
}
main()
{ int c=20;
fun(c);a+=c;printf(“%d\n”,a);
}
程序运行后的输出结果是 【11】 。
(12)设有定义:
struct person
{ int ID;char name[12];}p;
请将scanf(“%d”, 【12】 );语句补充完整,使其能够为结构体变量p的成员ID正确读入数据。
(13)有以下程序
#include &stdio.h&
main()
{ char a[20]=”How are you?”,b[20];
scanf(“%s”,b);printf(“%s %s\n”,a,b);
}
程序运行时从键盘输入:How are you?&回车&
则输出结果为 【13】 。
(14)有以下程序
#include &stdio.h&
typedef struct
{double s}REC;
void fun1( REC x ){x.num=23;x.s=88.5;}
main()
{ REC a={16,90.0 };
printf(“%d\n”,a.num);
}
程序运行后的输出结果是 【14】 。
(15)有以下程序
#include &stdio.h&
fun(int x)
{ if(x/2&0) run(x/2);
printf(“%d ”,x);
}
main()
{ fun(6);printf(“\n”); }
程序运行后的输出结果是 【15】 。
2009年9月全国计算机等级考试二级C语言笔试参考答案
一、选择题
(1) C (2) B (3) D (4) A (5) B
(6) A (7) C (8) B (9) C (10) D
11) D (12) C (13) A (14) B (15) B
(16) D (17) C (18) A (19) A (20) B
(21) D (22) C (23) A (24) C (25) D
(26) B (27) A (28) C (29) C (30) B
(31) D (32) A (33) A (34) C (35) A
(36) B (37) A (38) D (39) C (40) C
二、填空题
(1)14
(2)逻辑条件
(3)需求分析
(4)多对多
(5)身份证号
(6)5
(7)1
(8)1 0
(9)5
(10)0 1 123
? 答案仅供参考
2009年3月全国计算机等级考试二级笔试试卷C语言程序设计
(考试时间90分钟,满分100分)
(1)下列叙述中正确的是
A) 栈是“先进先出”的线性表
B) 队列是“先进先出”的线性表
C) 循环队列是非线性结构
D) 有序性表既可以采用顺序存储结构,也可以采用链式存储结构
(2)支持子程序调用的数据结构是
D)二叉树
(3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是
D)4
(4)下列排序方法中,最坏情况下比较次数最少的是
A)冒泡排序
B)简单选择排序
C)直接插入排序
D)堆排序
(5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是
A)编译软件
B)操作系统
C)教务管理系统
D)汇编程序
(6)下面叙述中错误的是
A)软件测试的目的是发现错误并改正错误
B)对被调试的程序进行“错误定位”是程序调试的必要步骤
C)程序调试通常也称为Debug
D)软件测试应严格执行测试计划,排除测试的随意性
(7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是
A)提高耦合性降低内聚性有利于提高模块的独立性
B)降低耦合性提高内聚性有利于提高模块的独立性
C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度
D)内聚性是指模块间互相连接的紧密程度
(8)数据库应用系统中的核心问题是
A)数据库设计
B)数据库系统设计
C)数据库维护
D) 数据库管理员培训
(9)有两个关系R,S如下:
R
由关系R通过运算得到关系S,则所使用的运算为
A) 选择
D)连接
(10)将E-R图转换为关系模式时,实体和联系都可以表示为
A) 属性
D) 域
(11)以下选项中合法的标识符是
D)1--
(12)若函数中有定义语句:int k;,则
A)系统将自动给k赋初值0
B)这时k中值无定义
C)系统将自动给k赋初值-1
D)这时k中无任何值
(13)以下选项中,能用作数据常量的是
C)1.5e1.5
D) 115L
(14)设有定义:int x=2; ,以下表达式中,值不为6的是
A) x*=x+1
B) x++,2*x
C)x*=(1+x)
D)2*x,x+=2
(15)程序段:int x=12;
double y=3.141593; printf(“%d%8.6f”,x,y);的输出结果是
A)123.141593
C)12,3.141593
D)123.141593
(16)若有定义语句:double x,y,*px,*py,执行了px=&x, py=&y;之后,正确的输入语句是
A)scanf(“%f%f”,x,y);
B) scanf(“%f%f”,&x,&y);
C) scanf(“%lf%le”,px,py);
D) scanf(“%lf%lf”,x,y);
(17)以下是if语句的基本形式:
if (表达式) 语句
其中“表达式”
A)必须是逻辑表达式
B)必须是关系表达式
C)必须是逻辑表达式或关系表达式
D)可以是任意合法的表达式
(18)有以下程序
#include &stdio.h&
main()
{
scanf(“%d”,&x);
if(x&=3); else
if(x!=10)
printf(“%d\n”,x);
}
程序运行时,输入的值在哪个范围才会有输出结果
A)不等于10的整数
B)大于3且不等于10的整数
C) 大于3或等于10的整数
D)小于3的整数
(19)有以下程序
#include&stdio.h&
Main()
{
int a=1,b=2,c=3,d=0;
if(a= =1 &&b++= =2)
if(b!=2 || c--!=3)
printf(“%d,%d,%d\n”,a,b,c);
else printf(“%d,%d,%d\n”,a,b,c);
else printf(“%d,%d,%d\n”,a,b,c);
}
程序运行后的输出结果是
A)1,2,3
D)3,2,1
(20)以下程序中的变量已正确定义
for(i=0;i&4;i++,i++
for(k=1;k&3;k++);printf(*”);
程序段的输出结果是
A)********
D)*
(21)有以下程序
#include&stdio.h&
main()
{char
*s=(“ABC);
do
{printf(“%d”,*s%10);s++;
}while(*s);
}
注意,字母A的ASCII码值为65。程序运行后的输出结果是
A)5670
D)ABC
(22)设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是
A)n=0;while((ch=getchar())!=’\n’)n++;
B) n=0;while(getchar()!=’\n’)n++;
C)for(n=0; getchar()!=’\n’;n++);
D)n=0;for(ch=getchar();ch!=’\n’;n++);
(23)有以下程序
#include&stdio.h&
main()
{ int a1,a2;char c1,c2;
scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);
printf(“%d,%c,%d,%c”,&1,c1,a2,c2);
}
若想通过键盘输入,使得a1的值为12,a2的是为34,c1的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b,则正确的输入格式是(以下
代表空格,&CR&代表回车)
A)12a34b&CR&
b&CR&
C)12,a,34,b&CR&
b&CR&
(24)有以下程序
#include&stdio.h&
int f(int x,int y)
{return()y-x)*x);}
main()
{int a=3,b=4,c=5,d;
d=f(f(a,b),f(a,c));
printf(“%d\n”,d);
}
程序运行后的输出结果是
A)10
D)7
(25)有以下程序
#include&stdio.h&
void fun(char
*s)
{while(*s)
{ if(*s%2==0)
printf(“%c”,*s);
s++;
}
}
main()
{ char
a[]={“good”};
fun(a);printf(“\n”);
}
注意:字母a的ASCⅡ码值为97,程序运行后的输出结果是
A)d
D)good
(26)有以下程序
#include &stdio.h&
void fun( int *a,int *b)
{int *c;
c=a;a=b;b=c;
}
main()
{int x=3,y-5,*P=&x,*q=&y;
fun(p,q);printf(“%d,%d,”,*p,*q);
fun(&x,&y);printf(“%d,%d\n”,*p,*q);
}
程序运行后的输出结果是
A)3,5,5,3
B)3,5,3,5
C)5,3,3,5
D)5,3,5,3
(27)有以下程序
#include &stdio.h&
viod f(int *p,int *q );
main()
{ int m=1,n=2,*r=&m;
f(r,&n);printf(“%d,%d”,m,n);
}
void f(int *p,int *q)
{p=p+1;*q=*q+1;}
程序运行后输出的结果是
A)1,3
D)1,2
(28)以下函数按每行8个输出数组中的数据
void fun( int *w,int n)
{
for(i=0;i&n;i++)
{_________________
printf(“%d”,w);
printf(“\n”);
}
下划线处应填入的语句是
A)if(i/8==0)print(“\n”);
B) if(i/8==0)
C) if(i%8==0)print(“\n”);
D) if(i%8==0)
(29)若有以下定义
int x[10],*pt=x;
则对x数组元素的正确应用是
A)*&x[10]
B)*(x+3)
C)*(pt+10)
(30)设有定义:char s[81];int i=10;,以下不能将一行(不超过80个字符)带有空格的字符串真确读入的语句或语句组是
A gets(s)
B)while((s[i++]=getchar())!=”\n”;s=”\0”;
C)scanf(“%s”,s);
D)do{scanf(“%c”,&s);}while(s[i++]!=”\n”);s=”\0”;
(31)有以下程序
#include &stdio.h&
main()
{ char *a[ ]={“abcd”,”ef”,”gh”,”ijk”};int I;
for (i=0;i&4;i++)
printf(“%c”,*a);
}
程序运行后输出的结果是
A)aegi
D)abcdefghijk
(32)以下选项中正确的语句组是
A)char s[];s=”BOOK!”;
B) char *s;s={”BOOK!”};
C)char s[10];s=”BOOK!”;
D) char *s;s=”BOOK!”;
(33)有以下程序
#include &stdio.h&
int fun{int x,int y}
{ if(x==y) return(x);
else returen((x+y)/2)
}
main()
{ int a=4,b=5,c=6;
printf(“%d\n”,fun(2*a,fun(b,c)))
}
程序运行后的输出结果是
A)3
D)12
(34)设函数中有整型变量n,为保证其在未赋值的情况下初值为0,应选择的存储类别是
A)auto
B) register
D)auto或register
(35)有以下程序
#include &stdio.h&
int b=2;
int fun(int *k)
{ b=*k+b;return (b);}
main()
{ int a[10]={1,2,3,4,5,6,7,8},I;
for(i=2;i&4;i++) {b=fun(&a)+b;printf(“%d”,b);}
printf(“\n”);
}
程序运行后输出的结果是
A)10
16
(36)有以下程序
#include &stdio.h&
#define PT 3.5;
#define S(x) PT*x*x;
mian()
{ int a=1, b=2; printf(“%4.1f\n”,S(a+b));}
程序运行后输出的结果是
A)14.0
D)程序有错无输出结果
(37)有以下程序
#include &stdio.h&
struct ord
{ int x,y;} dt[2]={1,2,3,4};
main()
{ struct ord *p=
printf (“%d,”,++p-&x); printf(“%d\n”,++p-&y);
}
程序的运行结果是
A)1,2
D)4,1
(38)设有宏定义:#include
IsDIV(k,n) ((k%n==1)?1:0且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&& IsDIV(m,7)为真时所要表达的是
A)判断m是否能被5或者7整除
B)判断m是否能被5和7整除
C)判断m被5或者7整除是否余1
D)判断m被5和7整除是否余1
(39)有以下程序
#include &stdio.h&
main()
{ int a=5,b=1,t;
t=(a&&2|b); printf(“%d\n”,t)
}
程序运行后的输出结果是
A)21
D)1
(40)有以下程序
#include &stdio.h&
main()
{ EILE *f;
f=fopen(“filea.txt”,”w”);
fprintf(f,”abc”);
fclose(f);
}
若文本文件filea.txt中原有内容为:hello,则运行以上程序后,文件filea.txt中的内容为
A) helloabc
D)abchello
二、填空题(每空2分,共30分)
请将每一个空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。
(1)假设一个长度为50的数组(数组元素的下标从0到49)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有 【1】 个元素。
(2)软件测试可分为白盒测试和黑盒测试。基本路径测试属于
【2】 测试。
(3)符合结构化原则的三种基本控制结构是:选择结构、循环结构和
【3】 。
(4)数据库系统的核心是
【4】
(5)在E-R图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是
【5 】框。
(6)表达式(int)((double)(5/2)+2.5)的值是【6】
(7)若变量x、y已定义为int类型且x的值为99,y的值为9,请将输出语句printf(【7】,x/y);补充完整,使其输出的计算结果形式为:x/y=11
(8)有以下程序
#include &stdio.h&
main( )
{
char c1,c2;
scanf(“&c”,&c1);
while(c1&65||c1&90)
scanf(“&c”,&c1);
printf(“&c, &c\n”,c1,c2);
}
程序运行输入65回车后,能否输出结果、结束运行(请回答能或不能)【8】 。
(9)以下程序运行后的输出结果是【9】
#include &stdio.h&
main( )
{int k=1,s=0;
do{
if{((k&2)!=0)continue;
s+=k;k++;
}while(k)10);
printf(“s=&d/n”,s);
}
(10)下列程序运行时,若输入labced12df&回车& 输出结果为【10】
#include &stdio.h&
main( )
{char
a =0,
while((ch=getchar())!=’\n’)
{if(a&2!=0&&(ch&’a’&&ch&=’z’)) ch=ch-‘a’+’A’;
a++;putchar(ch);
}
printf(“\n”);
}
(11)有以下程序,程序执行后,输出结果是【11】
#include &stdio.h&
void fun (int *a)
{a[0=a[1];]}
main()
{int a[10]={10,9,8,7,6,5,4,3,2,1},i;
for(i=2;i&=0;i--) fun{&a};
for(i=0;i&10;i++) printf(“&d”,a);
printf(“\n”);
}
(12)请将以下程序中的函数声明语句补充完整
#include &stdio.h&
int【12】 ;
main( )
{int x,y,(*p)();
p=
printf(“&d\n”,&x,&y);
}
Int max(int a,int b)
{return (a&b/a:b);}
(13)以下程序用来判断指定文件是否能正常打开,请填空
#include &stdio.h&
main( )
{FILE *
if (((fp=fopen(“test.txt”,”r”))==【13】))
printf(“未能打开文件!\n”);
else
printf(“文件打开成功!\n”);
(14)下列程序的运行结果为【14】
#include &stdio.h&
#include &string.h&
struct A
{char b[10];};
void
*t);
main()
{struct A a=(1001,”ZhangDa”,1098,0);
f(&a);printf(“&d,&s,&6,if\n”,a.a,a.b,a.c);
}
void f(struct
*t)
{strcpy(t-&b,”ChangRong”);
}
(15)以下程序把三个NODETYPE型的变量链接成一个简单的链表,并在while循环中输出链表结点数据域中的数据,请填空
#include &stdio.h&
struct node
{ struct node *};
typedef struct node NODETYPE;
main()
{NODETYPE a,b,c,*h,*p;
a. data=10;b.data=20;c.data=30;h=&a;
b. next=&b;b.next=&c;c.next=’\0’;
p=h;
while(p){printf(“&d”,p-&data);【15】;}
}
2009年4月二级C参考答案
选择题:
1~10: DACDC
ABABC
11~20:CBDDA
CDBCB
21~30:CDABA
BACBC
31~40:ADBCC
填空题:
(1)19
(2)白盒
(3)顺序结构
(4)数据库管理系统(DBMS)
(5)菱形
(6)4
(7)&x/y=%d&
(8)能
(9)s=0
(10)1AbCeDf2dF
(11)
(12)max(int a,int b)
(13)NULL
(14)1001,ChangRong,1098.0
(15)p=p―&next
2008年9月二级C语言笔试真题及答案
(1)一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是( )。
A)12345ABCDE
B)EDCBA54321
C)ABCDE12345
D)54321EDCBA
(2)下列叙述中正确的是( )。
A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D)循环队列中元素的个数是由队头指针和队尾指针共同决定
3)在长度为n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。
A)O(n)
C)O(log2n)
D)O(nlog2n)
4)下列叙述中正确的是( )。
A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
C)顺序存储结构能存储有序表,链式存储结构不能存储有序表
D)链式存储结构比顺序存储结构节省存储空间
5)数据流图中带有箭头的线段表示的是( )。
A)控制流 B)事件驱动 C)模块调用 D)数据流
6)在软件开发中,需求分析阶段可以使用的工具是( )。
A)N-S 图 B)DFD 图 C)PAD 图 D)程序流程图
7)在面向对象方法中,不属于“对象”基本特点的是( )。
A)一致性 B)分类性 C)多态性 D)标识唯一性
(8)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。
A)一对一 B)一对多 C)多对一 D)多对多
(9)在数据管理技术发展的三个阶段中,数据共享最好的是( )。
A)人工管理阶段 B)文件系统阶段 C)数据库系统阶段 D)三个阶段相同
(10)有三个关系R、S 和T 如下:
R S T
A B B C A B C
m 1 1 3 m 1 3
n 2 3 5
由关系R 和S 通过运算得到关系T,则所使用的运算为( )。
A)笛卡尔积 B)交 C)并 D)自然连接
(11)以下叙述中正确的是( )。
A)C 程序的基本组成单位是语句
B)C 程序中的每一行只能写一条语句
C)简单C 语句必须以分号结束
D)C 语句必须在一行内写完
12)计算机能直接执行的程序是( )。
A)源程序 B)目标程序 C)汇编程序 D)可执行程序
13)以下选项中不能作为C 语言合法常量的是( )。
A)'cd'
D)'\011'
14)以下选项中正确的定义语句是( )。
A) B)double a=b=7; C)double a=7, b=7; D)double, a,
15)以下不能正确表示代数式2ab
的C 语言表达式是( )。
A)2*a*b/c/d B)a*b/c/d*2 C)a/c/d*b*2 D)2*a*b/c*d
16)C 源程序中不能表示的数制是()。
A)二进制 B)八进制 C)十进制 D)十六进制
17)若有表达式(w)?(--x):(++y),则其中与w 等价的表达式是( )。A)w==l B)w==0 C)w!=l D)w!=0
18)执行以下程序段后,w 的值为( )。
int w='A', x=14, y=15;
w=((x || y)&&(w&'a'));
D)0
19)若变量已正确定义为int 型,要通过语句scanf(&%d, %d, %d&, &a, &b, &c);给a 赋值
1、给b 赋值2、给c 赋值3,以下输入形式中错误的是( ò 代表一个空格符)( )。
A)ò ò ò 1,2,3&回车&
B)1 ò 2 ò 3&回车&
C)1,ò ò ò 2,ò ò ò 3&回车&
D)1,2,3&回车&
(20)有以下程序段
int a, b,
a=10; b=50; c=30;
if (a&b) a=b, b=c; c=a;
printf(&a=%d b=%d c=%d\n”, a, b, c); 程序的输出结果是( )。
A)a=10 b=50 c=10 B)a=10 b=50 c=30 C)a=10 b=30 c=10 D)a=50 b=30 c=50
(21)若有定义语句:int m[]={5,4,3,2,1},i=4;,则下面对m 数组元素的引用中错误的是( )。
A)m[--i] B)m[2*2] C)m[m[0]] D)m[m[i]]
(22)下面的函数调用语句中func 函数的实参个数是( )。
func (f2(v1, v2), (v3, v4, v5), (v6, max(v7, v8)));
A)3 B)4 C)5 D)8
(23)若有定义语句:double x[5]={1.0,2.0,3.0,4.0,5.0}, *p=x;则错误引用x 数组元素的是( )。
A)*p B)x[5] C)*(p+1) D)*x
(24)若有定义语句:char s[10]=&\0&;,则strlen(s)的值是()。 A)7 B)8 C)9 D)10
(25)以下叙述中错误的是( )。
A)用户定义的函数中可以没有return 语句
B)用户定义的函数中可以有多个return 语句,以便可以调用一次返回多个函数值
C)用户定义的函数中若没有return 语句,则应当定义函数为void 类型
D)函数的return 语句中可以没有表达式
(26)以下关于宏的叙述中正确的是( )。
A)宏名必须用大写字母表示
B)宏定义必须位于源程序中所有语句之前
C)宏替换没有数据类型限制
D)宏调用比函数调用耗费时间
*****(27)有以下程序
#include&stdio.h&
main()
{ int i,
for(i=3; i&=l; i--)
{ for(j=1; j&=2; j++) printf(&%d&, i+j);
printf(&\n&);
} }
程序的运行结果是( )。
A)2 3 4
B)4 3 2 3 4 5 5 4 3
D)4 5 3 4 3 4 4 5 2 3
(28)有以下程序
#include &stdio.h&
main()
{ int x=l, y=2, z=3;
if(x&y)
if(y&z) printf(&%d&, ++z);
else printf(&%d&, ++y);
printf(&%d\n&, x++);
}
程序的运行结果是( )。
D)1
(29)有以下程序
# include &stdio.h&
main()
{ int i=5;
do
{ if (i%3=1)
if (i%5==2)
{ printf(&*%d&, i);}
i++;
} while(i!=0);
printf(&\n&);
}
程序的运行结果是( )。A)*7 B)*3*5 C)*5 D)*2*6
(30)有以下程序
#include &stdio.h&
int fun(int a,int b)
{ if(b==0)
else return(fun(--a,--b));
}
main()
{ printf(&%d\n&, fun(4,2));}
程序的运行结果是( )。
A)1 B)2 C)3 D)4
(31)有以下程序
#include &stdio.h&
#include &stdlib.h&
int fun(int n)
{ int *p;
p=(int*)malloc(sizeof(int));
*p=n; return *p;
}
main()
{
a = fun(10); printf(&%d\n&, a+fun(10));
}
程序的运行结果是( )。
A)0 B)10 C)20 D)出错
(32)有以下程序
#include &stdio.h&
void fun(int a, int b)
{
t=a; a=b; b=t;
}
main()
{ int c[10]={1,2,3,4,5,6,7,8,9,0),
for (i=0; i&10; i+=2) fun(c[i], c[i+l]);
for (i=0; i&10; i++) printf(&%d,&, c[i]);
printf(&\n&);
}
程序的运行结果是( )。
A)l,2,3,4,5,6,7,8,9,0, B)2,l,4,3,6,5,8,7,0,9, C)0,9,8,7,6,5,4,3,2,1, D)0,1,2,3,4,5,6,7,8,9,
(33)有以下程序
#include &stdio.h&
struct st
{ int x,) data[2]={l,10,2,20};
main()
{ struct st *p=
printf(&%d,&, p-&y); printf(&%d\n&,(++p)-&x);
}
程序的运行结果是( )。
A)10,1 B)20,1 C)10,2 D)20,2
(34)有以下程序
#include &stdio.h&
void fun(int a[], int n)
{ int i,
for(i=0; i&n/2; i++) {t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t;}
}
main()
{ int k[10]={1,2,3,4,5,6,7,8,9,10},
fun(k,5);
for(i=2; i&8; i++) printf(&%d&, k[i]);
printf(&\n&);
}
程序的运行结果是( )。
A)345678 B)876543 C)1098765 D)321678
(35)有以下程序
#include &stdio.h&
#define N 4
void fun(int a[][N], int b[])
{
for(i=0; i&N; i++) b[i]=a[i][i];
}
main()
{ int x[][N]={{1,2,3),{4),{5,6,7,8),{9,10}},y[N],
fun(x,y);
for (i=0; i&N; i++) printf(&%d,&, y[i]);
printf(&\n&);
}
程序的运行结果是( )。
A)l,2,3,4, B)1,0,7,0, C)1,4,5,9, D)3,4,8,10,
(36)有以下程序
#include &stdio.h&
int fun(int (*s)[4],int n, int k)
{ int m,
m=s[0][k];
for(i=l; i&n; i++) if(s[i][k]&m) m=s[i][k];
}
main()
{ int a[4][4]={{1,2,3,4),{11,12,13,14},{2l,22,23,24},{31,32,33,34}};
printf(&%d\n&, fun(a,4,0));
}程序的运行结果是( )。A)4 B)34 C)31 D)32
(37)有以下程序
#include &stdio.h&
main()
{ struct STU { char name[9]; double score[2]; };
struct STU a={&Zhao&,'m',85.0,90.0), b={&Qian&,'f',95.0,92.0);b=a;
printf(&%s,%c,%2.0f,%2.0f\n&,b.name,b.sex,b.score[0],b.score[1]);
}
程序的运行结果是( )。
A)Qian,f,95,92 B)Qian,m,85,90 C)Zhao,f,95,92 D)Zhao,m,85,90
(38)假定已建立以下链表结构,且指针p 和q 已指向如图所示的结点:
head a b c
data next
↑p ↑q
则以下选项中可将q 所指结点从链表中删除并释放该结点的语句组是( )。
A)(*p).next=(*q). free(p); B)p=q-& free(q);
C)p=q; free(q); D)p-&next=q-& free(q);
(39)有以下程序
#include &stdio.h&
main()
{ char a=4;
printf(&%d\n&, a=a&&1);
} 程序的运行结果是( )。A)40 B)16 C)8 D)4
(40)有以下程序
#include &stdio.h&
main()
{ FILE *
char *s1=&China&,*s2=&Beijing&;
pf=fopen(&abc.dat&,&wb+&);
fwrite(s2,7,l,pf);
rewind(pf);
fwrite(s1,5,1,pf);
fclose(pf);
}
以上程序执行后abc.dat 文件的内容是( )。
A)China B)Chinang C)ChinaBeijing D)BeijingChina
二、填空题(每空2 分,共30 分)
1)对下列二叉树进行中序遍历的结果 【1】 。
A
B C
D E F
X Y Z
(2)按照软件测试的一般步骤,集成测试应在 【2】 测试之后进行。
(3)软件工程三要素包括方法、工具和过程,其中, 【3】 支持软件开发的各个环节的控制和管理。
(4)数据库设计包括概念设计、 【4】 和物理设计。
(5)在二维表中,元组的 【5】 不能再分成更小的数据项。
(6)设变量a 和b 已正确定义并赋初值。请写出与a-=a+b 等价的赋值表达式 【6】 。
(7)若整型变量a 和b 中的值分别为7 和9,要求按以下格式输出a 和b 的值:
a=7
b=9
请完成输出语句:printf (& 【7】 &,a,b);。
(8)以下程序的输出结果是 【8】 。
#include &stdio.h&
main()
{ int i,j,
for(i=3;i&=1;i--)
{ sum=0;
for(j=1;j&=i;j++) sum+=i*j;}
printf(&%d\n&,sum);}
(9)以下程序的输出结果是 【9】 。
#include &stdio.h&
main()
{ int j, a[]={1,3,5,7,9,11,13,15},*p=a+5;
for(j=3; j--)
{ switch(j)
{ case 1:
case 2: printf(&%d&,*p++);
case 3: printf(&%d&,*(--p));
}}}
(10)以下程序的输出结果是 【10】 。
#include &stdio.h&
#define N 5
int fun(int *s, int a, int n)
{
*s=a; j=n;
while(a!=s[j])j--;
}
main()
{ int s[N+1];
for(k=l; k&=N; k++) s[k]=k+l;
printf(&%d\n&,fun(s,4,N));}
(11)以下程序的输出结果是 【11】 。
#include &stdio.h&
int fun(int x)
{ static int t=0;
return(t +=x);
}
main()
{ int s,i;
for(i=l;i&=5;i++) s=fun(i);
printf(&%d\n&,s);}
(12)以下程序按下面指定的数据给x 数组的下三角置数,并按如下形式输出,请填空。
4
3 7
2 6 9
1 5 8 10
#include &stdio.h&
main()
{ int x[4][4],n=0,i,j;
for(j=0;j&4;j++)
for(i=3;i&=j; 【12】 ) {n++;x[i][j]= 【13】 ;}
for(i=0;i&4;i++)
{ for(j=0;j&=i;j++) printf(&%3 d&,x[i][j]);
printf(&\n&);}}
13)以下程序的功能是:通过函数func 输入字符并统计输入字符的个数。输入时用字符@作为输入结束标志。请填空。
#include &stdio.h&
long 【14】 ;
main()
{
n=func(); printf(&n=%ld\n&,n);
}
long func()
{
for( m=0; getchar()!='@'; 【15】 );
}
2008 年9 月笔试卷参考答案
一、选择题
(1)B) (2)D) (3)C) (4)A) (5)D) (6)B) (7)A) 8)B)(9)C) (10)D) (11)C) (12)D) (13)A) (14)C) (15)D)(16)A)17)D) (18)C) (19)B) (20)A) (21)C) (22)A) (23)B)(24)A)(25)B) (26)C) (27)D) (28)D) (29)A) (30)B) 31)C)(32)A)(33)C) (34)D) (35)B) (36)C) (37)D) (38)D) (39)C)(40)B)
二、填空题
(1)【1】DBXEAYFZC (2)【2】单元(3)【3】过程 (4)【4】逻辑设计(5)【5】分量 (6)【6】a=a-(a+b) 或 (a=-b)(7)【7】a=%d\nb=%d (8)【8】1(9)【9】9911 (10)【10】3(11)【11】15 (12)【12】i--(13)【13】n (14)【14】func()(15)【15】m++
2008年4月全国计算机等级考试二级C语言笔试试卷(含答案)
(考试时间90分钟,满分100分)
一、 选择题(共70分)
下列各题A),B),C),D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)程序流程图中指有箭头的线段表示的是
A)图元关系 B)数据流 C)控制流 D)调用关系
(2)结构化程序设计的基本原则不包括
A)多态性 B)自顶向下 C)模块化 D)逐步求精
(3)软件设计中模块划分应遵循的准则是
A)低内聚低耦合 B)高内聚低耦合
C)低内聚高耦合 D)高内聚高耦合
(4)在软件开发中,需求分析阶段产生的主要文档是
A)可行性分析报告 B)软件需求规格说明书
C)概要设计说明书 D)集成测试计划
(5)算法的有穷性是指
A)算法程序的运行时间是有限的
B)算法程序所处理的数据量是有限的
C)算法程序的长度是有限的 D)算法只能被有限的用户使用
(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是
A)快速排序 B)冒泡排序
C)直接插入排序 D)堆排序
(7)下列关于栈的叙述正确的是
A)栈按“先进先出”组织数据 B)栈按“先进后出”组织数据
C)只能在栈底插入数据 D)不能删除数据
(8)在数据库设计中,将E-R图转换成关系数据模型的过程属于[C]
A)需求分析阶段 B)概念设计阶段
C)逻辑设计阶段 D)物理设计阶段
(9)有三个关系R、S和T如下:
有关系R和S通过运算得到关系T,则所使用的运算为
A)并 B)自然连接 C)笛卡尔积 D)交
(10)设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为
A)课号,成绩 B)学号,成绩
C)学号,课号 D) 学号,姓名,成绩
(11)以下叙述中正确的是
A)C程序中的注释只能出现在程序的开始位置和语句的后面
B)C程序书写格式严格,要求一行内只能写一个语句
C)C程序书写格式自由,一个语句可以写在多行上
D)用C语言编写的程序只能放在一个程序文件中
(12)以下选项中不合法的标识符是
A)print B)FOR C)&a D)_00
(13)以下选项中不属于字符常量的是
A)'C' B)&C& C)'\xCC0' D)'\072'
(14)设变量已正确定义并赋值,以下正确的表达式是
A)x=y*5=x+z B)int(15.8%5)
C)x=y+z+5,++y D)x=25%5.0
(15)以下定义语句中正确的是
A)int a=b=0 ; B)char A=65+1,b='b';
C)float a=1,*b=&a,*c=& D)double a=0.0,b=1.1;
(16)有以下程序段
ch='a'; k=12;
printf(&%c,%d,&,ch,ch,k); printf(&k=%d\n&,k);
已知字符a的ASCll十进制代码为97,则执行上述程序段后输出结果是
A)因变量类型与格式描述符的类型不匹配输出无定值
B)输出项与格式描述符个数不符,输出为零值或不定值
C)a,97,12k=12 D)a,97,k=12
(17)已知字母A的ASCⅡ代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是
A)kk&='A'&&kk&='Z' B)!(kk&='A'‖kk&='Z')
C)(kk+32)&='a'&&(kk+32)&='z' D)isalpha(kk)&&(kk&91)
(18)当变量c的值不为2、4、6时,值也为“真”的表达式是
A)(c==2)‖(c==4)‖(c==6) B)(c&=2&&c&=6)‖(c!=3)‖(c!=5)
C)(c&=2&&c&=6)&&!(c%2) D)(c&=2&&c&=6)&&(c%2!=1)
(19)若变量已正确定义,有以下程序段
int a=3,b=5,c=7;
if(a&b) a=b; c=a;
if(c!=a) c=b;
printf(&%d,%d,%d\n&,a,b,c);
其输出结果是
A)程序段有语法错 B)3,5,3 C)3,5,5 D)3,5,7
(20)有以下程序
#include &stdio.h&
{ int x=1,y=0,a=0,b=0;
{ case 0: a++;
case 1: b++;
case 2: a++; b++;
case 3: a++; b++;
printf(“a=%d,b=%d\n”,a,b);
程序的运行结果是
A)a=1,b=0 B)a=2,b=2
C)a=1,b=1 D)a=2,b=1
(21)有以下程序
#include &stdio.h&
{ int x=8;
for( ; x&0; x--)
{ if(x%3) {printf(“%d,”,x--);}
printf(“%d,”,--x);
程序的运行结果是
A)7,4,2 B)8,7,5,2
C)9,7,6,4 D)8,5,4,2
(22)以下不构成无限循环的语句或者语句组是
A)n=0; B)n=0;
do{++n;}while(n&=0); while(1){n++;}
C)n=10; D)for(n=0,i=1; ;i++) n+=i;
while(n);{n--;}
(23)有以下程序
#include &stdio.h&
{ int a[ ]={1,2,3,4},y,*p=&a[3];
--p; y=*p; printf(“y=%d\n”,y);
程序的运行结果是
A)y=0 B)y=1 C)y=2 D)y=3
(24)以下错误的定义语句是
A)int x[][3]={{0},{1},{1,2,3}};
B)int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
C)int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
D)int x[][3]={1,2,3,4};
(25)设有如下程序段
char s[20]= “Bejing”,*p;
则执行p=s;语句后,以下叙述正确的是
A)可以用*p表示s[0]
B)s数组中元素的个数和p所指字符串长度相等
C)s和p都是指针变量
D)数组s中的内容和指针变量p中的内容相等
(26)若有定义:int a[2][3];,以下选项中对a数组元素正确引用的是
A)a[2][!1] B)a[2][3] C)a[0][3] D)a[1&2][ !1]
(27)有定义语句:char s[10];,若要从终端给s输入5个字符,错误的输入语句是
A)gets(&s[0]); B)scanf(“%s”,s+1);
C)gets(s); D)scanf(“%s”,s[1]);
(28)以下叙述中错误的是
A)在程序中凡是以“#”开始的语句行都是预处理命令行
B)预处理命令行的最后不能以分号表示结束
C)#define MAX是合法的宏定义命令行
D)C程序对预处理命令行的处理是在程序执行的过程中进行的
(29)以下结构体类型说明和变量定义中正确的是
A)typedef struct B)struct REC;
{}REC; {};
REC t1,t2; REC t1,t2;
C)typedef struct REC ; D)struct
{int n=0; char c=’A’;}t1,t2; {}REC t1,t2;
(30)以下叙述中错误的是
A)gets函数用于从终端读入字符串
B)getchar函数用于从磁盘文件读入字符
C)fputs函数用于把字符串输出到文件
D)fwrite函数用于以二进制形式输出数据到文件
(31)有以下程序
#include &stdio.h&
{ int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;
for(i=0;i&12;i++) c[s[i]]++;
for(i=1;i&5;i++) printf(“%d”,c[i]);
printf(“\n”);
程序的运行结果是
A)1 2 3 4 B)2 3 4 4 C)4 3 3 2 D )1 1 2 3
(32)有以下程序
#include &stdio.h&
void fun(int *s,int nl,int n2)
{ int i,j,t;
while(i&j) {t=s[i];s[i]=s[j];s[j]=t;i++;j--;}
{ int a[10]={1,2,3,4,5,6,7,8,9,0},k;
fun(a,0,3); fun(a,4,9); fun(a,0,9);
for(k=0;k&10;k++)printf(“%d”,a[k]); printf(“\n”);
程序运行的结果是
(33)有以下程序
#include &stdio.h&
#include &string.h&
void fun(char *s[ ],int n)
{ char *t; int i,j;
for(i=0;i&n-1;i++)
for(j=i+1;j&n;j++)
if(strlen(s[i])&strlen(s[j])) {t=s[i];s[i]=s[j];s[j]=t;}
{char *ss[]={“bcc”,”bbcc”,”xy”,”aaaacc”,”aabcc”};
fun(ss,5); printf(“%s,%s\n”,ss[0],ss[4]);
程序的运行结果是
A)xy,aaaacc B)aaaacc,xy C)bcc,aabcc D)aabcc,bcc
(34)有以下程序
#include &stdio.h&
int f(int x)
if(x==0||x==1) return (3);
y=x*x-f(x-2);
z=f(3); printf(“%d\n”,z);
程序的运行结果是
A)0 B)9 C)6 D)8
(35) 有以下程序
#include &stdio.h&
void fun(char

我要回帖

更多关于 互盾应急下线了没 的文章

 

随机推荐