当前位置:文档之家› 西安电子科技大学软件技术基础上机报告

西安电子科技大学软件技术基础上机报告

西安电子科技大学软件技术基础上机报告
西安电子科技大学软件技术基础上机报告

《软件技术基础》上机实验报告

一、设有一个线性表E={e1, e2, … , e n-1, e n},设计一个算法,将线性表逆置,即使元素排列次

序颠倒过来,成为逆线性表E’={ e n , e n-1 , … , e2 , e1 },要求逆线性表占用原线性表空间,并且用顺序表和单链表两种方法表示,分别用两个程序来完成。

1.顺序表逆置算法

void invert(sequenlist*L)

{

inti=1;

char temp; //定义一临时变量

while(i<=L->last/2) //确定循环次数

{

temp=L->data[i]; //将顺序表第i个元素与第总长度-i+1个元素交换位置

L->data[i]=L->data[L->last-i+1];

L->data[L->last-i+1]=temp;

i++;

}

}

运行结果:

算法分析:

2.单链表逆置算法

void invert(linklist*head)

{

linklist *k,*m,*n;

k=head;//k指向逆置前的第一个节点

m=k->next;//m指向逆置前的第二个个节点

while(m!=NULL)

{

n=m->next;

m->next=k;

k=m;

m=n;//完成原链表的第一第二个元素逆置后循环往后逆置}

head->next->next=NULL;//将原链表的第一个元素后的指针域令为NULL

head->next=k;//将head的指向指向K,即实现单链表的逆置}

运行结果:

算法分析:

二、已知由不具有头结点的单链表表示的线性表中,含有三类字符的数据元素(字母、数字

和其他字符),试编写算法构造三个以循环链表表示的线性表,使每个表中只含有同一类的字符,且利用原表中的结点空间,头结点可另辟空间。

1.分解单链表算法

void resolve(linklist*head,linklist*letter,linklist*digit,linklist*other)

{

linklist*p;

while(head->next!=NULL) //循环执行

{

p=head->next; //p指向第一个节点

head->next=head->next->next; //取出链表的第一个元素

if((('a'<=p->data)&&(p->data<='z'))||(('A'<=p->data)&&(p->data<='Z')))

//判断取出的元素是否为字母insert(letter,p); //将p插入到链表letter 中else if('0'<=p->data&&p->data<='9') //判断取出的是否为数字

insert(digit,p); //将链表插入到digit 中else

insert(other,p); //若都不是则插入到链表other中}

}

2.运行结果

3.算法分析

三、设单链表中存放有n个字符,试编写算法,判断该字符串是否有中心对称的关系,例如

xyzzyx是中心对称的字符串。(提示:将单链表中的一半字符先依次进栈,然后依次出栈与单链表中的另一半字符进行比较。)

1.判字符串是否中心对称算法

int symmetry(linklist*head,stack*s)

{ int n=length(head)/2; //确定压入堆栈的个数

linklist*p=head->next; //p指向头结点的下一个节点

datatype x; //定义x 的类型为规定的类型

for(inti=0;i

{ push(s,p->data);

p=p->next; //同时缩短原链表

}

if(length(head)%2==1)

p=p->next; //修改p的节点为其后一个节点

while(p!=NULL)

{ x=pop(s);//弹出堆栈中的元素

if(x==p->data) //将堆栈中元素与原链表剩余元素进行比较

p=p->next; //比较下一个

else return 0; //失败返回0

}

return 1; //成功返回1

}

2.运行结果

3.算法分析

四、假设以数组sequ[m]存放循环队列的元素,同时设变量rear和quelen分别指示循环队

列中队尾元素的位置和内含元素的个数。编写实现该循环队列的入队和出队操作的算法。

提示:队空的条件:sq->quelen==0;队满的条件:sq->quelen==m。

1.循环队列入队算法

void enqueue(qu *sq, datatype x) //将新元素x插入到队列*sq的队尾

{ if(sq->quelen==m) //通过队列元素个数判断队列是否满

printf("队列上溢\n");

else

{

sq->quelen++; //修改队列长度,队列元素个数加1

sq->rear=(sq->rear+1)%m; //修改队尾指针

sq->sequ[sq->rear]=x; //新的队尾指针指向新插入的元素

}

}

2.循环队列出队算法

datatype *dequeue(qu *sq)

{ datatype *temp; //定义一临时变量

if(sq->quelen==0) //通过队列元素个数判断队列是否为空

{ printf("队列下溢\n");

return NULL; //出队失败

}

else

{

temp=(datatype*)malloc(sizeof(datatype)); //产生一新的节点

sq->quelen--; //修改队列长度,队列元素个数减1

*temp=sq->sequ[(sq->rear-sq->quelen+m)%m]; //临时节点指向出队前的队尾位置

return (temp); //返回出队元素值

}

}

3.运行结果

4.算法分析

五、串采用顺序存储结构,编写朴素模式匹配算法,查找在串中是否存在给定的子串。

1.顺序串的朴素模式匹配算法

int Index(seqstring*S, seqstring*T)

{ inti=1,j=1; //位序从1开始

while(i<=S->len&&j<=T->len) //确定主串与子串中元素比较的次数

{

if(S->str[i-1]==T->str[j-1]) //若第一个字符相同

{ i++; j++; } //则继续比较后面的字符

else

{ i=i-j+2; j=1; } //如果本趟不匹配,设置下一趟匹配的起始位序}

if(j>T->len) //如果比较后子串的长度大于输入子串的长度

return(i-T->len); //匹配成功

else return(-1); //匹配不成功

}

2.运行结果

3.算法分析

六、编写一个算法void strDelete(seqstring*S,intpos,intlen),从串S中删除第pos个字符开始

长度为len的子串。要求:1≤pos≤S->length-len+1

1.删除子串算法

voidstrDelete(seqstring*S,intpos,intleng)

{ char temp[maxsize];

if(pos<=S->len) //删除子串的起始位置小于串的长度

{ strncpy(temp,S->str,pos-1);

//调用strncpy函数,将原串从头元素起到往后的第pos-1个元素复制到temp数组中strcpy(temp+pos-1,S->str+pos+leng-1);

//将原串从第pos+leng-1个元素起到原串最后一个元素复制到temp数组中

strcpy(S->str,temp);

//将保存在临时数组中的字符再复制到原串中

if(pos<=S->len)

if(pos+leng-1<=S->len)

//判断删除子串的最后一个元素在原串中的位置

S->len=S->len-leng; //修改复制后的原串的长度

else

S->len=S->len-pos+1; //修改复制后的原串的长度

}

}

2.运行结果

3.算法分析

七、若在矩阵A m×n中存在一个元素A[i][j],其满足A[i][j]是第i行元素中最小值,且又是第j

列元素中最大值,则称此元素为该矩阵的一个马鞍点。用二维数组存储矩阵A m×n,设计算法求出矩阵中所有马鞍点。

1.找马鞍点算法(方法一)

void minmax(array*p)

{ inti,j,have=0;

for(i=1;i<=m;i++)

{

p->min[i]=p->A[i][1];

for(j=2;j<=n;j++)

if(p->A[i][j]min[i]) //比较第i行中的所有元素,找出最小值

p->min[i]=p->A[i][j]; //将m行的最小值都存放到数组min中}

for (j=0;j

{

p->max[j]=p->A[1][j];

for(i=2;i<=m;i++)

if(p->A[i][j]>p->max[j]) //比较第j列中的所有元素,找出最大值

p->max[j]=p->A[i][j]; //将n列的最大值都存放到数组max中}

for(i=1;i<=m;i++)

for(j=1;j<=n;j++)

if(p->min[i]==p->max[j]) //如果相等,则此点就是一个马鞍点

{

printf("%d,%d,%d\n",i,j,p->A[i][j]);//输出马鞍点

have=1; //统计马鞍点个数

}

if(!have) printf("矩阵中没有马鞍点\n");

}

2.运行结果

3.算法分析

4.找马鞍点算法(方法二)

void minmax(array*p)

{ inti,j,temp;

sequenlist *L,*M;

for(i=1;i<=m;i++)

for(j=0;j

{

L->data[i]=A[i][j];

if(L->data[i]>A[i][j+1]) // 比较第i行中的所有元素,找出最小值

{

temp=L->data[i];

L->data[i]=A[i][j+1]; //将最小值存放到线性表L中

}

}

for(j=0;j

for(i=0;i

{

M->data[j]=A[i][j];

if(M->data[j]

{

temp=M->data[j];

M->data[j]=A[i+1][j]; //将最大值存放到线性表M中

}

}

for(i=0;i

for(j=0;j

if(L->data[i]=M->data[j]) //若相等

printf("A[i][j]\n"); //输出马鞍点

}

5.运行结果

6.算法分析

八、A和B是两个n×n阶的对称矩阵,以行为主序输入对称矩阵的下三角元素,压缩存储

存入一维数组A和B,编写一个算法计算对称矩阵A和B的乘积,结果存入二维数组C。

1.对称矩阵相乘算法

voidmult(array*p)

{ int i,j,k,t1,t2;

datatype s;

for(i=0;i

for(j=0;j

{ s=0;

for(k=0;k

{ if(i>=k)

//下三角矩阵中元素的下标与压缩矩阵中元素下标满足的对应关系

t1=i*(i+1)/2+k;

else

t1=k*(k+1)/2+i;

if(k>=j)

//下三角矩阵中元素的下标与压缩矩阵中元素下标满足的对应关系

t2=k*(k+1)/2+j;

else

t2=j*(j+1)/2+k;

s=s+p->A[t1]*p->B[t2]; //A矩阵中对应元素与B矩阵中对应元素相乘}

p->C[i][j]=s; //将所得结果保存在新的二维数组中}

}

2.运行结果

3.算法分析

九、已知二叉树采用二叉链表存储结构,如果左、右子树非空,且左子树根结点大于右子树

根结点,则交换根结点的左、右子树。即按要求交换二叉树及子树的左、右子树。1.交换左右子树算法

void swap(bitree*p)

{

bitree*q; //定义一个二叉树用于存放中间变量

if(p!=NULL) //判断二叉树非空

{ if(p->lchild!=NULL&&p->rchild!=NULL&&p->lchild->data>p->rchild->data) //判断二叉树左、右子树非空,且左子树根结点大于右子树根结点

{ q=p->lchild; //交换根结点的左、右子树

p->lchild=p->rchild;

p->rchild=q;

}

swap(p->lchild); //递归左子树

swap(p->rchild); //递归右子树

}

}

2.运行结果

3.算法分析

十、采用二叉链表结构存储一棵二叉树,编写一个算法统计该二叉树中结点总数及叶子结点

总数。

1.统计结点个数算法

intcountnode(bitree *p)

{ static int node =0; //初始化节点数

if(p!=NULL)

{

node++; //前序递归算法,统计节点个数

node = countnode(p->lchild); //统计左子树中结点个数

node=countnode(p->rchild); //统计右子树中结点个数

}

return node;

}

2.统计叶子结点个数算法

intcountleaf(bitree *p)

{ static int leaf =0; //初始化叶子节点个数

if(p!=NULL)

{ //中序递归算法,统计叶子节点个数

leaf = countleaf( p->lchild ); //统计左子树中叶子结点个数

if ((p->lchild==NULL)&&(p->rchild==NULL)) //若无子树,证明此节点为叶子节点

leaf++;

leaf=countleaf(p->rchild); //统计右子树中叶子结点个数

}

return leaf;

}

3.运行结果

4.算法分析

十一、无向图采用邻接矩阵存储,编写深度优先搜索遍历算法,从不同的顶点出发对无向图进行遍历。

1.深度优先搜索遍历算法

voiddfsa(inti)

{ int j;

printf("%c\n",g->vexs[i]); //输出顶点

visited[i]=1; //建立访问数组,将访问后的顶点标记为1

for(j=0;j

if(g->arcs[i][j]==1&&visited[j]==0) //如果图中某点是未访问的点

dfsa(j); //对为访问的邻接顶点递归调用}

2.运行结果

3.算法分析

重庆邮电大学-软件技术基础--实验报告(耿道渠)

《软件技术基础》实验报告 实验名称:顺序表的操作 班级学号姓名 第9 周星期 2 、5,6 节成绩 一、实验目的: 1、掌握顺序表结构的实现方式; 2、掌握顺序表常用算法的实现; 3、熟悉利用顺序表解决问题的一般思路; 4、参照给定的顺序表的程序样例,验证给出的顺序表的常见算法,领会顺序表结构的优点和不足。 二、实验内容: 1、设计一个静态数组存储结构的顺序表,要求编程实现如下任务:(1)建立一个顺序表,首先依次输人整数数据元素(个数根据需要键盘给定)。 (2)删除指定位置的数据元素(指定元素位置通过键盘输入),再依次显示删除后的顺序表中的数据元素。 (3)查找指定数据的数据元素(指定数据由键盘输入),若找到则显示位置,若没有找到则显示0。 2、使用顺序表实现一个电话本的管理程序,电话本中的每条记录包括学号、姓名、手机号码和固定电话四项。要求实现菜单、初始化、添加、删除和显示等功能。 三、实验结果:

四、实验中遇到的问题及解决方法: 第一次编写C++,感觉力不从心,回去多看看PPT。

五、实验心得体会: 对顺序表的一些常用语句不熟悉,对顺序表的整体思路理解不深刻以后要加强练习 附:源程序(自行编写或修改的程序。若为修改程序请注明修改部分的功能,若为书上实例则可不附。) #include #include #include #include #define MAXSIZE 20 using 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 *);

西安电子科技大学 数字电路基础 答案

习题4 4-3 解:该电路的输入为3x 2x 1x 0x ,输出为3Y 2Y 1Y 0Y 。真值表如下: 由此可得:1M =当时,33 2 321210 10 Y x Y x x Y x x Y x x =??=⊕?? =⊕??=⊕? 完成二进制至格雷码的转换。 0M =当时,33 2 32 132121 321010 Y x Y x x Y x x x Y x Y x x x x Y x =??=⊕?? =⊕⊕=⊕??=⊕⊕⊕=⊕? 完成格雷码至二进制的转换。

4-9 设计一个全加(减)器,其输入为A,B,C 和X(当X =0时,实现加法运算;当X =1时,实现减法运算),输出为S(表示和或差),P (表示进位或借位)。列出真值表,试用3个异或门和3个与非门实现该电路,画出逻辑电路图。 解:根据全加器和全减器的原理,我们可以作出如下的真值表: 由真值表可以画出卡诺图,由卡诺图得出逻辑表达式,并画出逻辑电路图: A B C X P 4-10 设计一个交通灯故障检测电路,要求红,黄,绿三个灯仅有一个灯亮时,输出F =0;

若无灯亮或有两个以上的灯亮,则均为故障,输出F =1。试用最少的非门和与非门实现该电路。要求列出真值表,化简逻辑函数,并指出所有74系列器件的型号。 解:根据题意,我们可以列出真值表如下: 对上述的真值表可以作出卡诺图,由卡诺图我们可以得出以下的逻辑函数: F AB AC BC A B C AB AC BC A B C =+++=??? 逻辑电路图如下所示: A F 4-13 试用一片3-8译码器和少量逻辑门设计下列多地址输入的译码电路。 (1) 有8根地址输入线7A ~1A ,要求当地址码为A8H,A9H ,…,AFH 时,译码器输出为 0Y ~7Y 分别被译中,且地电平有效。 (2) 有10根地址输入线9A ~0A ,要求当地址码为2E0H,2E1H, …,2E7H 时,译码器输 出0Y ~7Y 分别被译中,且地电平有效。

西电《软件技术基础》上机大作业答案解析

说明 每个实验题目含有一个main函数和一些函数,与实验题目相关的基本运算的函数定义和main函数定义的代码在附录以及对应的文件夹中给出,供上机实验参考使用。对于每个题目,只需要根据题目要求设计算法,补充函数定义,然后对程序进行编译、调试。

实验一线性表 一、实验目的 1.熟悉线性表的顺序和链式存储结构 2.掌握线性表的基本运算 3.能够利用线性表的基本运算完成线性表应用的运算 二、实验内容 1.设有一个线性表E={e1, e2, … , e n-1, e n},设计一个算法,将线性表逆置,即使元素排列次序颠倒过来,成为逆线性表E’={ e n , e n-1 , … , e2 , e1 },要求逆线性表占用原线性表空间,并且用顺序表和单链表两种方法表示,分别用两个程序来完成。(文件夹:顺序表逆置、单链表逆置) 2.已知由不具有头结点的单链表表示的线性表中,含有三类字符的数据元素(字母、数字和其他字符),试编写算法构造三个以循环链表表示的线性表,使每个表中只含有同一类的字符,且利用原表中的结点空间,头结点可另辟空间。(文件夹:分解单链表) 实验二栈和队列 一、实验目的 1.熟悉栈和队列的顺序和链式存储结构 2.掌握栈和队列的基本运算 3.能够利用栈和队列的基本运算完成栈和队列应用的运算 二、实验内容 1.设单链表中存放有n个字符,试编写算法,判断该字符串是否有中心对称的关系,例如xyzzyx是中心对称的字符串。(提示:将单链表中的一半字符先依次进栈,然后依次出栈与单链表中的另一半字符进行比较。)(文件夹:判字符串中心对称) 2.假设以数组sequ[m]存放循环队列的元素,同时设变量rear和quelen 分别指示循环队列中队尾元素的位置和内含元素的个数。编写实现该循环队列的入队和出队操作的算法。 提示:队空的条件:sq->quelen==0;队满的条件:sq->quelen==m。(文件夹:循环队列)实验三串 一、实验目的 1.熟悉串的顺序存储结构 2.掌握串的基本运算及应用 二、实验内容 1.串采用顺序存储结构,编写朴素模式匹配算法,查找在串中是否存在给定的子串。(文件夹:模式匹配) 2.若S是一个采用顺序结构存储的串,利用C的库函数strlen和strcpy(或strncpy)编写

软件技术基础教学大纲资料

《软件技术基础》教学大纲 课程编号:23000840 适用专业:电子信息类(非计算机专业) 学时数:40 学分数: 2.5 开课学期:第4学期 先修课程:《C语言》 考核方式:笔试(闭卷) 执笔者:沈晓峰编写日期:2015年3月审核人(教学副院长): 一、课程性质和目标 授课对象:电子信息工程专业大学二年级本科生 课程类别:学科拓展课程 教学目标: 本课程是针对工科电子信息类本科生开设的一门学科拓展课程。着重培养学生在软件设计领域的基本素质,基本方法和设计理念。授课对象为大学二年级学生,课程任务是通过本课程的学习和相关实验的练习,使学生掌握数据结构、操作系统等软件技术的基本理论知识,具有一定的软件开发能力。 二、教学内容和要求 1、课堂理论教学要求和学时安排(32学时) 1)C程序设计(4学时) (1)C语言回顾,指针的基本概念、运算方法和使用(2学时)。 (2)结构体的基本概念和使用方法(2学时)。 2)数据结构(20学时) (1)数据结构的基本概念(2学时):理解数据结构的基本概念;理解线性和非线性结构的概念。 (2)线性数据结构(9学时):理解表、栈、队列等线性数据结构的概念,存储方式及基于不同存储方式的相关操作的实现方法。 a.理解表的概念及顺序表的存储特点,掌握其创建、插入、删除等实现方法(2 学时); b.掌握单链表、双链表、循环链表的创建、插入、删除方法(2学时); c.理解栈的概念及结构特点,掌握顺序栈及链栈的出栈、入栈操作的实现方法 (2学时);

d.理解队列的概念及特点,掌握顺序、循环队列的创建、出队、入队、判空、判满等操作。掌握链队列的创建及出队、入队(2学时); e.理解数组的概念及二维数组的存放方式,掌握对称矩阵及稀疏矩阵的压缩存储方法(1学时)。 (3)非线性数据结构(5学时):了解典型非线性数据结构的基本概念、存储和访问方式。 a.理解二叉树、满二叉树、完全二叉树的概念及基本性质(1学时); b.掌握二叉树的三种遍历算法、树和二叉树的转换方法(2学时); c.理解图的基本概念及性质,掌握图的邻接矩阵、邻接图存储方式(2学时)。 (4)结构查找和排序(4学时):理解查找和排序的基本概念,掌握三种查找(顺序、二分、分块)和三种排序(简单插入,简单选择和冒泡)方法和实现。 3)操作系统(8学时) (1)操作系统的基本概念(2学时):了解操作系统的基本概念,操作系统发展的历 程和现代操作系统的基本特征。 (2)处理机管理(4学时);理解进程、进程的状态、描述方式、进程控制的手段, 进程的同步和互斥,进程通信和死锁等基本概念,理解进程调度的相关方法。 (3)作业管理(2学时):理解作业、作业的状态、描述方式、作业控制的手段,等 基本概念,理解作业调度的相关方法。 通过这一章的学习同学们应该理解一个用户作业提交给计算机之后,操作系统控制计算机来执行该用户作业的基本流程。 2、实验安排(8学时) 共设置5组实验,分为上机实验和课外实验两部分:上机实验包括两个实验,课外实验包括3个实验,详细实验内容见实验教学大纲。 三、考核方式 课程最后成绩构成包括:期末考试卷面成绩(70%),平时成绩(10%),实验成绩(20%)。 实验部分的考核包含上机实验和课外实验,实验成绩采用实验出勤、实验考核、实验报告和实验程序验证相结合的方式给出。 四、教材和参考资料 1、教材 《软件技术基础》,黄迪明,电子科技大学出版社,1998年 2、参考资料

电子科技大学软件技术基础实验报告4

电子科技大学通信与信息工程学院标准实验报告 (实验)课程名称软件技术基础实验 电子科技大学教务处制表

电子科技大学 实验报告 一、实验室名称:校公共机房 二、实验项目名称:二叉树和哈夫曼树 三、实验学时:4学时 四、实验原理: 使用VS2010等C语言集成开发环境(IDE),在微型计算机上对程序进行编辑、编译、连接与运行。通过上机练习掌握二叉树的建立、插入删除,遍历等方法和过程,掌握递归函数在二叉树建立,遍历中的应用,掌握哈夫曼树的最小路径和建立过程。 五、实验目的: 1.熟练二叉树和哈夫曼树的概念和基本操作方法。 2.掌握课程平台使用方法。 六、实验内容: 上机完成所有函数,编程实验,调试运行程序并完成报告。 七、实验器材(设备、元器件): 硬件要求:普通pc机,1G内存,100G硬盘空间即可。 软件要求:Windows 7,包括C编译器的IDE。 八、实验步骤、实验编程与运行结果: 下面建立该二叉树并展示输出结果: #include #include typedef struct bnode

{ int data; struct bnode *lc,*rc; }; struct bnode* create() { struct bnode *tree=NULL; char ch; ch=getchar(); if(ch=='_') tree=NULL; else { tree=(struct bnode *)malloc(sizeof(struct bnode)); tree->data=ch; tree->lc=create(); tree->rc=create(); } return tree; } //先序遍历(根左右)--递归 int preorder(struct bnode *root) { putchar(root->data); if(root->lc!=NULL) preorder(root->lc); if(root->rc!=NULL) preorder(root->rc); } //中序遍历--递归 int inorder(struct bnode *root) { if(root->lc!=NULL) inorder(root->lc); putchar(root->data); if(root->rc!=NULL) inorder(root->rc); } //后序遍历--递归 int postorder(struct bnode *root) { if(root->lc!=NULL) postorder(root->lc); if(root->rc!=NULL)

软件技术基础习题答案

操作系统 1.如何理解虚拟机的概念? 答:虚拟机就是在裸机上扩展一层软件,将硬件实现细节隐藏起来,使用户能够更方便、更灵活使用的计算机。 2.什么是多道程序设计,它的主要优点是什么? 答:多道程序设计就是允许多个程序同时进入内存并运行。主要优点:提高资源利用率,从而提高了系统的吞吐量。 3.试述分时系统与实时系统,并比较它们的区别。 答:分时系统是指能够允许多个用户同时使用一台计算机的系统。实时系统是指能够及时响应随机发生的外部事件,并在严格的时间范围内完成对该事件处理的系统。实时系统对系统响应速度要求更高,可靠性要求更高。(或者说明分时系统与实时系统各自特点) 4.一般从哪几方面对操作系统的性能进行评价? 1)可靠性 2)方便性 3)效率 4)可维护性 5)可移植性 5.试说出几种你所熟悉的操作系统名称,并说明其特征。 答:Linux特征:支持多用户、多任务,具有良好的用户界面,设备独立性,系统安全性能高,良好的可移植性。 Windows特征:支持多用户、多任务,具有友好的图形用户界面,强大的内存管理功能,可靠性高,操作简单。 6.根据你试用计算机系统的经验,说明操作系统的作用。 答:控制和管理计算机系统内各种硬件和软件资源、合理有效地组织计算机系统的工作,为用户提供一个使用方便可扩展的工作环境,从而起到连接计算机和用户的接口作用。 7.如何理解网络操作系统的主要功能? 答:用于管理网络通信和共享资源,协调各主机上任务的运行,并向用户提供统一的、有效的网络接口,包括网络管理、通信、资源共享、系统安全和多种网络应用服务。 8.如何理解进程的概念?进程与程序的区别是什么?进程与作业的联系和区别是什么?答:进程是一个可以并发执行的程序或程序段在一个数据集合上的执行过程,他是系统分配资源的基本单位。 区别:1)经常是一个动态的概念,是执行程序的动态过程,它因创建而产生,因调度而执行,因撤销而消亡。而程序是一个静态的概念,是进程运行的静态文本。 2)进程能真实地描述并发执行,且具有并发性,而程序没有。 3)一个进程可以执行一个或多个程序。 4)程序可以作为一种软件资源长期保持着,而进程则是程序的一次执行过程,是暂时的,是动态地产生和终止的,它不具有存储性。 作业和进程的联系两者静态描述的结构相似,作业是由程序,数据和JCB组成,进程是由程序或程序段,数据,PCB组成。区别:作业是用户向计算机提交任务实体,而进程是完成用户任务的执行实体;一个作业可由多个进程组成,且必须至少有一个进程。作业一般用于批处理系统中,而进程用在所有多道系统中。 9.理解进程的三种基本状态和发生状态转换的原因。 答:进程的三种基本状态分别执行状态,就绪状态和等待状态。简单来说是由于CPU以及

大学计算机基础上机考试试卷(含答案)

大学计算机基础上机考试试卷 姓名:学号:院系:班级: 考试时间:登录机器:试卷号: 一、选择题 (共 40 分) 1. 使用超大规模集成电路制造的计算机应该归属于( )。 A ) 第一代 B ) 第二代 C ) 第三代 D ) 第四代 正确答案:D 考生答案:A × 2. 在计算机内部,传送、存储、加工处理的数据和指令都是()。 A ) 拼音简码 B ) 八进制码 C ) ASCII码 D ) 二进制码 正确答案:D 考生答案:C × 3. 与十六进制数BB等值的八进制数是( )。 A ) 187 B ) 273 C ) 563 D ) 566 正确答案:B 考生答案:× 4. 计算机应用中,CAD是指()。 A ) 计算机辅助设计 B ) 计算机辅助教学 C ) 计算机辅助制造 D ) 计算机辅助测试 正确答案:A 考生答案:× 5. 目前使用的“奔腾”型微机采用的逻辑器件属于( )。 A ) 电子管

