C语言基础知识中:线性表的顺序、链式存储结构分别是:随机存取和顺序存取结构对吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言基础知识中:线性表的顺序、链式存储结构分别是:随机存取和顺序存取结构对吗?相关的知识,希望对你有一定的参考价值。
不对,数组是随机存取,所有的线性表都是顺序存取结构。你想想,我要找第5个元素,用数组直接 A[4] 就找到了,而线性表就要从“头”元素开始一个一个地往后遍历,直到需要的那个,随机不了。 参考技术A 顺序表是用诸如malloc()这样的函数、申请一片固定大小、地址连续的内存,用来存储数据。但很多情况下,你的程序不知道该申请多大的内存,或许计算机里也没这么大的地址连续内存,你只能分块申请内存,地址也根本不连续,为了保证存取这些数据的次序,这些小块后面就要有个地址指针、用来指向下一块地址,这个做法就是链表。这些存储结构都可以顺序存取、随机存取,看你怎么编程了。 参考技术B 试想一下你面对一大群人,当你要找哥时
1、你一张脸一张脸的对这找,有可能众里寻他千百度,蓦然回首哥却在灯火阑珊处。
2、你喊一声哥,此时哥说,hi,我在这,哈哈!找到了,快到你无法想象。注意:不要找哥,哥只是一个传说。
计算机二级Java语言卷005
选择题
公共知识
【1】下列叙述中正确的是()。
线性链式存储结构中每个结点都由数据域与指针域两部分组成, 增加了存储空间, 所以一般要多于顺序存储结构。
【2】下列叙述中正确的是()。
栈是一种先进后出的线性表, 队列是一种先进先出的线性表, 栈与队列都是线性结构。
【3】软件测试的目的是()。
软件测试是为了发现错误而执行程序的过程, 测试要以查找错误为中心, 而不是为了演示软件的正确功能。不是为了评估软件或改正错误。
【4】在软件开发中, 需求分析阶段产生的主要文档是()。
需求分析阶段的工作可以概括为: 需求获取、需求分析、编写需求规格说明书、需求评审四个方面。所以选择D。
【5】软件生命周期是指()。
通常, 将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说, 软件产品从考虑其概念开始, 到该软件产品不能使用为止的整个时期都属于软件生命周期。
【6】面向对象方法中, 继承是指()。
继承是面向对象的方法的一个主要特征, 是使用已有的类的定义作为基础建立新类的定义技术。广义的说, 继承是指能够直接获得已有的性质和特征, 而不必重复定义它们, 所以说继承是指类之间共享属性和操作的机制。
【7】层次型、网状型和关系型数据库划分原则是()。
层次模型的基本结构是树形结构, 网状模型是一个不加任何条件限制的无向图, 关系模型采用二维表来表示, 所以三种数据库的划分原则是数据之间的联系方式。
【8】一个工作人员可以使用多台计算机, 而一台计算机可被多个人使用, 则实体工作人员与实体计算机之间的联系是()。
因为一个人可以操作多个计算机, 而一台计算机又可以被多个人使用, 所以两个实体之间是多对多的关系。
【9】数据库设计中反映用户对数据要求的模式是()。
数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述, 是全体用户公共数据视图。外模式也称子模式或用户模式, 它是用户的数据视图, 给出了每个用户的局部数据描述, 所以选择C。内模式又称物理模式, 它给出了数据库物理存储结构与物理存取方法。
【10】有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是()。
则由关系R和S得到关系T的操作是()。
关系T中的元组是R关系中有而S关系中没有的元组的集合, 所以进行的是差的运算。
专业知识
【11】下列关于Java语言特点的叙述中, 错误的是
Java是新一代编程语言, 具有很多特点。简单易学、利用面向对象技术、分布式计算、健壮性、安全性、跨平台(即体系结构中立)、可移植性、解释执行、高性能、多线程和动态性。本题答案为B选项。
【12】下列关于Java源程序结构的论述中, 正确的是
一个文件的public类最多可以有一个, 但是可以包含多个import语句。包含的接口定义也可以有多个, 包含的class类可以有多个。本题答案为B选项。
【13】Java的反汇编命令是
Javap命令是java反汇编命令, javac命令是java语言编译器, jdb是基于文本和命令行的调试工具, java命令是Java解释器。选项A正确, 本题答案为A。
【14】下列语句执行后的输出结果是
int i = 2, j = 6;
System.out.println((i + 5) > j);
表达式“i + 5 = 7”等于“7 > 6”返回值为true。本题答案为C选项。
【15】下列语句执行后的输出结果是
int i = 2, j = 4;
boolean k;
k = (i++) > 0 && (++j - 4) < 0;
System.out.println(i * j);
后置“++”表示先参与运算再自身 + 1; 前置“++”表示先自身 + 1再参与运算。逻辑运算符“&&”在运算过程中会发生短路。当遇到false时, 后面的表达式不参与运算。在程序中, i++=2大于0, i自增1后等于3。因为表达式“(i++) > 0”为true, 继续运算逻辑运算符“&&”后面的式子, 此时j自增为5。题目要求打印“i * j”表达式的值, 程序输出为15。本题答案为D选项。
【16】下列运算符中, 优先级最高的是
在Java中运算的优先级参照
。本题答案为D选项。
【17】下列程序的运行结果是
public class Test {
public static void main(String[] args) {
int a = 3;
double b = 3.5;
int k = (int) b;
if (a == k)
System.out.println("0");
else if (a > k)
System.out.println("1");
else
System.out.println("2");
}
}
double型数据强转为int型数据会丢失精度。变量b转为int类型结果为3, k = 3; 因为k = 3, a = 3, 所以表达式“a == k”为true, 执行if后面的语句, 输出0。本题答案为B选项。
【18】switch (expression)语句中, 表达式expression不允许的类型是
switch语句中表达式expression只能是下面这几种数据类型: int、byte、short和char。在JDK1.7之后还支持String类型。如果比较的数据类型是double和boolean型, 则不能使用 switch结构。选项C不满足条件。本题答案为C选项。
【19】下列程序的运行结果是
public class Test {
public static void main(String[] args) {
int i = 1;
while (i < 7) {
if (i % 2 == 0)
System.out.print(i);
i++;
}
}
}
运算符“%”为取余操作。本题中i % 2 == 0, i只要是偶数就会满足条件, 并打印i的值。while循环中, i的最大值为6, 有2, 4, 6三个偶数。本题答案为C选项。
【20】下列程序的运行结果是
public class Test {
public static void main(String[] args) {
int count = 0;
for (int i = 1 ; i < 5; i += 2)
for (int j = 1 ; j <= 10; j += 3)
count ++;
System.out.print(count);
}
}
本题考查嵌套循环的应用, 第一层for循环执行2次, 第二层循环执行4次。内循环一共循环8次。每次循环自增变量count的值。循环结束后count的值为8。本题答案为B选项。
【21】继承是面向对象程序设计的一个重要特征, 它可降低程序的复杂性并使代码
继承性是面向对象方法的一个重要基本特性, 它使代码可重用, 可降低程序复杂性。继承是指在现有类(父类)的基础上构建一个新类(子类), 子类重用(继承)了父类的方法和状态, 同时还可以向新类中增添新的方法和状态。本题答案为B选项。
【22】阅读下列代码段
abstract class Person {
public Person(String n) {
name = n;
}
public ________ String getDescription();
public String getName() {
return name;
}
private String name;
}
在下划线处应填入的修饰符是
getDescription()只有方法名, 没有方法体, 属于抽象方法。抽象方法用关键字abstract修饰。本题答案为B选项。
【23】Java中所有类的父类是
java中, Object类是所有类的父类。本题答案为D选项。
【24】下列程序的运行结果
public class Test {
String s = "One World One Dream";
public static void main(String[] args) {
System.out.println(s);
}
}
s不属于静态变量, 访问时不能直接调用, 需用对象的引用进行访问, 程序编译时出错。本题答案为D选项。
【25】用于在子类中调用被重写父类方法的关键字是
this调用本类相关的构造函数, super调用父类相关构造方法。本题答案为B选项。
【26】阅读下列程序片段
public void test() {
try {
sayHello();
System.out.println("Hello");
} catch(ArrayIndexOutOfBoundsException e) {
System.out.println("ArrayIndexOutOfBoundsException ");
} catch(Exception e) {
System.out.println("Exception ");
} finally {
System.out.println("finally");
}
}
如果sayHello()方法正常运行, 则test()方法的运行结果将是
sayHello()方法正常运行, try模块输出“Hello”, 接着执行finally模块, 无论异常是否存在, 此模块都会执行, 输出“finally”。本题答案为A选项。
【27】下列程序的运行结果
public class ConcatTest {
public static void main(String[] args) {
String str1 = "abc";
String str2 = "ABC";
String str3 = str1.concat(str2);
System.out.println(str3);
}
}
本题考查字符串的使用。String类提供concat()方法, 该方法将当前字符串对象与指定str字符串相连。表达式str1.concat(str2)的结果为“abcABC”。本题的答案为C选项。
【28】下列程序的运行结果
public class Arrays {
public static void main(String[] args) {
int[] a = new int[5];
for (int i = 0; i < a.length; i = i + 1) {
a[i] = 10 + i;
}
for (int i = 0; i < a.length; i = i + 1) {
System.out.print(a[i] + " ");
}
String[] s = {"Frank", "Bob", "Jim"};
for (int i = 0; i < s.length; i = i + 1) {
System.out.print(s[i] + " ");
}
s[2] = "Mike";
System.out.print(s[2]);
}
}
第一个for循环对整型数组a赋值时从“10 + 0”开始, 直到“10 + 4”, 共5个数。第二个for循环直接将字符串数组内容依次打印出来, 循环结束后对s[2]重新赋值为“Mike”, 故再次打印s[2]时输出“Mike”。本题答案为C选项。
【29】下列代码的功能是向文件score.dat中写入对象。在下划线处应填入的是
ObjectOutputStream out = new ObjectOutputStream(new ____________("score.dat"));
out.writeObject(fenshu);
out.close();
类ObjeetOutputStream是将一个对象写到一个流中, 其原型为public ObjectOutputStream(OutputStream out), 即参数为一个输出流对象。显然, 在空白处新建了一个输出流的对象。“score.dat”是一个文件名。本题的意思为将对象写入一个文件输出流。public FileOutputStream(String name), 创建一个输出文件流。本体答案为C选项。
【30】Java中的抽象类Reader和Writer所处理的流是
Reader / Writer所处理的流是字符流, Inputstream / OutputStream的处理对象是字节流。本题答案为D选项。
【31】下列不属于接口WindowListener的方法是
接口WindowListener包括以下方法: windowActivated、windowDeactivated、windowClosing、windowClosed、windowIconified、windowDeiconified、windowOpened方法。本题答案为C选项。
【32】在下列程序的空白处, 应填入的正确选项是
import java.io.*;
public class ObjectStreamTest {
public static void main(String[] args) throws IOException {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("serial.bin"));
java.util.Date d = new java.util.Date();
oos.____________(d);
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("serial.bin"));
try {
java.util.Date restoredDate = (java.util.Date) ois.readObject();
System.out.println("read Object back from serial.bin file: "+ restoredDate);
}
catch(ClassNotFoundException cnf) {
System.out.println("class not found");
}
}
}
本题考查的是输入 / 输出及文件操作, writeObject()方法直接写入对象。本题答案为D选项。
【33】下列包中, 包含JOptionPane类的是
Swing中提供了J0ptionPane类来实现类似Windows平台下的MessageBox的功能。利用JOptionPane类中的各个static方法来生成各种标准的对话框, 实现显示信息、提出问题、警告、用户输入参数等功能, 且这些对话框都是模式对话框。本题答案为A选项。
【34】下列程序中需要对Employee的对象进行存储, 下划线处应填入的正确选项是
class Employee implements __________ {
……
}
本题考查对象的序列化。如果想保存程序中的对象, 以便在该程序的后运行中使用, 可以使用对象的序列化。一个类只有实现了Serialiazable接口, 才是可序列化的。如果要序列化某些类的对象, 这些类就必须实现 Serialiazable接口。本题的答案为B选项。
【35】在下列Java语言的包中, 提供图形界面构件的包是
java.io包向程序提供文件输入 / 输出操作的类; javax.swing包提供构建和管理应用程序的图形界面的轻量级构件; java.net包向程序提供执行网络通信应用及URL处理的类; java.rmi包向程序提供远程方法调用所需的类。本题答案为B选项。
【36】Java API中支持线程的类或接口是
I. java.lang.Thread
II. java.lang.Runnable
III. java.lang.ThreadGroup
IV. java.io.Serializable
I. java.lang.Thread
II. java.lang.Runnable
III. java.lang.ThreadGroup
IV. java.io.Serializable
java.lang.Thread类和java.lang.Runnable是创建线程的两个方法, 分别是实现Thread类和继承Runnable接口。ThreadGroup类是管理一组线程的类。Serializable是序列化, 将一个对象的状态保存起来, 在适当的时候再获得, 它不支持线程。本题答案为B选项。
【37】阅读下面程序
public class Test2 ___________ {
public static void main(String[] args) {
Thread t = new Test2();
t.start();
}
public void run() {
System.out.println("How are you.");
}
}
在程序下划线处填入正确选项是
创建线程有两种方法: 实现java.lang.Runnable接口和继承Thread类并重写run()方法。本程序通过Thread t = new Test2(); 可以看出是通过继承Thread类来创建进程。本题答案为A选项。
【38】请阅读下列程序
public class ThreadTest {
public static void main(String[] args) throws Exception {
int i = 0;
Hello t = new Hello();
_____________________;
while (true) {
System.out.println("Good Morning"+i++);
if (i == 2 && t.isAlive()) {
System.out.println("Main waiting for Hello!");
t.join(); //等待t运行结束
}
if (i == 5) break ;
}
}
}
class Hello extends Thread {
int i ;
public void run() {
while (true) {
System.out.println("Hello"+i++);
if (i == 5) break ;
}
}
}
为使该程序正确执行, 下划线处的语句应是
启动线程用start()方法。本题答案为D选项。
【39】在多线程并发程序设计中, 能够给对象x加锁的语句是
Java平台将每个由synchronized(Object)语句指定的对象设置一个锁, 称为对象锁。Java中的对象锁是一种独占的排他锁。本题答案为C选项。
【40】下列叙述中, 错误的是
Swing的事件处理机制继续沿用AWT的事件处理机制。事件处理机制中仍旧包含三种角色: 事件源、事件和事件处理者(事件监听程序)。事件源就是Swing的各种构件, 与之对应的就是事件监听器接口。选项D说法错误, 本题答案为D选项。
以上是关于C语言基础知识中:线性表的顺序、链式存储结构分别是:随机存取和顺序存取结构对吗?的主要内容,如果未能解决你的问题,请参考以下文章
用C语言建立一个顺序存储的线性表并实现线性表的插入和删除操作