第一章 信息与计算机
1.1 什么是信息?信息与数据的区别和联系在何处?
信息定义之一:信息是现实世界中存在的客观实体、现象、关系
进行描述的数据。 信息定义之二:信息是经过加工后并对实体的行
为产生影响的数据。
与数据的区别和联系: 数据定义:数据是现实世界客观存在的
实体或事物的属性值,即指人们听到的事实和看到的景象。 我们把
这些数据收集起来,经过处理后,即得到人们需要的信息。信息和数
据的关系可以归结为: 1. 信息是有一定含义的数据。 2. 信息是
经过加工(处理)后的数据。 3. 信息是对决策有价值的数据。
1.2 信息有哪些基本属性?
信息的基本属性有: 1. 事实性。 2. 等级性。 3. 可压缩性。
4. 可扩散性。 5. 可传输性。 6. 共享性。 7. 增值性和再生性。
8. 转换性。
1.3 计算机的主要特点是什么?
计算机最主要的特点是: 1. 高速自动的操作功能。 2. 具有记
忆的能力。 3. 可以进行各种逻辑判断。 4. 精确高速的计算能力。
1.5 完整的计算机系统应该包括哪几部分?
目前最完整的计算机系统学说认为由五部分组成: 1. 人员 2.
数据 3. 设备 4. 程序 5. 规程
1.6 什么是计算机硬件?什么是计算机软件?
硬件:泛指实际存在的物理设备,包括计算机本身及其外围设备。
微型计算机的硬件系统:主机、外存储器、输入设备、输出设备、微
机的系统总线。
软件:是指计算机程序、方法、规则的文档以及在计算机上运
行它时所必须的数据。 计算机软件一般分为系统软件和应用软件。
1.8 软件技术发展的几个阶段各有什么特点?它与硬件的关系如
何?
第一阶段:高级语言阶段
特点:这一时期,编译技术代
表了整个软件技术,软件工作者追求的主要 目的是设计和实现在控
制结构和数据结构方面表现能力强的高级语言。但在这一时期内,编
译系统主要是靠手工编制,自动化程度很低。
硬件关系:此时
期计算机的硬件要求仅能用机器指令来编制可运行的程序。
第二阶段:结构程序设计阶段
特点:在程序的正确性方
面 , 提 出 了 结 构 化 程 序 设 计 思 想 使 程 序 的 可 靠 性 提 高 了 。
程序设计方法论方面,提出由顶向下法和自底向上法。使程序模块
化,使问题的复杂性和人的思维统一起来了。
出现了
软件生产管理。
硬件关系:磁盘问世,操作系统发展,非数
值计算应用发展,通信设备完 善,网络发展,集成电路发展等使软
件复杂性增加产生软件危机,在此背景下发展了软件技术。
第三阶段:自动程序设计阶段
特点:向集成化、一体化
发展。出现了软件开发环境。程序设计基本方法 进一步改进。
硬件关系:集成电路迅速发展以及高分辨率终端的出现,为个人计算
机发 展提供了条件,再加上人工智能、专家系统研究的发展,使程
序设计进入成熟期。
1.9 什么是多媒体计算机? 多媒体计算机包含那几项?
什么是多媒体计算机?
1. “媒体”的概念分为两部分,其一是信息存储的实体,其二是
表现信息形式的载体;
2. 多媒体计算机是以计算机为核心,可以综合处理数值计算、文
本文件、图形图像、声音视频等多种信息的计算机系统。
3. 多媒体是 20 世纪 90 年代计算机发展的新领域,它是计算机技
术与图形图像、动画、声音和视频等领域顶尖技术结合的产物,
它将人机交互的信息从单纯的视觉(文字、图形)扩大到两个
以上的媒体信息
B: 多媒体的基本要素:
文本,图形,图像,动画,音频,视频, 可以看出,它是电脑,
电视机,游戏机,录放机,传真机和电话机的综合体
第二章 常用数据结构及其运算
2.1 什么是数据结构?它对算法有什么影响?
数据结构是指同一数据对象中各数据元素间存在的关系。
数据结构对算法的影响:算法的实现必须借助程序设计语言中
提供的数据类型及其运算。一个算法的效率往往与数据的表达
形式有关,因此数据结构的选择对数据处理的效率起着至关重
要的作用。它是算法和程序设计的基本部分,它对程序的质量
影响很大。
2.2 何谓算法?它与程序有何区别?
广义地说,为解决一个问题而采取的方法和步骤,就称为“算
法”。计算机算法是通过计算机能执行的算法语言来表达的。
和程序的区别:一个程序包括两个方面的内容:
(1)对数据的描述,即数据结构。
(2)对操作的描述,即算法。
所以算法是程序的一个要素。
2.3 何谓频度,时间复杂度,空间复杂度?说明其含义。
频度:在某个算法中某个语句被重复执行的次数就是此语句的频
度。时间复杂度:是用来估算一个算法的执行时间的量,以算法中频
度最大的语句来度量。空间复杂度:指在算法中所需的辅助空间的单
元,而不包括问题的原始数据占用的空间。
2.4 试编写一个求多项式 Pn =anxn +an-1 xn-1+……+a1x+a0 的值 Pn(x0)
的算法,要求用乘法次数最少,并说明算法中主要语句的执行次数及
整个算法的时间复杂度。
A=(a0, a1 ……an)
mul = 1 //
sum=a0
for i=1 to n
mul = mul * x // x
sum = A[i]*mul + sum
//求和
end(i)
进行了 n 次
时间复杂度为:2n
2.5 计算下列各片段程序中 X←X+1 执行次数
(1)
for i=1 to n
for j=1 to i
for k=1 to j
x←x+1
end(k)
end(j)
end(i)
执行次数:n*n*n
(2)
i←1
while i
for i=1 to n
j←1
for k=j+1 to n
x← x+1
end(k)
end(i)
执行次数:n*(n-1)
2.6 数据的存储结构主要有哪两种?它们之间的本质区别是什么?
数据的存储结构:向量和链表。
本质区别:
向量是连续存放的,其存储空间是静态分配的,以存放顺序来表达
元素的前后件的关系。
链式存储结果不需要一组连续的存储单元,其数据元素可以分散存
放在存储空间中,其元素关系由指针来指向。
2.8 已知线性表 L(a1, a2, … , an ) 元素按递增有序排列。用向量作为存储结构,试编写算法:
删除表中值在 c 与 d 之间(c<=d)的元素
大于等于 c
序号 4
大于 d
序号 11
a1
a2
a3
a4
a5
a6
a7
a8
a9
a10
a11
a12
a13
a14
a15
找到第 1 个大于等于 c 的元素,序号为 s
找到第一个大于 d 的元素,序号为 t
L[s] ← L[t]
L[s+1] ← L[t+1]…
L[s+m] ← L[t+m]
L[s + i ] ← L[t + i ] //
s+m = t -1
i = 0 to t-s-1
//
m = t – s - 1
// i 从 1 循环到 n
i=1;
s = -1; // 第 1 个大于等于 c 的元素序号
t = -1; // 第 1 个大于 d 的元素序号
for
i = 1 to n step -1
if
s ==-1 and L[i]>=c
s = i
t == -1 and L[i] >d
t = i ;
// 找到第 1 个大于等于 c 的元素
// 找到第 1 个大于 d 的元素
if
end (i)
if
s != -1 and t !=-1
i = s
while
i < t and i + t – s <=n
L[i] = L [i + t – s ]
i++
end(while)
else
return(错误 没有找到 元素在 c 和 d 之间)
end(if)
for j=c to n-d+c
L[j]<--L[j+d-c]//把 j+d-c 项给 j
End(j)
N<--n-d+c//所有项数减少
Return
2.9 线性表 A,B 中的元素为字符串类型,用向量结构存储,试编写算法,判断 B 是否为 A
的子序列(例如 A=ENGLISH ,B=LIS ,则 B 为 A 的子序列)
A[m] B[n]
A:
B:
a1
b1
a2
b2
a3
b3
a4
b4
a5
b5
a6
b6
a7
a8
a9
a10
a11
a12
a13
a14
a15
i=1 检查 A 中第 1 个元素开始的字符串是否与 B 匹配
i=2 检查 A 中第 2 个元素开始的字符串是否与 B 匹配
… …
i= m – n + 1 检查 A 中 第(m-n+1)个元素开始的字符串是否与 B 匹配
A[m]
B[n]
if ( mn then return( A 字符串中第 i 个字符开始的子串与 B 匹配 )
end(i)
renturn (找不到匹配的子串)
设 A,B 两个线性表的元素个数为 m,n
If (m<=n)then{return}
For i=0 to n-1
a=A[i]
for j=0 to m-1
if(a=B[j])then{b++}
end(j)
end(i)
if(b=m)then{B 为 A 的子集}
return