C ) 集成电路 D ) 超大规模集成电路 正确答案:D 考生答案:× 6. 微处理器是把( )作为一整体,采用大规模集成电路工艺在一块或几块芯片上制成的中央处理器。 A ) 内存与中央处理器 B ) 运算器和控制器 C ) 主内存 D ) 中央处理器和主内存 正确答案:B 考生答案:× 7. 计算机的内存储器比外存储器( )。 A ) 价格便宜 B ) 存储容量大 C ) 读写速度快 D ) 读写速度慢 正确答案:C 考生答案:× 8. 打印机在与主机连接时,应将信号线插在( )。 A ) 串行接口上 B ) 并行接口上 C ) 串并行接口上 D ) 任意扩展插口上 正确答案:B 考生答案:× 9. 下面( )选项中的设备依次为:输入设备、输出设备和存储设备。 A ) CRT、CPU、ROM B ) 硬盘、鼠标器、键盘 C ) 鼠标器、绘图仪、光盘 D ) 磁带、打印机、激光打印机 正确答案:C 考生答案:× 10. 多媒体技术的特征是()。 A ) 集成性、交互性和音像性 B ) 实时性、分时性和数字化性 C ) 交互性、多样性、实时性、集成性 D ) 存储性、传输性、压缩与解压性 正确答案:C 考生答案:× 11. 将微机的主机与外设相连的是 ( )。 A ) 总线 B ) 磁盘驱动器 C ) 内存

