计算机软件技术基础(邮电)1-2-1
- 格式:ppt
- 大小:1.55 MB
- 文档页数:72
《软件技术基础》实验报告实验名称:顺序表的操作班级学号姓名第9 周星期 2 、5,6 节成绩一、实验目的:1、掌握顺序表结构的实现方式;2、掌握顺序表常用算法的实现;3、熟悉利用顺序表解决问题的一般思路;4、参照给定的顺序表的程序样例,验证给出的顺序表的常见算法,领会顺序表结构的优点和不足。
二、实验内容:1、设计一个静态数组存储结构的顺序表,要求编程实现如下任务:(1)建立一个顺序表,首先依次输人整数数据元素(个数根据需要键盘给定)。
(2)删除指定位置的数据元素(指定元素位置通过键盘输入),再依次显示删除后的顺序表中的数据元素。
(3)查找指定数据的数据元素(指定数据由键盘输入),若找到则显示位置,若没有找到则显示0。
2、使用顺序表实现一个电话本的管理程序,电话本中的每条记录包括学号、姓名、手机号码和固定电话四项。
要求实现菜单、初始化、添加、删除和显示等功能。
三、实验结果:四、实验中遇到的问题及解决方法:第一次编写C++,感觉力不从心,回去多看看PPT。
五、实验心得体会:对顺序表的一些常用语句不熟悉,对顺序表的整体思路理解不深刻以后要加强练习附:源程序(自行编写或修改的程序。
若为修改程序请注明修改部分的功能,若为书上实例则可不附。
)#include <iostream>#include <string>#include <stdlib.h>#include <iomanip>#define MAXSIZE 20using namespace std;int num;typedef struct{string student_number;string name;string tel;string home_phone;int id;} TEL;void shuaxin(TEL *);void delet(TEL *);void find(TEL *);void show(TEL *);int main(void){int choose;TEL List[MAXSIZE];while(1){cout << "***************************欢迎来到XXX电话本系统*********************" << endl;cout << "1.初始化并建立" <<endl;cout << "2.删除" <<endl;cout << "3.查找" <<endl;cout << "4.显示全部" << endl <<endl;cin >> choose;system("cls");while( choose < 1 || choose > 4){cout << "输入错误,数字1-4,请重新输入!" << endl;cin >> choose;system("cls");}switch(choose){case 1: shuaxin(List); break;case 2: delet(List); break;case 3: find(List); break;case 4: show(List); break;}//system("cls");}return 0;}void shuaxin(TEL * list){int i,j;for(i = 0; i < MAXSIZE; i++){list[i].id = i + 1;list[i].home_phone = "none";list[i].name = "none";list[i].student_number = "none";list[i].tel = "none";system("cls");cout << "初始化成功,现在开始建表:" << endl;cout << "请输入需要建立的电话个数:(小于" << MAXSIZE << ")"<<endl;cin >> num;while( num < 1 || num > MAXSIZE ){system("cls");cout << "输入错误,请重新输入" << endl;cin >> num;}system("cls");cout << "请依次输入学生的学号,姓名,移动电话,家庭电话" << endl;for(j = 1; j <= num; j++){cout << j << '.';cin >> list[j - 1].student_number;cin >> list[j - 1].name;cin >> list[j - 1].tel;cin >> list[j - 1].home_phone;cout << endl;if(num == (j - 1) ){system("cls");cout << "建立表完毕!" << endl;}}void delet(TEL * list){int j,i = 0;cout << "请输入你需要删除的序号" << endl;cin >> j;while( j < 0 || j > num){cout << "输入错误,请重新输入" << endl;cin >> j;}while(list[i].id != j)i++;for(j = i; j < num - 1; j++){list[j].name = list[j + 1].name;list[j].tel = list[j + 1].tel;list[j].student_number = list[j + 1].student_number;list[j].home_phone = list[j + 1].home_phone;}list[j].home_phone = "none";list[j].name = "none";list[j].student_number = "none";list[j].tel = "none";num--;system("cls");cout << "删除完毕" << endl;}void find(TEL * list){string telnum;int i,key = 0;cout << "请输入你需要查找的电话号码" << endl;cin >> telnum;system("cls");for(i = 0; i < MAXSIZE; i++){if(telnum == list[i].tel || telnum == list[i].home_phone){if(key == 0)cout << "依次学号姓名移动电话家庭电话" << endl;cout << list[i].id << '.';cout << setw(12) << list[i].student_number;cout << setw(10) << list[i].name;cout << setw(14) << list[i].tel;cout << setw(10) << list[i].home_phone;cout << endl;key = 1;}}if( key == 0)cout << "未找到此电话号码" << endl;}void show(TEL * list){int i;cout << "现在有" << num << "个电话号码" << endl;cout << "依次学号姓名移动电话家庭电话" << endl;for(i = 0; i < num; i++){cout << list[i].id << '.';cout << setw(12) << list[i].student_number;cout << setw(10) << list[i].name;cout << setw(14) << list[i].tel;cout << setw(10) << list[i].home_phone;cout << endl;}cout << "输出完毕" << endl;}《软件技术基础》实验报告实验名称:链表的操作(一)班级学号姓名第10 周星期 2 、5,6 节成绩一、实验目的:1、掌握单链表结构的实现方式;2、掌握单链表常用算法的实现。
《计算机软件技术基础》第一章算法1.1算法的基本概念算法:指解题方案的准确而完整的描述算法的基本特征:能行性(算法中的每一个步骤必须能够实现;算法执行的结果要能够达到预期的目的)确定性(算法中的每一个步骤都必须是有明确定义的,不能摸棱两可,也不能有多义性)有穷性(算法必须能在执行有限个步骤之后终止)拥有足够的情报(算法执行的结果总是与输入的初始数据有关。
不同输入对应不同输出)算法:是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的、明确的,此顺序将在有限的次数下终止。
算法的基本要素:1.算法中对数据的运算和操作(算术运算、逻辑运算、关系运算、数据传输【赋值、输入、输出】)2.算法的控制结构(算法中各操作之间的执行顺序)1.2算法描述语言C语言描述和简单的算法描述语言(1)符号与表达式:符号主要用以表述变量名、数组名等(2)赋值语句(3)控制转移语句:无条件转移语句形式:GOTO 标号条件转移语句形式IF C THEN SIF C THEN S1ELSE S2(4)循环语句WHILE语句:WHILE C DO SFOR语句:FOR i=init TO limit BY step DO S(5)其他语句EXIT语句:退出某个循环,使控制转到包含EXIT语句的最内层的WHILE或FOR循环后面的一个语句去执行RETURN语句:结束算法的执行(允许使用用引号括起来的注释信息)READ(INPUT)和WRITE(PRINT/OUTPUT)语句:用于输入输出(6)算法中的注释总是用一对方括号【】括起来;复合语句用一对花括号{}括起来1.3算法设计基本方法1.列举法【例1.1】基本思想:根据提出的问题,列举所有可能的情况,并用问题中给定的条件检验哪些是需要的,哪些是不需要的(通常解决“是否存在”“有多少种可能”类型问题)特点:算法比较简单,但列举情况较多时,工作量将很大寻找路径、查找、搜索等问题采用列举法有效2.归纳法基本思想:通过列举少量的特殊情况,经过分析,最后找出一般的关系3.递推法(数学例题)指从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果(本质属于归纳法)4.递归基本思想:将问题逐层分解的过程,实际上并没有对问题进行求解,而只是当解决了最后那些简单的问题后,再沿着原来分解的逆过程逐步进行综合【例1.3】自己调用自己的过程称为递归调用过程递归分为直接递归:一个算法P显式地调用自己间接递归:算法P调用另一个算法Q,而算法Q又调用算法P5.减半递推技术(分治法)减半:将问题的规模减半,而问题的性质不变递推:重复“减半”的过程【例1.4】6.回溯法通过对问题的分析,找出一个解决问题的线索;然后沿着这个线索逐步试探。
《计算机软件技术基础(1)》在线作业一1. 在设计阶段,当双击窗体上的某个控件时,所打开的窗口是()。
A. 工程资源管理器窗口B. 工具箱窗口C. 代码窗口D. 属性窗口正确答案:C 满分:5 分得分:52. 下面哪条语句可以正确地声明一个动态数组:()。
A. Dim A(n) As IntegerB. Dim A(1 To n) As IntegerC. Dim A() As IntegerD. Dim A( , ) As Integer正确答案:C 满分:5 分得分:53. 从键盘上输入两个字符串,分别保存在变量str1、str2中。
确定第二个字符串在第一个字符串中起始位置的函数是()。
A. LeftB. MidC. StringD. Instr正确答案:D 满分:5 分得分:54. 下列叙述中正确的是()。
A. 在窗体的Form_Load事件过程中定义的变量是全局变量B. 局部变量的作用域可以超出所定义的过程C. 在某个Sub过程中定义的局部变量可以与其它事件过程中定义的局部变量同名,但其作用域只限于该过程D. 在调用过程时,所有局部变量被系统初始化为0或空字符串正确答案:C 满分:5 分得分:55. 设标签Label1的Caption属性值为默认值,则该标签控件Name属性和Caption属性的值分别为()。
A. “Label”、“Label”B. “Label1”、“Label1”C. “Label”、“Label1”D. “Label1”、“Label”正确答案:B 满分:5 分得分:56. 下面的动作中,不能引发一个按钮Click事件的是:()。
A. 在按钮上单击B. 在按钮上右击C. 把焦点移至按钮上,然后按回车键D. 如果按钮上有快捷字母,按“Alt+该字母”正确答案:B 满分:5 分得分:57. 在窗体Form1的Click事件过程中有以下语句:Label1.Caption=”Visual BASIC”设标签的原Caption属性值为默认值,则该语句执行之后该标签控件Name属性和Caption属性的值分别为()。
计算机软件技术基础试题1.线性表的链式存储结构与顺序存储结构相比优点是 CD ; A. 所有的操作算法实现简单 B. 便于随机存取 C. 便于插入和删除D. 便于利用零散的存储器空间 2.线性表是具有n 个 C 的有限序列;A. 表元素B. 字符C. 数据元素D. 数据项E. 信息项3.若长度为n 的线性表采用顺序存储结构,在其第I 个位置插入一个新元素的算法的时间复杂度为 C ;1≤I ≤n+1 A. O0 B. O1 C. OnD. On 24.设A 是一个线性表a 1,a 2,…,a n ,采用顺序存储结构,则在等概率的前提下,平均每插入一个元素需要移动的元素个数为 B ,平均每删除一个元素需要移动的元素个数为 A ;若元素插在a i 与a i+1之间0≤I ≤n-1的概率为)1()(2+-n n i n ,则平均每插入一个元素所要移动的元素个数为 C ;A. 21-n B. 2n C. 312+nD. 413+n5.下列函数中,按它们在∞→n 时的无穷大阶数,最大的是 D ;A. log nB. nlog nC. 2n/2D. n6.A. s->next=p+1; p->next=s;B. p.next=s; s.next=p.next;C. s->next=p->next; p->next=s->next;D. s->next=p->next; p->next=s;7.将两个各有n 个元素的有序表归并为一个有序表时,其最少的比较次数是 A ; A. nB. 2n-1C. n-1D. 2n8.下面的程序段是合并两个无头结点链表ha和 hb为一个无头结点链表ha的过程,作为参数的两个链表都是按结点的data域由大到小链接的;合并后新链表的结点仍按此方式链接;请填写下述空框,使程序能正确运行;define NULL 0typedef struct node{int data;struct node next;}node, linklisttype;void combinelinklisttype ha, linklisttype hb{linklisttype h, p;h = linklisttype mallocsizeoflinklisttype;h->next = NULL;p = h;whileha = NULL && hb = NULLifha->data>=hb->data{ /较大的元素先插入/p->next = 1 ;p = 2 ;3 ;}else{p->next = 4 ;p = 5 ;6 ;}ifha==NULL 7 ;ifhb==NULL 8 ;ha = h->next;freeh;}参考答案: 1 ha 2 p->next 3 ha=ha->next4 hb5 p->next6 hb=hb->next7 p->next=hb 8 p->next=ha9.如果表A中所有元素a1,a2,…,a n与表B的一个顺序子表b k,b k+1,…b k+n-1完全相同即a1=b k,a2=b k+1,…a n=b k+n-1,则称表A包含在表B中;设ha,hb为带头结点的单链表,分别表示有序表A和B,下面的函数用于判别表A 是否包含在表B中,若是,则返回true,否则返回false;提示:用递归实现define true 1define false 0define NULL 0typedef struct node{int data;struct node next;}node, linklisttype;int inclusionlinklisttype ha, linklisttype hb{linklisttype pa, pb;pa = ha->next;pb = hb->next;1 ;while 2ifpa->data=pb->data 3 ;else 4 ;5 ;}参考答案:1 ifpa==NULL returntrue2 pb=NULL && pa->data>=pb->data3 returninclusionpa, pb4 pb = pb->next;5 returnfalse10.在本题的程序中,函数create_link_listn建立一个具有n个结点的循环链表;函数josephusn,I,m 对由create_link_listn所建立的具有n个结点的循环链表按一定的次序逐个输出,并删除链表中的所有结点;参数nn>0指明循环链表的结点个数,参数I1≤I≤n指明起始结点,参数mm>0是步长,指明从起始结点或前次被删除并输出的结点之后的第m个结点作为本次被输出并删除的结点;例如,对于下图所示的具有6个结点的循环链表,在调用josephus6,3,2后,将输出5,1,3,6,4,2;请在空框处填上适当内容,每框只填一个语句;define NULL 0typedef struct node{int data;struct node next;}node, linklisttype;linklisttype create_link_listint n{linklisttype head, p, q;int I;head = NULL;ifn>0{head = linklisttype mallocsizeoflinklisttype;p = head;forI=1;I<=n-1;I++{ /此循环用于建立一个链表,链表的内容从1至n-1/p->data = I;q = linklisttype mallocsizeoflinklistttype;1 ;2 ;}p->data = n;3 ; /建立从尾链到首的环形结构/}returnhead;}void Josephusint n, int j, int m{linklisttype p, q;int j;p = create_link_listn;for;I>1;I-- p = p->next;4 ;whilej<n{forI=1;I<=m-1;I++ p = p->next;5 ;printf“%8d”,q->data;6 ;freeq;j=j+1;}}参考答案:1 p->next = q;2 p = q;3 p->next = head4 j=05 q=p->next;6 p->next = q->next11.在下列程序中,函数differenceA,B用于求两集合之差C=A-B,即当且仅当e是A中的一个元素,且不是B中的元素时,e是C中的一个元素;集合用有序链表实现,用一个空链表表示一个空集合,表示非空集合的链表根据元素之值按递增排列,执行C=A-B之后,表示集合A和B的链表不变,若结果集合C非空,则表示它的链表应根据元素之值按递增序排列;函数append用于在链表中添加结点;include <stdio.h>define NULL 0typedef struct node{int data;struct node next;}NODE;NODE appendNODE last, int x{last->next=NODE mallocsizeofNODE;last->next->data=x;returnlast->next;}NODE differenceNODE A ,NODE B{NODE C,last;C=last=NODE mallocsizeofNODE;while 1ifA->data < B->data{last=appendlast,A->data;A=A->next;}elseif 2 {A=A->next;B=B->next;}else3 ;while 4 {last=appendlast,A->data;A=A->next;}5 ;last=C;C=C->next;freelast;returnC;}参考答案:1 A=NULL & B=NULL2 A->data==B->data3 B=B->next;4 A=NULL5 last->next=NULL;12.阅读以下算法,填充空格,使其成为完整的算法;其功能是在一个非递减的顺序存储线性表中从下标1处开始存储,删除所有值相等的多余元素;define MAXSIZE 30typedef struct{int elemMAXSIZE;int length;/表长/}sqlisttype;void exam21sqlisttype L{int I,j;I=2,j=1;while 1 {ifL->elemI<>L->elemj{2 ;3 ;}I++;}4 ;}参考答案:1 i<=L->length23 j++;413.用单链表表示的链式队列的队头在链表的 A 位置;A. 链头B. 链尾C. 链中14.若用单链表表示队列,则应该选用 B ;A. 带尾指针的非循环链表B. 带尾指针的循环链表C. 带头指针的非循环链表D. 带头指针的循环链表15.在解决计算机主机与打印机之间速度不匹配问题时,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则从该缓冲区中取出数据打印,先放入打印缓冲区的数据先被打印;该缓冲区应该是一个 B 结构;A. 堆栈B. 队列C. 数组D. 线性表16.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3;当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为 B ;A. 1和5B. 2和4C. 4和2D. 5和117.设栈的输入序列为1,2,…,10,输出序列为a1,a2,…,a10,若a5=10,则a7为 C ;A. 4B. 8C.不确定D.718.设栈的输入序列是1,2,3,4,则 D 不可能是其出栈序列;A. 1243 B. 2134 C. 1432 D. 431219.以下 D 是C语言中”abcd321ABCD”的子串;A. abcdB. 321ABC. “abcABC”D. “21AB”20.若串S=”software”,其子串的数目是 C ;A. 8B. 37C. 36D. 921.将一个A1:100,1:100的三对角矩阵,按行优先存入一维数组B1:298中,A中元素A66,65即该元素的下标在B数组中位置k为 B ;A. 198B. 195C. 197D. 19622.设高为h的二叉树只有度为0和2的结点,则此类二叉树的结点数至少为 B ,至多为F ;高为h的完全二叉树的结点数至少为 E ,至多为 F ;A. 2h B. 2h-1 C. 2h+1 D.h+1E. 2h-1F. 2h-1G. 2h+1-1H. 2h+123.一棵有124个叶结点的完全二叉树,最多有 B 个结点;A. 247B. 248C. 249D. 25124.若从二叉树的任一结点出发到根的路径上所经过的结点序列按其关键字有序,则该二叉树是C ;A. 满二叉树B. 哈夫曼树C. 堆D. 二叉查找树25.前序遍历和中序遍历结果相同的二叉树为 F ;前序遍历和后序遍历结果相同的二叉树为B ;A. 一般二叉树B. 只有根结点的二叉树C. 根结点无左孩子的二叉树D. 根结点无右孩子的二叉树E. 所有结点只有左孩子的二叉树F. 所有结点只有右孩子的二叉树26.具有n 个结点的完全二叉树,已经顺序存储在一维数组A1..n 中,下面的算法是将A 中顺序存储变为二叉链表存储的完全二叉树;请填写适当语句在下面的空格内,完成上述算法; define MAXSIZE 30 typedef struct btnode{ int data;struct btnode lchild, rchild;}BTN;void createtreeBTN p,int A, int I,int n{ 1 ; p->data=AI; if 2 3 ; elsep->lchild=NULL;if 4 createtree 5 ; elsep->rchild=NULL; }void btreeBTN p ,int A,int n{ createtreep,A,1,n; }参考答案:1 p=BTN mallocsizeofBTN2 2I<=n3 createtreep->lchild,A,2I,n4 2I+1<=n5 p->rchild,A,2I+1,n27.若在线性表中采用折半查找法查找元素,该线性表应该 C ; A. 元素按值有序B. 采用顺序存储结构C. 元素按值有序,且采用顺序存储结构D. 元素按值有序,且采用链式存储结构28.在分块检索中,对256个元素的线性表分成 16 块最好,每块的最佳长度是 16 ;若每块的长度为8,其平均检索长度为 21 ;29.假定有K 个关键字互为同义词,若用线性探测法把这K 个关键字存入散列表中,至少要进行 D 次探测; A. K-1次 B. K 次 C. K+1次D. KK+1/2次30.在n 个记录的有序顺序表中进行折半查找,最大的比较次数是⎣⎦1log 2+n ;31.Hash 技术广泛应用于查找过程,选择Hash 函数的标准是 和 ;处理冲突的技术有优有劣,其共同标准是 ;32.在下述排序算法中,所需辅助存储空间最多的是 B ,所需辅助存储空间最小的是 C ,平均速度最快的是 A ; A.快速排序B. 归并排序C. 堆排序33.在文件局部有序或文件长度较小的情况下,最佳内部排序的方法是 A ;A. 直接插入排序B. 冒泡排序C. 简单选择排序34.快速排序在最坏情况下时间复杂度是On2,比 A 的性能差;A. 堆排序B. 冒泡排序C. 简单选择排序35.若需在Onlogn的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是C ;A. 快速排序B. 堆排序C. 归并排序D. 希尔排序36.如果只想得到1000个元素组成的序列中第5个最小元素之前的部分排序的序列,用B 方法最快;A. 冒泡排序B. 快速排序C. 希尔排序D. 堆排序E. 简单选择排序37.以下结点序列是堆的为 A ;A. 100,90,80,60,85,75,20,25,10,70,65,50B. 100,70,50,20,90,75,60,25,10,85,65,8038.若要尽可能快地完成对实数数组的排序,且要求排序是稳定的,则应选 C ;A. 快速排序B. 堆排序C. 归并排序D. 希尔排序39.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为 A 排序法;A. 插入排序B. 交换排序C. 选择排序D. 归并排序40.直接插入排序在最好情况下的时间复杂度为 B ;A. OlognB. OnC. OnlognD. On241.下面函数是将任意序列调整为最大堆的算法,请将空白部分填上:将任意序列调整为最大堆通过不断调用adjust函数,即fori=n/2;i>0;i-- adjustlist, i, n;其中list为待调整序列所在数组从下标1开始,n为序列元素的个数;void adjustint list, int root, int n{/将以root为下标的对应元素作为待调整堆的根,待调整元素放在list数组中,最大元素下标为n/ int child,rootkey;rootkey = 1 ;child = 2root;whilechild < n{ifchild<n && listchild<listchild+12 ;ifrootkey > listchildbreak;else{list 3 =listchild;4 ;}}list 5 =rootkey;}参考答案:1 listroot2 child++;3 child/24 child = 2;5 child/241.表是一种数据结构,链表是一种 1 ;队列和栈都是线性表,栈的操作特性是 2 ,队列的操作特性是 3 ;今有一空栈S,对下列待进栈的数据元素序列a,b,c,d,e,f依次进栈、进栈、出栈、进栈、进栈、出栈的操作,则此操作完成后,栈S的栈顶元素为 4 ,栈底元素为5 ;供选答案:1: A. 非顺序存储线性表 B. 非顺序存储非线性表C. 顺序存储线性表D. 顺序存储非线性表2: A. 随机进出 B. 先进后出C. 先进先出D. 出优于进3: A. 随机进出 B. 先进后出C. 后进后出D. 进优于出4: A. f B. cC. aD. b5: A. b B. cC. aD. d答案:ABCBC42.操作系统主要是对计算机系统全部 1 进行管理,以方便用户、提高计算机使用效率的一种系统软件;它的主要功能有:处理机管理、存储管理、文件管理、 2 管理和设备管理等;Windows 和Unix是最常用的两类操作系统;前者是一个具有图形界面的窗口式的 3 系统软件,后者是一个基本上采用 4 语言编制而成的的系统软件;在 5 操作系统控制下,计算机能及时处理由过程控制反馈的信息并作出响应;供选答案:1: A. 应用软件 B. 系统软硬件C. 资源D. 设备2: A. 数据 B. 作业C. 中断D. I/O3: A. 分时 B. 多任务C. 多用户D. 实时4: A. PASCAL B. 宏C. 汇编D. C5: A. 网络 B. 分时C. 批处理D. 实时答案:CBBDD43.本程序从键盘读入整数,并按从大到小的顺序输出输入整数中互不相等的那些整数;程序一边读入整数,一边构造一个从大到小顺序链接的链表,直至不能从键盘读入整数,然后顺序输出链表上各表元的整数值;主函数每读入一个整数,就调用函数insert,函数insert将还未出现在链表上的整数按从大到小的顺序插入到链表中;为了插入方便,链表在表首有一个辅助表元;阅读下列C代码,在 n 处填入相应的字句以完成上述功能;include <stdio.h>include <malloc.h>define NULL 0typedef struct node{int val;struct node next;}NODE;void insertNODE list,int x{NODE u, v, p;u = list; v = u->next;while 1 && x < v->val{ /寻找插入位置/u=v;v=u->next;}ifv==NULL || 2 { /判断是否要插入表元/p = NODE mallocsizeofNODE;p->val = x; /生成新表元/3 = v;4 = p; /插入新表元/}}main{int x;NODE head, p;/首先建立只有辅助表元的空链表/head = NODE mallocsizeofNODE;5 =NULL;printf“Enter Integers:\n”;whilescanf“%d”,&x == 1 /反复读入整数插入链表/inserthead,x;forp=head->next;p=NULL;p=p->next /输出链表/printf“%d\t”,p->val;printf“\n”;}答案:1 v = NULL或v2 x > v->val 或 x = v->val3 p->next4 u->next5 head->next44.计算机数据处理的对象是具有不同结构的各种数据,可以访问的最小数据信息单位是1 ,可以引用的最小命名数据单位是2 ;线性表是最简单的一种数据结构,有顺序和链接两种存储方式;线性表按链接方式存储时,每个结点的包括 3 两部分;线性表的查找有 4 和 5 两种,但 5 只能用于顺序存储的情况; 供选答案: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. 浏览答案:CDBBC45.本程序用于从链盘读入整数,插入到链表,或从链表删除一个整数;阅读下面的C代码,将应填入 n 处的字名写在答卷的对应栏内;include <stdio.h>include <malloc.h>typedef struct node{int val;struct node next;}NODE;NODE insNODE list, int x{ /将x按从小到大的次序插入链表/NODE u, v=list, p;for; v = NULL && x < v->val ; v = v->next;/寻找插入位置/ifv = NULL && x == v->val returnlist; /已有,被忽略/p = NODE mallocsizeofNODE;p->val=x; /生成新表元/ifv == list list = p;else 1 ;2 ;return list;}NODE delNODE list, int x{ /从链表中删除值为x的表元/NODE u, v;forv = list; v = NULL && x < v->valu; u=v;v=v->next;ifv = NULL && x == v->val{ /找到值为x的表元/ifv == list list = list->next;else 3 ;4 ; /释放空间/}else p rintf“没有找到\n”;returnlist;}main{int x,ans;NODE list=NULL, p;while1{printf“\n输入1:将整数插入到链表;\n输入2:从链表删除一个整数;\n”;printf“其它整数,结束程序;\n\t请输入选择”;scanf%d,&ans;if 5 return;printf“输入整数:”;scanf“%d”,&x;ifans==1 list=inslist,x;else list=dellist,x;forp=list;p=NULL;p=p->nextprintf“%4d”,p->val;}}答案:1 u->next = p;2 p->next = v3 u->next = v->next4 freev5 ans = 1 && ans = 246. 从未排序的序列中,依次取出元素,与已排序序列的元素比较后,放入已排序序列中的恰当位置上,这是 1 排序;从未排序的序列中,挑选出元素,放在已排序序列的某一端位置,这是 2 排序;逐次将待排序的序列中的相邻元素两两比较,凡是逆序则进行交换,这是 3 排序;如果整个排序过程都在内存中进行,称为4 排序;排序算法的复杂性与排序算法的5 有关;供选答案: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. 占用存储多少和处理的数据量大小答案:BAABA47.操作系统是对计算机资源进行的 1 系统软件,是 2 的接口;在处理机管理中,进程是一个重要的概念,它由程序块、 3 和数据块三部分组成,它有3种基本状态,不可能发生的状态转换是 4 ;虚拟存储器的作用是允许程序直接访问比内存更大的地址空间,它通常使用 5 作为它的一个主要组成部分;供选答案:1: A. 输入和输出 B. 键盘操作C. 管理和控制D. 汇编和执行2: A. 软件和硬件 B. 主机和外设C. 高级语言和机器语言D. 用户和计算机3: A. 进程控制块 B. 作业控制块C. 文件控制块D. 设备控制块4: A. 运行态转换为就绪态 B. 就绪态转换为运行态C. 运行态转换为等待态D. 等待态转换为运行态5: A. 软盘 B. 硬盘C. CDROMD. 寄存器答案:CDADB48. A 是信息的载体,它能够被计算机识别、存储和加工处理;A. 数据B. 数据元素C. 结点D. 数据项49.下列程序段的时间复杂度为 C ;fori=1;i<n;i++{y=y+1;forj=0;j<=2n;j++ x++;}供选答案:A. On-1B. O2nC. On2D. O2n+150.下面程序段的时间复杂度为 D ;i=1;whilei<=n i=i2;供选答案:A. O1B. OnC. On2D. Olog2n51.下面程序段的时间复杂度为 B ;a=0;b=1;fori=2;i<=n;i++{s=a+b;b=a;a=s;}供选答案:A. O1B. OnC. Olog2nD. On252.数据结构是一门研究非数值计算的程序设计问题中,计算机的 A 以及它们之间的关系和运算等的学科;A.操作对象B. 计算方法C. 逻辑存储D. 数据映象53.在数据结构中,从逻辑上可以把数据结构分成 C ;A. 动态结构和静态结构B. 紧凑结构和非紧凑结构C. 线性结构和非线性结构D. 内部结构和外部结构54.算法分析的目的是 C ;A. 找出数据结构的合理性B. 研究算法中输入和输出的关系C. 分析算法的效率以求改进D. 分析算法的易懂性和文档性55.算法分析的两个主要方面是 4 ;A. 间复杂性和时间复杂性B. 正确性和简明性C. 可读性和文档性D. 数据复杂性和程序复杂性56.一个线性顺序表第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址为B ;A. 110B. 108C. 100D. 12057.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为P1,P2,P3,…,P n,若P1=n,则P i为 C ;A. iB. n-iC. n-i+1D.不确定58.对于一个栈,给出输入项A,B,C;如果输入项序列由A,B,C所组成,则不可能产生的输出序列是A ;A. CABB. CBAC. ABCD. ACB59.设有如下的单链表的按序号查找的算法,其时间复杂度为 B ;LinkNode GetNodeLinklist head, int i{int j;ListNode p;P = head; j=0;whilep->next && j<i{p = p->next;j++;}ifi==jreturnp;elsereturnNULL;}供选答案:A. On2B. O2nC. On3D. Ologn60.二维数组A mn按行序为主顺序存放在内存中,每个数组元素占1个存储单元,则元素a ij的地址计算公式是 C ;A. LOCa ij = LOCa11+i-1m+j-1B. LOCa ij = LOCa11+j-1m+i-1C. LOCa ij = LOCa11+i-1n+j-1D. LOCa ij = LOCa11+j-1n+i-161.以下哪一个不是队列的基本运算 C ;A. 从队尾插入一个新元素B. 从队列中删除第i个元素C. 判断一个队列是否为空D. 读取队头元素的值62.在一个长度为n的顺序表中,向第i个元素之前插入一个新元素,需向后移动 B 个元素;A. n-iB. n-i+1C. n-i-1D. i63.从一个长度为n的顺序表中删除第i个元素时,需向前移动 A 个元素;A. n-iB. n-i+1C. n-i-1D. i64.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队首指针和队尾指针,则判断队空的条件是 B ;A. front=rear+1B. front=rearC. front+1=rearD. front=065.从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较 D 个结点;A. nB. n/2C. n-1/2D. n+1/266.一个栈的入栈序列是a,b,c,d,e,则栈不可能的输出序列是 C ;A. edcbaB. decbaC. dceabD. abcde67.栈结构通常采用的两种存储结构是 A ;A. 顺序存储结构和链表存储结构B. 散列方式和索引方式C. 链表存储结构和数组D. 线性存储结构和非线性存储结构68.判断一个顺序栈ST最多元素为mo为空的条件是 B ;A. ST->top<>0B. ST->top=0C. st->top<>moD. st->top==mo69.不带头结点的单链表head为空表的判定条件是 A ;A. head==NILLB. head->next==NULLC. head->next==headD. head = NULL70.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在p和q之间插入s结点,则应执行C ;A. s->next = p->next; p->next=s;B. p->next = s->next; s->next=p;C. q->next = s; s->next=p;D. p->next = s; s->next=q;71.假设双向链表结点的类型如下:typedef struct Linknode{int data;struct Linknode lLink; /前驱结点指针/struct Linknode rLink; /后继结点指针/}下面给出的算法是要把一个q所指新结点,作为非空双向链表中的p所指的结点前驱结点插入到该双向链表中,能正确完成要求的算法段是 C ;A.q->rLink=p; q->lLink=p->lLink; p->lLink=q; p->lLink->rLink=q;B. p->lLink=q, q->rLink=p; p->lLink->rLink=q; q->lLink=p->lLink;C. q->lLink=p->lLink; q->rLink=p;p->lLink->rLink=q;p->lLink=q;D. 以上均不对72.串是一种特殊的线性表,其特殊性体现在 B ;A. 可以顺序存储B. 数据元素是一个字符C. 可以链接存储D. 数据元素可以是多个字符73.设有两个串p和q,求q在p中首次出现的位置的运算称作 B ;A. 连接B. 模式匹配C. 求子串D. 求串长74.设串s1=”ABCDEFG”,s2=”PQRST”,函数conx,y返回x和y串的连接串,subss,I,j返回串s的从序号i的字符开始的j个字符组成的子串,lens返回串s的长度,则consubs1,2,lens2,subs1,lens2,2的结果是 D ;A. BCDEFB. BCDEFGC. BCPQRSTD. BCDEFEF75.常对数组进行的两种基本操作是 C ;A. 建立和删除B. 索引和修改C. 查找和修改D. 索引和查找76.稀疏矩阵一般的压缩存储方法有两种,即C ;A. 二维数组和三维数组B. 三元组和散列C. 三元组和十字链表D. 散列和十字链表77.对下图所示的二叉表,按先根次序遍历得到的结点序列为 B ;A. ABCDHEIFGB. ABDHIECFGC. HDIBRAFCGD. HIDBEFGAC78.在一棵二叉树上,度为0的结点个数为n0,度为2的结点数为n2,则n0= A ;A. n2+1B. n2-1C. n2D. n2/279.某二叉树前序遍历结点的访问顺序是ABCDEFG,中序遍历结点的访问顺序是CBDAFGE,则其后序遍历结点的访问顺序是 A ;A.CDBGFEA B. CDGFEABC. CDBAGFED. CDBFAGE80.在下列存储形式中, D 不是树的存储形式;A. 双亲表示法B. 孩子链表表示法C. 孩子兄弟表示法D. 顺序存储表示法81. 已知一棵二叉树的中序序列为cbedahgijf,后序序列为cedbhjigfa,则该二叉树为B ;82. 已知一棵权集W={2,3,4,7,8,9}的哈夫曼树,其加权路径长度WPL为C ;A. 20B. 40C. 80D. 16083.已知一棵度为m的树中有n1个度为1的结点,n2个度为2的结点,…,n m个度为m的结点,问这棵树中叶子结点为C ;A. 1+n i I-1B. 1+n i I+1C. n1+n2+…+n mD. m·n m84.如下图所示的4棵二叉树中, C不是完全二叉树;85.设高度为h的二叉树上只有度为0或度为2的结点,则此类二叉树中所包含的结点数至少为B ;A. 2hB. 2h-1C. 2h+1D. h+186.如下图所示的二叉树的中序遍历序列是C ;A. abcdgefB. dfebagcC. dbaefcgD. defbagc87.已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,则其前序遍历序列为D ;A. acbedB. decabC. deabcD. cedba88.如果T2是由有序树T转换而来的二叉树,则T中结点的前序就是T2中结点的 A ;A. 前序B. 中序C. 后序D. 层次序89.树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序遍历、中序遍历和后序遍历;这里,我们把由树转化得到的二叉树叫做这棵树对应的二叉树;下面结论正确的是A ;A. 树的先根遍历序列与其对应的二叉树的先序遍历序列相同B. 树的先根遍历序列与其对应的二叉树的后序遍历序列相同C. 树的先根遍历序列与其对应的二叉树的中序遍历序列相同D. 以上均不对90. 深度为5的二叉树至多有C个结点;A. 16B. 32C. 31D. 1091. 在一非空二叉树的中序遍序序列中,根结点的右边 A ;A. 只有右子树的所有结点B. 只有右子树的部分C. 只有左子树的部分结点D. 只有左子树的所有结点 92. 树最适合用来表示 C ;A. 有序数据元素B. 无序数据元素C. 元素之间具有分支层次关系的数据D. 元素之间无联系的数据93. 设n,m 为一棵二叉树上的两个结点,在中序遍历时,n 在m 前的条件是 C ; A. n 在m 的右方 B. n 是m 的祖先 C. n 在m 的左方D. n 是m 的子孙94.对一个满二叉树,m 个树叶,n 个结点,深度为h,则 D ;A. n=h+mB. h+m=2nC. m=h-1D. n=2h-1 95.如果某二叉树的前序为stuwv,中序为uwtvs,则该二叉树后序为 C ;A. uwvtsB. vwutsC. wuvtsD. wutsv96.设待排序的记录为20,16,13,14,19,经过下列过程将这些记录排序;20,16,13,14,19 16,20,13,14,19 13,16,20,14,19 13,14,16,20,19 13,14,16,19,20所用的排序方法是 A ; A. 直接插入排序 B. 冒泡排序 C. 希尔排序D. 堆排序97.对下列4个序列用快速排序的方法进行排序,以序列的第一个元素为基础进行划分,在第一趟划分过程中,元素移动次数最多的是 A 序列; A. 70,75,82,90,23,16,10,68 B. 70,75,68,23,10,16,90,82 C. 82,75,70,16,10,90,68,23 D. 23,10,16,70,82,75,68,9098.用快速排序的方法对包含几个关键字的序列进行排序,最坏情况下,执行的时间为 D ; A. OnB. Olog 2nC.Onlog 2nD. On 299.在所有排序方法中,关键码即关键字比较的次数与记录的初始排列次序无关的是 D ; A. 希尔排序B. 冒泡排序C. 直接插入排序D. 直接选择排序100.在归并排序过程中,需归并的趟数为 C ; A. nB. nC. ⎣⎦n n 2logD. ⎣⎦n 2log101.一组记录的排序代码为{46,79,56,38,40,84},则利用堆排序的方法建立的初始堆为 B ;A. {79,46,56,38,40,80}B. {84,79,56,38,40,46}C. {84,79,56,46,40,38}D. {84,56,79,40,46,38}102.一组记录的排序代码为{46,79,56,38,40,84},则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为 C ;A. {38,40,46,56,79,84}B. {40,38,46,79,56,84}C. {40,38,46,56,79,84}D. {40,38,46,84,56,79}103.每次把待排序的区间划分为左、右两个子区间,其中左区间中元素的排序码均小于等于基准元素的排序码,右区间中元素的排序码均大于等于基准元素的排序码,此种排序方法叫做 B ;A. 堆排序B. 快速排序C. 冒泡排序D. 希尔排序104.一组记录的排序码为一个字母序列{Q,D,F,X,A,P,N,B,Y,M,C,W},按归并排序方法对该序列进行一趟归并后的结果为 D ;A. D,F,Q,X,A,B,N,P,C,M,W,YB. D,F,Q,A,P,X,B,N,Y,C,M,WC. D,Q,F,X,A,P,N,B,Y,M,C,WD. D,Q,F,X,A,P,B,N,M,Y,C,W105.一组记录的排序码为{25,48,16,35,79,82,23,40,36,72},其中,含有5个长度为2的有序表,按归并排序方法对该序列进行一趟归并后的结果为 A ;A. 16,25,35,48,23,40,79,82,36,72B. 16.25,35,48,79,82,23,36,40,72C. 16,25,48,35,79,82,23,36,40,72D. 16,25,35,48,79,23,36,40,72,82106.设有1000个无序的元素,希望用最快的速度挑选出其中前10个最大的元素,最好选用C排序法;A. 冒泡排序B. 快速排序C. 堆排序D. 希尔排序107.在待排序的元素序列基本有序的前提下,效率最高的排序方法是 A ;A. 插入排序B. 选择排序C. 快速排序D. 归并排序108.用某种排序方法对线性表{25,84,21,47,15,27,68,35,20}进行排序时,元素序列的变化情况如下:1 25,84,21,47,15,27,68,35,202 20,15,21,25,47,27,68,35,843 15,20,21,25,35,27,47,68,844 15,20,21,25,27,35,47,68,84则所采用的排序方法是 D ;A. 选择排序B. 希尔排序C. 归并排序D. 快速排序109. 快速排序方法在C情况下最不利于发挥其长处;A. 要排序的数据量太大B. 要排序的数据中含有多个相同值C. 要排序的数据已基本有序D. 要排序的数据个数为整数110. 设有一个已按各元素的值排好序的线性表,长度大于2,对给定的值K,分别用顺序查找法和二分查找法查找一个与K相等的元素,比较的次数分别为s和b;在查找不成功的情况下,正确的s和b的数量关系是 B ;A. 总有s=bB. 总有s>bC. 总有s<bD. 与k值大小有关111. 如果要求一个线性表既能较快地查找,又能适应动态变化的要求,则可采用的方法是A ;A. 分块法B. 顺序法C. 二分法D. 哈希法112. 哈希表的地址区间为0-17,哈希函数为Hk=k mod 17;采用线性探测法处理冲突,并将关键字序列{26,25,72,38,8,18,59}依次存储到哈希表中;那么,元素59存放在哈希表中的地址是 D ; A. 8 B. 9C. 10D. 11113. 哈希表的地址区间为0-17,哈希函数为Hk=k mod 17;采用线性探测法处理冲突,并将关键字序列{26,25,72,38,8,18,59}依次存储到哈希表中;如果要访问元素59,则需要的搜索次数是C ;A. 2B. 3C. 4D. 5114.在计算机系统中,允许多个程序同时进入内存并运行,这种方法称为 D ;A. Spodling技术B. 虚拟存储技术C. 缓冲技术D. 多道程序设计技术115.分时系统追求的目标是 C ;A. 高吞吐率B. 充分利用内存C. 快速响应D. 减少系统开销116.引入多道程序的目的是 D ;A. 提高实时响应速度B. 增强系统交互能力C. 为了充分利用主存储器D. 充分利用CPU,减少CPU等待时间117.若把操作系统看作计算机系统资源的管理者,下列 D 不属于操作系统所管理的资源; A. 程序 B. 内存C. CPUD. 中断118. A 不属于多道程序设计的概念;A. 多个用户同时使用一台计算机的打印设备B. 多个用户同时进入计算机系统,并要求同时处于运行状态C. 一个计算机系统从宏观上进行作业的并行处理,但在微观上仍在串行操作D. 多个作业同时存放在主存并处于运行状态119.操作系统的CPU管理主要是解决 C ;A. 单道程序对CPU的占用B. 多道程序对CPU的占用C. 多道程序对CPU的分配D. 多道程序或单道程序对CPU的争夺120.分时操作系统是指 B ;A. 多个用户分时使用同一台计算机的某一个终端B. 多道程序分时共享计算机的软、硬件资源C. 多道程序进入系统后的批量处理D. 多用户的计算机系统121. A 不是实时系统的特征;A. 很强的交互性B. 具有对用户信息的及时响应性C. 具有很强的可靠性D. 有一定的交互性122.工业过程控制系统中,运行的操作系统最好是 B ;A. 分时系统B. 实时系统C. 分布式操作系统D. 网络操作系统123. 对处理事件有严格时间限制的系统是 B ;A. 分时系统B. 实时系统C. 分布式操作系统D. 网络操作系统。
第1章计算机基础知识一、选择题1.世界上首次提出存储程序计算机体系结构的是。
A.莫奇莱B.艾伦·图灵C.乔治·布尔D.冯·诺依曼2.在下列叙述中,最能够反映计算机主要功能的是。
A.计算机可以代替人的脑力劳动B.计算机可以存储大量信息C.计算机是一种信息处理机D.计算机可以实现高速度的运算3.世界上第一台电子数字计算机研制成功的时间和地点是。
A.1957年美国B.1951年英国C.1947年英国D.1946年美国4.采用超大规模集成电路制造的计算机应该归属于计算机。
A.第一代B.第二代C.第三代D.第四代5.计算机发展的方向是巨型化、微型化、网络化、智能化。
其中“巨型化”是指。
A.体积大B.重量重 C.功能更强、速度更高、存储容量更大 D.外部设备更多6.办公自动化(OA)是计算机的一项应用,按计算机应用的分类,它应属于。
A.科学计算B.辅助设计 C.数据处理D.实时控制7.CAI软件指的是。
A.系统软件B.计算机辅助教学软件C.计算机辅助设计软件D.办公自动化系统8.下列叙述中正确的是。
A.计算机体积越大,其功能就越强B.两个显示器屏幕尺寸相同,则它们的分辨率必定相同C.点阵打印机的针数越多,则能打印的汉字字体就越多D.在微机性能指标中,CPU的主频越高,其运算速度越快9.“32位机”中的32指的是。
A.微机型号B.内存容量C.存储单位D.机器字长10.用单位MIPS来衡量的计算机性能指标是。
A.处理能力B.存储容量C.可靠性D.运算速度11.下列叙述中正确的是。
A.Windows xp属于高级语言B.计算机的主机包括CPU、电源、硬盘、内存C.扫描仪是一种输入设备D.显示器性能越好,运算速度越高12.计算机的主要特点是运算速度快、精确度高_____。
A.具有记忆功能和程序操作B.具有记忆功能和逻辑判断功能C.具有记忆功能D.程序操作13.计算机病毒是一种___ __。
第1章习题部分答案1. 操作系统的发展分为那几个阶段?解:操作系统的发展经历了三个阶段:操作系统的酝酿阶段、操作系统的形成阶段、操作系统的理论化和标准化阶段。
2. 计算机软件技术开发系统包括那几个阶段?解:计算机软件开发系统的发展经历了四个阶段:机器语言阶段、汇编语言阶段、高级语言阶段、面向对象语言和可视化语言阶段。
3. 计算机软件技术的主要范畴是什么?解:计算机软件技术的主要范畴包括软件工程技术、程序设计技术、软件工具环境技术、系统软件技术、数据库技术、实时软件技术、网络软件技术、与实际工作相关的软件技术等八个领域的内容。
4. 从软件技术的发展现状来看有哪些值得我们注意的问题?解:从软件技术的发展现状来看有以下几个值得我们注意的问题:1)软件危机2)软件技术标准,软件版权和软件价值评估3)软件技术的基础研究。
1第2章习题部分答案1. 什么是软件危机?软件危机的表现有哪些?解:软件开发技术的进步为能满足发展的要求,在软件开发中遇到的问题找不到解决的方法,问题积累起来形成了尖锐的矛盾,导致了软件危机。
2. 软件危机产生的原因是什么?解:造成软件危机的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的。
1)软件规模越来越大,结构越来越复杂。
2)软件开发管理困难而复杂。
3)软件开发费用不断增加。
4)软件开发技术落后。
5)生产方式落后。
6)开发工具落后,生产率提高缓慢。
3. 常见的软件过程模型有哪些?解:常见的软件过程模型有瀑布模型、增量模型、演化过程模型、敏捷开发4. 如何对软件质量进行评价?解:软件质量的评价主要围绕可维护性、可靠性、可理解性和效率这几个方面进行。
2第3章习题部分答案1. 软件可行性研究的目的是什么?软件可行性研究的任务又是什么?解:软件可行性研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。
可行性研究的任务首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。
第1章 概 述教学提示:本章主要讲授计算机的发展概况;计算机软件发展的几个阶段;计算机系统的组成;计算机软件的分类以及常用的系统软件和应用软件的介绍。
教学要求:了解计算机的发展过程;掌握计算机软件发展经历的几个阶段;了解常用的高级语言;了解计算机网络软件及数据库软件;掌握软件的分类;简单介绍常用的工具软件。
1.1 计算机软件的发展计算机是由一系列电子元件组成的、具有处理信息能力的机器。
世界上第一台计算机是1946年在美国的宾西法尼亚大学研制成功的。
计算机诞生60多年来,发展极为迅速,更新换代非常快。
计算机先后以电子管、晶体管、集成电路、大规模和超大规模集成电路为主要元器件,共经历了四代变革,现在已进入第五代的研制时期。
每一代的变革在技术上都是一次新的突破,在性能上都是一次质的飞跃。
第一代为电子管时代(1946年—1957年)。
在这个阶段计算机的逻辑器件采用电子管,通常称为电子管计算机。
它的内存容量很小,仅有几千字节,运算速度低,且成本很高。
第二代为晶体管时代(1958年—1964年)。
与第一代相比,该阶段计算机的主要逻辑器件采用晶体管,即晶体管计算机。
存储器由磁心构造,内存容量扩大到几十千字节。
第三代为集成电路时代(1965年—1972年)。
在这个阶段计算机的主要逻辑器件采用集成电路。
不仅使计算机体积大大减小,耗电显著降低,而且使运算速度大大提高。
第四代为大规模和超大规模集成电路时代(1972 年至今)。
在这个阶段计算机的逻辑器件采用大规模集成电路(LSI)。
这一代计算机的性能较前三代有较大提高,主要依靠器件的变革和系统结构的改进,而新一代计算机总是朝着体积小、耗电少、速度快、最优性价比及使用方便等方向发展。
第五代为超大规模集成电路和人工智能计算机时代,目前尚处于研制阶段。
第五代计算机是超大规模集成电路、高级软件工程、人工智能、新型计算机系列的综合产物。
它是一种更接近人的人工智能计算机,它能理解人的语言、文字和图形,无须编写程序,靠讲话就能对计算机下达命令,驱使它工作。