计算机软件技术基础实验报告Word版

计算机软件基础实验报告 姓名学号实验目的 1. 掌握C语言程序设计方法,并学会上机调试。 2. 熟悉Huffman编码源程序,并构造Huffman树。 实验内容 1.试设计一算法,从包括n个元素的数组中,求最大和最小元素,并使得当n 个元素为有序排列时,元素之间的比较次数仅为n-1次。 2.在给出的Huffman编码源程序基础上,要求画出Huffman树,求出与等长编 码相比时的压缩比。 实验要求 1.根据实验内容编写算法,并用 C 语言进行程序设计。 2. 将所编程序在计算机上调试通过,并全面测试。 实验结果 1.以一个含有8个元素的一维数组{1,2,3,5,7,8,9,12}为例,设计程序如下: #include int maxArray(int x ,int y); int minArray(int x ,int y); int main(void) { int i = 0 ; int array[8]={ 1,2,3,5,7,8,9,12} ; printf; do { scanf("%d",&array[i]); i++; } while(i < 8); int maxTemp = array[0]; int minTemp = array[0]; int maxIndex = 0; int minIndex = 0; for(i=1;i<8;i++)

maxTemp = maxArray(array[i] , maxTemp); minTemp = minArray(array[i] , minTemp); } for(i=0;i<8;i++) { if (maxTemp == array[i]) { maxIndex = i; } if (minTemp == array[i]) { minIndex = i; } } printf; return 0; } 运行结果如下: 2.Huffman编码源程序 #include #include #include #include #include typedef struct {unsigned int weight; //结点权值 unsigned int parent,lchild,rchild; //结点的父指针,左右孩子指针 }HTNode,*HuffmanTree; //动态分配数组存储哈夫曼树 typedef char **HuffmanCode; //动态分配数组存储哈夫曼编码表 void CreateHuffmanTree(HuffmanTree &,unsigned int*,int ); //生成哈夫曼树 void HuffmanCoding(HuffmanTree,HuffmanCode &,int ); //对哈夫曼树

西安电子科技大学《电路基础》第三章部分习题解

习题三 3.3如题图3.3所示,求电压u,如果独立电压源的均值增至原值的2倍,独立电流源的值降为原值的一半,电压u变为多少? Ω3 1 i A Ω 2 V1 图3.3 解:仅考虑电压源(电流源开路) Ω3 1 i Ω 2 V1 对节点a列写节点方程 (1/3+1/6) a u=1/3+10/6 所以 a u=4V 3 1 i+1=4 则1i=1A 1 u+4?2+(-1)+3?(-1)=0 则1u=-4V 仅考虑电流源(电压源短路) Ω3 1 i Ω 2

1i =3?2/3=2A i =4-21i =1A 2u +4?1-3?2-2?3=0 故 2u =8V 所以 u =1u +2u =4V 当电压源增至2倍时,电流源降为原来的一半时,V u u 8211-==' V u u 421 22==' ='∴u V u u 421-=' +' 3.4如题图3.4所示电路,N 为不含独立源的线性电路,已知当s u =12V ,s i =4A 时,u =0V ;当s u =-12V ,s i =-2A 时,u =-1V ;求当s u =9V ,s i =-1A 时的电压u 。 s u 图3.4 解:u =1k s u +2k s i 根据题意列方程有: 121k +42k =0 -121k -22k =-1 解之有: 1k =1/6 2k =-1/2 即 u =1/6s u -1/2s i 故当s u =9V ,s i =-1A 时,u =2V 3.5当开关s 位置在1时,I =40mA,s 在位置2时,I =-60mA ,求s 在位置3时,I =?

V 图3.5 解:当开关s 位置在2时,电路图可以看成下图的叠加 V 4 所以,I '=I =40mA I ''=k 1s u I =I '+I ''=40mA+k 1s u =-60mA 所以k 1s u =-100mA 同理,若s 在位置3 I =I '+I ''=40mA+k 2s u 2 3 4621-=-=∴ s s u u k 2s u =150mA 故 I =190mA 3.8 N 为不含独立源的线性电阻电路,输出电压u =1/2s u ;若数处端 接5Ω电阻,u =1/3s u 问:输出端接3Ω电阻时,u 与s u 的关系。 +- u 图3.8 解:根据戴维南定理,电路等效为电压源和电阻串连

软件技术基础教学大纲资料

软件技术基础》教学大纲 课程编号: 23000840 适用专业:电子信息类(非计算机专业) 学时数: 40学分数: 2.5 开课学期:第4 学期 先修课程: 《C 语言》 考核方式:笔试(闭卷) 执笔者:沈晓峰编写日期:2015 年3月审核人(教学副院长): 一、课程性质和目标授课对象:电子信息工程专业大学二年级本科生课程类别:学科拓展课程教学目标: 本课程是针对工科电子信息类本科生开设的一门学科拓展课程。着重培养学生在软件设计领域的基本素质,基本方法和设计理念。授课对象为大学二年级学生,课程任务是通过本课程的学习和相关实验的练习,使学生掌握数据结构、操作系统等软件技术的基本理论知识,具有一定的软件开发能力。 二、教学内容和要求 1、课堂理论教学要求和学时安排(32 学时) 1) C 程序设计(4 学时) (1)C 语言回顾,指针的基本概念、运算方法和使用( 2 学时)。 (2)结构体的基本概念和使用方法(2 学时)。 2)数据结构(20 学时) (1)数据结构的基本概念(2 学时):理解数据结构的基本概念;理解线性和非线性结构的概念。 (2)线性数据结构(9 学时):理解表、栈、队列等线性数据结构的概念,存储方式及基于不同存储方式的相关操作的实现方法。 a. 理解表的概念及顺序表的存储特点,掌握其创建、插入、删除等实现方法(2 学时); b. 掌握单链表、双链表、循环链表的创建、插入、删除方法( 2 学时); c. 理解栈的概念及结构特点,掌握顺序栈及链栈的出栈、入栈操作的实现方法 (2 学时); d. 理解队列的概念及特点,掌握顺序、循环队列的创建、出队、入队、判空、判满等操作。掌握链 队列的创建及出队、入队(2 学时); e. 理解数组的概念及二维数组的存放方式,掌握对称矩阵及稀疏矩阵的压缩存储方法 (1 学时)。

软件技术基础实验报告

《计算机软件技术基础》实验报告 专业_____________ 年级_____________ 学号_____________ 学生姓名_____________ 指导老师_____________ 南华大学计算机学院编

【实验报告】

I 实验要求 1.每次实验中有若干习题,每个学生至少应该完成其中的两道习题。 2.上机之前应作好充分的准备工作,预先编好程序,经过人工检查无误后,才能上机,以提高上机效率。 3.独立上机输入和调试自己所编的程序,切忌抄袭、拷贝他人程序。 4.上机结束后,应整理出实验报告。书写实验报告时,重点放在调试过程和小节部分,总结出本次实验中的得与失,以达到巩固课堂学习、提高动手能力的目的。 实验一线性表 【实验目的】 1.熟悉VC环境,学习如何使用C语言实现线性表的两种存储结构。 2.通过编程、上机调试,进一步理解线性表的基本概念,熟练运用C语言实现线性表基本操作。 3.熟练掌握线性表的综合应用问题。 【实验内容】 必做: 1.一个线性表有n个元素(n

《计算机应用基础》实验报告本1

(封面) 上海建桥学院《计算机应用基础》 实验报告本 20 11 年3月15 日

2010-2011学年第一学期《计算机应用基础》实验目录

上海建桥学院实验报告 课程名称:计算机应用基础实验类型:验证/ 设计/ 综合 实验名称:文字处理软件的使用 系别:艺术系专业:视觉传达班级:三班学号:10B05060324 姓名:顾雯茵 同组人姓名: 指导老师:实验地点: 实验日期:2011年 3 月15 日 实验报告日期:2011年3月15日 报告退发( 订正、重做): 成绩:指导教师(签字):_________________________ 一、实验名称:文字处理软件的使用 二、实验目的: 1.掌握字体、段落格式、首字下沉、中文版式、分栏的设置; 2.掌握查找与替换、项目符号和编号、边框和底纹的设置; 3.掌握表格插入和设置; 4.掌握图片、图形、艺术字、文本框的插入、编辑及混排设置; 5.掌握公式、水印、页眉和页脚的插入及编辑方法; 6.掌握页面设置方法。

三、实验环境(所使用的平台和相关软件) (1)中文WindowXP操作系统 (2)中文Word2003应用软件 (3)中文实验配套材料配套 四、实验内容(实验内容的具体描述) 实验(1) 打开配套文件Word-Lx1.doc,按下列要求操作,并将结果以原文件名保存。 (1) 插入标题,内容见样张,其中大字:华文琥珀,72磅,空心,阴影;小字:华文云 彩,60,金色底纹,双行合一。 (2) 正文为小四号,第一段添加蓝色小3号项目符号;其余各行,首行缩进2字符;如 样张分栏,第1栏宽4厘米,间距0.75厘米;文末段落首2字下沉,并设置灰-20% 底纹。 (3) 按样张,对文中相应段落添加绿色、3磅边框线。 (4) 把文中的半角逗号、句号,均改为全角。 (5) 按样张,利用制表位在文末输入相关文字(注意对齐方式,间距自定)。 实验(2) 打开配套文件Word-Lx3.doc,按下列要求操作,并将结果以原文件名保存。 (1) 按样张,将文本标题“网上阅读,日趋流行”转化为艺术字,艺术字式样为艺术字 库中第四行第一列;艺术字字体为楷体、36磅、加粗;艺术字高2.8厘米、宽7.5厘米,形状采用“波形2”;艺术字衬底为加上填充色为“雨后初晴”斜上过渡效果的“流程图:资料带”。 (2) 按样张,将正文各段首行缩进2字符,将第二段(网页成本极为便宜…最大区别还 在于能够“反馈”。)设置成1.7倍行距。 (3) 将正文中所有的“图书馆”都替换为楷体、红色、四号、粗斜、蓝色双下划线。 (4) 按样张,为第一段中的文字“印刷出版物”制作合并字符效果,字体:隶书,字号: 12。 (5) 取消第三段原有的分栏,并将第二、三段按样张分为三栏,其栏宽分别为8字符米、 10字符、14字符。 (6) 将第四、五段加上三维边框,框线的粗细为3磅,颜色为深红,并加上如样张所示 的编号。 (7) 按样张,在文末插入大小为30%的配套图片Examine.wmf。

软件技术基础试题(含答案)

《操作系统》 选择题: (bs30)1. 分页式存储管理的主要特点是(B)。 (A) 要求作业全部同时装入内存(B) 不要求作业装入到内存的连续区域 (C) 要求扩充外存容量(D) 不要求处理缺页中断 (bs30)2. 进程从运行状态进入就绪状态的原因可能是(D)。 (A) 被选中占有处理机(B) 等待某一事件(C) 等待的事件已发生(D) 时间片用完 (bs30)3. 多道程序设计是指(D)。 (A) 在实时系统中并发运行多个程序(B) 在分布系统工程中同一时刻运行多个程序 (C) 在一台处理机上同一时刻运行多个程序(D) 在一台处理机上并发运行多个程序 (bs29)2. 进程从运行状态进入就绪状态的原因可能是( A )。 (A) 时间片用完(B) 等待某一事件(C) 等待的事件已发生(D) 被选中占有处理机(bs29)4. 以下(D)不是实时操作系统的特点。 (A) 高可靠性(B) 及时响应(C) 高效性(D) 通用性 (bs28)3. 任何两个并发进程之间( A )。 (A) 可能存在同步或互斥关系(B) 一定存在同步关系 (C) 一定彼此独立无关(D) 一定存在互斥关系 (bs28)4. 以下的哪个特征不是分时操作系统的主要特征(B)。 (A) 分时性(B) 独占性(C) 交互性(D) 多路性 (bs27)2. 以下(D)不是实时操作系统的特点。 (A) 高可靠性(B) 及时响应(C) 中断管理(D) 独立性 (bs27)3. 若当前进程因时间片用完而让出处理机时,该进程应转变为(B)状态。 (A) 运行(B) 就绪(C) 等待(D) 完成 (bs26)3. 在多道程序设计系统中,处于后备状态的作业要经过(D)调度后才能真正执行。 (A) 作业调度(B) 作业调度和设备调度(C) 进程调度(D) 作业调度和进程调度 (bs25)1. 把高级语言的源程序翻译成二进制代码的过程称为:(A)。 (A) 编译(B) 连接(C) 运行(D) 重定位 (bs25)2. 把逻辑地址转变为内存的物理地址的过程称作(D)。 (A) 地址分配(B) 地址连接(C) 地址调用(D) 地址变换 (bs25)4. 在操作系统中,进程最基本的特征是(A)。 (A) 动态性和并发性(B) 顺序性和可再现性 (C) 与程序的对应性(D) 执行过程的封闭性 (bs24)2. 把逻辑地址转变为存储的物理地址的过程称作(D)。 (A) 编译(B) 连接(C) 运行(D) 重定位 (bs24)3. SPOOLing技术可以实现设备的(B)分配。 (A) 虚拟(B) 共享(C) 独占(D) 物理 (bs24)4. 允许用户把若干作业提交计算机系统集中处理的操作系统称为(D)。 (A) 分时操作系统(B) 实时操作系统 (C) 网络操作系统(D) 批处理操作系统 (bs24)5. 进程从运行状态进入就绪状态的原因可能是(B)。 (A) 被选中占有处理机(B) 时间片用完 (C) 等待的事件已发生(D) 等待某一事件 (bs23)2. 任何两个并发进程之间( D) (A) 一定存在互斥关系(B) 一定存在同步关系 (C) 一定彼此独立无关(D) 可能存在同步或互斥关系

软件技术基础--上机实验三

姓名:吴振国学号:2011019190006 上机实验三 题目一: 一、程序流程说明 (1)创建一个链栈,(2)编写输出,进栈出站函数,(3)编写主函数 二、程序代码 #include #include #define LEN sizeof(node_type) typedef struct node { int data; struct node *next; }node_type; typedef struct { node_type *top; int length; }lstack_type; lstack_type *create_list(void) { lstack_type *p;

p=(lstack_type *)malloc(sizeof(lstack_type)); p->top=NULL; p->length=0; return(p); } void print(node_type *head) { node_type *p; printf("Now ,those records are:\n"); p=head; if(head!=NULL) { do{ printf("%4d",p->data); p=p->next; } while(p!=NULL); } } int push(lstack_type *lp, int x) { node_type *p; p=(node_type *)malloc(LEN);

if(p!=NULL) { p->data = x; p->next = lp->top; lp-> top = p; lp->length++; return(1); } else return(0); } int pop(lstack_type *lp) { node_type *p; int x; if(lp->top==NULL){ printf("stack is underflow"); return(0); } else{ x = lp->top->data; p = lp->top; lp->top = lp->top->next; lp->length--;

《软件技术基础》上机安排

《软件技术基础》上机实验安排 一、实验教学计划 实验学时:20学时 共安排五次上机实验,4学时/次; 二、实验内容安排: 实验一:指针和结构体部分 1、从键盘上输入10个整数,将其中最小的数与第一个数交 换,把最大的数与最后一个数交换,并将交换之后的序列 打印出来。(提示:用指针实现,参考教材习题10.3) 2、要求在主函数输入一串文字,并编写一个函数计算该文字 串中的大写字母,小写字母,数字以及其它字符的个数, 并在主函数中将文字串和以上计算结果打印出来。参考教 材习题10.8。 3、已知一个班有10名同学英语考试成绩为{88.5,76, 83.5, 92,96.5,80,62,85.5,74,87.5},平时成绩为{4.0,3.5,4.5,2.0, 3.0,3.5, 4.0,2.5,3.5,4.0},主函数中用C的指针分配函数: malloc()分配两块连续的存储单元存放以上的考试成绩和 平时成绩,用一个函数计算该班同学的考试平均成绩和 各同学的最终成绩(考试成绩+平时成绩),在主函数中 将以上计算结果打印出来。 注意:本题选作。

4、 编写一个函数input ,输入学生的成绩,包含3个学生的 数据即学号(num ),姓名(name )和三科成绩score[3]。再编写一个函数print ,打印学生的信息。编写一个主函数实现学生成绩的输入和输出。 实验二、顺序表的相关操作 1、 有序的一组整数,1-2-3-4-6-5-9-19设计顺序表并实现以 下操作:A.初始化线性表;B.添加上述一组数;C.删除第四个数据元素; D.显示B,C 操作后的结果。 2、 教材P74页,习题9。 3、 图书资料管理问题,设一本书有编号、书名、作者、价格 等信息,如下表 设计顺序表并实现以下操作;A、初始化线性表;B 、添 加表1中的记录;C 、删除第三条记录。本题选作。 提示:图书资料的数据的C 语言描述 typedef struct { long int num; char name[50]; char author[20]; 23.00 zhao delphi 4 18.00 wang C 3 20.00 li VB 2 15.00 zhang Basic 1 价格 作者 书名 编号

软件基础实验报告

XX大学 软件技术基础 实验报告 姓名:xx 班级:自动化1105 学号:xx 成绩: 2013年11月05 日

实验一 vc++6.0基本环境与应用 实验题目:熟悉vc++6.0的实验环境 实验目的:掌握建立vc工程的方法,并学会编写简单的vc程序。 实验内容: 1,熟悉vc++界面。 启动VC++ 6.0中文版以后,屏幕上显示如图所示的开发环境。开发环境界面由标题栏、菜单栏、工具栏、项目工作区窗口、文档窗口、输出窗口及状态栏组成。每个窗口左上角均有最小化、最大化(还原)和关闭按钮。各类窗口相互独立,可进行打开、关闭、移动、极大、极小化控制以及改变窗口大小。 2 建立MFC应用程序 建一个VC++的MFC应用程序的过程可分为5个步骤: (1)创建项目

使用Files菜单下的“New”项,会弹出一个New的对话框,选中Projects 选项卡,对话框会列出一系列可以创建的项目类型(见图4.),下列出部分常用类型: ATL COM AppWizard(创建ATL应用程序) Custom AppWizard(创建自定义的应用程序) Database Project(创建数据库) DevStudio Add-in Wizard(创建自定义宏) ISAPI Extension Wizard(创建Internet服务器或过滤器) Makefile(创建Make文件) MFC AppWizard(dll)(创建MFC动态链接库) MFC AppWizard(exe)(创建MFC可执行程序) MFC AxtiveX ControlWizard(创建MFC控件程序) Win32 Dynamic Link Library(创建Win32动态链接库) Win32 Application(创建Win32程序) Win32 Console Application(创建Win32控制台程序)

华中科技大学计算机系统基础实验报告

课程实验报告课程名称:计算机系统基础 专业班级: 学号: 姓名: 指导教师: 报告日期: 2016年 5月 24 日 计算机科学与技术学院

目录 实验1: ................................. 错误!未定义书签。实验2: ................................. 错误!未定义书签。实验3: ................................. 错误!未定义书签。实验总结................................. 错误!未定义书签。

实验1:数据表示 实验概述 本实验的目的是更好地熟悉和掌握计算机中整数和浮点数的二进制编码表示。 实验中,你需要解开一系列编程“难题”——使用有限类型和数量的运算操作实现一组给定功能的函数,在此过程中你将加深对数据二进制编码表示的了解。 实验语言:c; 实验环境: linux 实验内容 需要完成中下列函数功能,具体分为三大类:位操作、补码运算和浮点数操作。 实验设计 源码如下: /* * lsbZero - set 0 to the least significant bit of x * Example: lsbZero(0x) = 0x * Legal ops: ! ~ & ^ | + << >> * Max ops: 5 * Rating: 1 */ int lsbZero(int x) { * Examples: mult3div2(11) = 16 * mult3div2(-9) = -13 * mult3div2(24) = -2(overflow) * Legal ops: ! ~ & ^ | + << >>

软件技术基础--考试大作业

软件技术基础考试大作业 学号: 姓名: 年月日

第一部分数据结构程序设计(A4纸打印) 说明: (1)共七组选题,每位学生选择一组选题,每组选题包含两个小题,每组选题人数为20--21人,每位学生独立完成所选题目(两个小题)。【建议按学号顺序选题】(2)内容包括题目描述、预备知识、问题分析、数据结构设计、源代码等。 选题一 1.约瑟夫(Joseph)问题 编号为1,…,n的n个人按顺时针方向围坐一圈,从第1号的人开始按顺时针方向自1开始顺序报数,报到m时停止报数(m

相关主题
文本预览
相关文档 最新文档