操作实验3

操作实验3
操作实验3

四. 实验内容及步骤

1. 编写程序。显示进程的有关标识(进程标识、组标识、用户标识等)。经过5 秒钟后,执行另一个程序,最后按用户指示(如:Y/N)结束操作。

2. 参考例程1,编写程序。实现父进程创建一个子进程。体会子进程与父进程分别获得不同返回值,进而执行不同的程序段的方法。

思考:子进程是如何产生的?又是如何结束的?子进程被创建后它的运行环境是怎

样建立的?

答:是由父进程用fork()函数创建形成的,通过exit()函数自我结束,子进程被创建后核心将其分配一个进程表项和进程标识符,检查同时运行的进程数目,并且拷贝进程表项的数据,由子进程继承父进程所有文件。

3. 参考例程2,编写程序。父进程通过循环语句创建若干子进程。探讨进程的家族树以及子进程继承父进程的资源的关系。

思考题:①画出进程的家族树。子进程的运行环境是怎样建立的?反复运行此程序看会有什

么情况?解释一下。②修改程序,使运行结果呈单分支结构,即每个父进程只产生一个子进程。画出进程树,解释该程序。

2.修改之后的程序

运行结果:

解释:当该进程为父进程时就创建子进程并退出,当该进程为子进程时返回标识号

4. 参考例程3 编程,使用fork( )和exec( )等系统调用创建三个子进程。子进程分别启动不同程序,并结束。反复执行该程序,观察运行结果,结束的先后,看是否有不同次序。

思考:子进程运行其它程序后,进程运行环境怎样变化的?反复运行此程序看会有

什么情况?解释一下。

答:子进程运行其他程序后,这个进程就完全被新程序代替。由于并没有产生新进程所以进程

标识号不改变,除此之外的旧进程的其他信息,代码段,数据段,栈段等均被新程序的信息所代替。新程序从自己的main()函数开始进行。反复运行此程序发现结束的先后次序是不可预知的,每次运行结果不一样。原因是当每个子进程运行其他程序时,他们的结束随着其他程序的结束而结束,所以结束的先后次序在改变。

5. 参考例程4编程,验证子进程继承父进程的程序、数据等资源。如用父、子进程修改公共变

量和私有变量的处理结果;父、子进程的程序区和数据区的位置。

思考:子进程被创建后,对父进程的运行环境有影响吗?解释一下。

答:子进程被创建后,对父进程的运行环境无影响,因为当子进程在运行时,他有自己的代码段和数据段,这些都可以作修改,但是父进程的代码段和数据段是不会随着子进程数据段和代

码段的改变而改变。

6. 参照《实验指导》第五部分中“管道操作的系统调用”。复习管道通信概念,参考例程5,

编写一个程序。父进程创建两个子进程,父子进程之间利用管道进行通信。要求能显示父进程、子进程各自的信息,体现通信效果。

代码:

思考:①什么是管道?进程如何利用它进行通信的?解释一下实现方法。②修改睡眠时机、睡眠长度,看看会有什么变化。请解释。

③加锁、解锁起什么作用?不用它行吗?

答:1.管道是指能够连接一个写进程和一个读进程,并允许他们以生产者-消费者方式进行通信的一个共享文件,又称pipe文件。由写进程从管道的入端将数据写入管道,而读进程则从管道出端读出数据来进行通信。

2.修改睡眠时机和睡眠长度都会引起进程被唤醒的时间不一,因为睡眠时机决定进程在何时睡眠,睡眠长度决定进程何时被唤醒。

3.加锁、解锁是为了解决临界资源的共享问题。不用它将会引起无法有效管理数据,即数据会被修改导致读错了数据。

7. 编程验证:实现父子进程通过管道进行通信。进一步编程,验证子进程结束,由父进程执行

撤消进程的操作。测试父进程先于子进程结束时,系统如何处理“孤儿进程”的。

思考:对此作何感想,自己动手试一试?解释一下你的实现方法。

答:只要在父进程后加上wait()函数,然后打印“子进程已经结束”,一旦子进程结束,父进程撤销进程。当父进程先于子进程终止时.所有子进程的父进程改变为init进程称为进程由init进程领养。

8. 编写两个程序一个是服务者程序,一个是客户程序。执行两个进程之间通过消息机制通信。

消息标识MSGKEY 可用常量定义,以便双方都可以利用。客户将自己的进程标识(pid)通过消息机制发送给服务者进程。服务者进程收到消息后,将自己的进程号和父进程号发送给客户,然后返回。客户收到后显示服务者的pid 和ppid,结束。以下例程6 基本实现以上功能。这部分内容涉及《实验指导》第五部分中“IPC系统调用”。先熟悉一下,再调试程序。

思考:想一下服务者程序和客户程序的通信还有什么方法可以实现?解释一下你的设想,有兴趣试一试吗。

服务者程序

客户程序:

答:还可以用信号量机制来实现。信号量是一个整形计数器,用来控制多个进程对共享资源的访问。或者通过消息队列信号机制,通过向消息队列发送信息、接收信息来实现进程间的通信。

9. 这部分内容涉及《实验指导》第五部分中“有关信号处理的系统调用”。编程实现软中断信

号通信。父进程设定软中断信号处理程序,向子进程发软中断信号。子进程收到信号后执行相应处理程序。

思考:这就是软中断信号处理,有点儿明白了吧?讨论一下它与硬中断有什么区别?看来还挺管用,好好利用它。

答:硬中断是由外部硬件产生的,而软中断是CPU根据软件的某条指令或者软件对标志寄存器的某个标志位的设置而产生的。

10.怎么样,试一下吗?用信号量机制编写一个解决生产者—消费者问题的程序,这可是受益匪浅的事。本《实验指导》第五部分有关进程通信的系统调用中介绍了信号量机制的使用。

代码:

#include

#include

#include

#include

#include

#include

#define N 5 // 消费者或者生产者的数目

#define M 10 // 缓冲数目

//int M=10;

int in = 0; // 生产者放置产品的位置

int out = 0; // 消费者取产品的位置

int buff[M] = { 0 }; // 缓冲初始化为0,开始时没有产品

sem_t empty_sem; // 同步信号量,当满了时阻止生产者放产品

sem_t full_sem; // 同步信号量,当没产品时阻止消费者消费

pthread_mutex_t mutex; // 互斥信号量,一次只有一个线程访问缓冲

int product_id = 0; //生产者id

int prochase_id = 0; //消费者id

//信号处理函数

void Handlesignal(int signo){

printf("程序退出\n",signo);

exit(0);

}

/* 打印缓冲情况*/

void print() {

inti;

printf("产品队列为");

for(i = 0; i < M; i++)

printf("%d", buff[i]);

printf("\n");

}

/* 生产者方法*/

void *product() {

int id = ++product_id;

while(1) {//重复进行

//用sleep的数量可以调节生产和消费的速度,便于观察

sleep(2);

sem_wait(&empty_sem);

pthread_mutex_lock(&mutex);

in= in % M;

printf("生产者%d在产品队列中放入第%d个产品\t",id, in);

buff[in]= 1;

print();

++in;

pthread_mutex_unlock(&mutex);

sem_post(&full_sem);

}

}

/* 消费者方法*/

void *prochase() {

intid = ++prochase_id;

while(1) {//重复进行

//用sleep的数量可以调节生产和消费的速度,便于观察

sleep(5);

sem_wait(&full_sem);

pthread_mutex_lock(&mutex);

out= out % M;

printf("消费者%d从产品队列中取出第%d个产品\t",id, out);

buff[out]= 0;

print();

++out;

pthread_mutex_unlock(&mutex);

sem_post(&empty_sem);

}

}

int main() {

printf("生产者和消费者数目都为5,产品缓冲为10,生产者每2秒生产一个产品,消费

者每5秒消费一个产品,Ctrl+退出程序\n");

pthread_tid1[N];

pthread_tid2[N];

inti;

intret[N];

//结束程序

if(signal(SIGINT,Handlesignal)==SIG_ERR){//按ctrl+C产生SIGINT信号printf("信号安装出错\n");

}

// 初始化同步信号量

intini1 = sem_init(&empty_sem, 0, M);//产品队列缓冲同步

intini2 = sem_init(&full_sem, 0, 0);//线程运行同步

if(ini1 && ini2 != 0) {

printf("信号量初始化失败!\n");

exit(1);

}

//初始化互斥信号量

intini3 = pthread_mutex_init(&mutex, NULL);

if(ini3 != 0) {

printf("线程同步初始化失败!\n");

exit(1);

}

// 创建N个生产者线程

for(i = 0; i < N; i++) {

ret[i]= pthread_create(&id1[i], NULL, product, (void *) (&i));

if(ret[i] != 0) {

printf("生产者%d线程创建失败!\n", i);

exit(1);

}

}

//创建N个消费者线程

for(i = 0; i < N; i++) {

ret[i]= pthread_create(&id2[i], NULL, prochase, NULL);

if(ret[i] != 0) {

printf("消费者%d线程创建失败!\n", i);

exit(1);

}

}

//等待线程销毁

for(i = 0; i < N; i++) {

pthread_join(id1[i], NULL);

pthread_join(id2[i],NULL);

}

exit(0);

}

1.讨论Linux 系统进程运行的机制和特点,系统通过什么来管理进程?

2. C 语言中是如何使用Linux 提供的功能的?用程序及运行结果举例说明。

3. 什么是进程?如何产生的?举例说明。

4. 进程控制如何实现的?举例说明。

5. 进程通信方式各有什么特点?用程序及运行结果举例说明。

6. 管道通信如何实现?该通信方式可以用在何处?

7. 什么是软中断?软中断信号通信如何实现?

MATLAB基本操作实验报告

南昌航空大学 数学与信息科学学院 实验报告 课程名称:数学实验 实验名称: MATLAB基本操作 实验类型:验证性■综合性□ 设计性□ 实验室名称:数学实验室 班级学号: 10 学生姓名:钟 X 任课教师(教师签名): 成绩: 实验日期: 2011-10- 10

一、实验目的 1、熟悉MATLAB基本命令与操作 2、熟悉MATLAB作图的基本原理与步骤 3、学会用matlab软件做图 二、实验用仪器设备、器材或软件环境 计算机MATLAB软件 三、实验原理、方案设计、程序框图、预编程序等 问题1:在区间【0,2π】画sinx 实验程序: >> x=linspace(0,2*pi,30); >> y=sin(x); >> plot(x,y) 问题2:在【0,2π】用红线画sinx,用绿圈画cosx,实验程序:

>> x=linspace(0,2*pi,30); >> y=sin(x); >> z=cos(x); >> plot(x,y,'r',x,z,'co') >> 问题3:在【0,π】上画y=sinx的图形。 实验程序: >> ezplot('sin(x)',[0,pi]) >> 问题4:在【0,π】上画x=cos3t,y=sin3t星形图形。

实验程序: >> ezplot('cos(t).^3','sin(t).^3',[0,pi]) >> 问题5:[-2,0.5],[0,2]上画隐函数 实验程序: >> ezplot('exp(x)+sin(x*y)',[-2,0.5,0,2]) >> 问题6:在[-2,2]范围内绘制tanh的图形。实验程序: >> fplot('tanh',[-2,2])

数据库实验3答案

实验三:交互式SQL语句的使用 1、实验目的 (1)掌握数据库对象的操作过程,包括创建、修改、删除 (2)熟悉表的各种操作,包括插入、修改、删除、查询 (3)熟练掌握常用SQL语句的基本语法 2、实验平台 使用SQL Server提供的Microsoft SQL Server Management Studio工具,交互式使用SQL语句。 3 实验容及要求 选择如下一个应用背景之一: ●学生选课系统 ●习题3、4、和5中使用的数据库 ●其它你熟悉的应用 (1)建立一个数据库和相关的表、索引、视图等数据库对象,练习对表、索引和视图的各种操作。 (2)要求认真进行实验,记录各实验用例及执行结果。 (3)深入了解各个操作的功能。 实验要求包括如下方面的容: 3.1 数据定义 1.基本表的创建、修改及删除 2.索引的创建 3.视图的创建 3.2 数据操作 完成各类更新操作包括: 1.插入数据

2.修改数据 3. 删除数据 3.3 数据查询操作 完成各类查询操作 1.单表查询 2.分组统计 3. 连接查询 4. 嵌套查询 5. 集合查询 3.4 数据操作 1.创建视图 2.视图查询 参考示例: 建立一个学生选课数据库,练习对表、视图和索引等数据库对象的各种操作。 一、数据定义 创建学生选课数据库ST,包括三个基本表,其中Student表保存学生基本信息,Course表保存课程信息,SC表保存学生选课信息,其结构如下表: 表1. Student表结构 表2. Course表结构

表3. SC表结构 1.创建、修改及删除基本表 (1)创建Student表 CREATE TABLE Student (Sno CHAR(8)PRIMARY KEY, Sname CHAR(8), Ssex CHAR(2)NOT NULL, Sage INT, Sdept CHAR(20) ); (2)创建Course表 CREATE TABLE Course (Cno CHAR(4)PRIMARY KEY, Cname CHAR(40)NOT NULL, Cpno CHAR(4), Ccredit SMALLINT, ); (3)创建SC表 CREATE TABLE SC (Sno CHAR(8)FOREIGN KEY (Sno)REFERENCES Student(Sno), Cno CHAR(4), Grade SMALLINT, ); (4)创建员工表Employee

图的遍历操作实验报告

. .. . .. .. 实验三、图的遍历操作 一、目的 掌握有向图和无向图的概念;掌握邻接矩阵和邻接链表建立图的存储结构;掌握DFS及BFS对图的遍历操作;了解图结构在人工智能、工程等领域的广泛应用。 二、要求 采用邻接矩阵和邻接链表作为图的存储结构,完成有向图和无向图的DFS 和BFS操作。 三、DFS和BFS 的基本思想 深度优先搜索法DFS的基本思想:从图G中某个顶点Vo出发,首先访问Vo,然后选择一个与Vo相邻且没被访问过的顶点Vi访问,再从Vi出发选择一个与Vi相邻且没被访问过的顶点Vj访问,……依次继续。如果当前被访问过的顶点的所有邻接顶点都已被访问,则回退到已被访问的顶点序列中最后一个拥有未被访问的相邻顶点的顶点W,从W出发按同样方法向前遍历。直到图中所有的顶点都被访问。 广度优先算法BFS的基本思想:从图G中某个顶点Vo出发,首先访问Vo,然后访问与Vo相邻的所有未被访问过的顶点V1,V2,……,Vt;再依次访问与V1,V2,……,Vt相邻的起且未被访问过的的所有顶点。如此继续,直到访问完图中的所有顶点。 四、示例程序 1.邻接矩阵作为存储结构的程序示例

#include"stdio.h" #include"stdlib.h" #define MaxVertexNum 100 //定义最大顶点数 typedef struct{ char vexs[MaxVertexNum]; //顶点表 int edges[MaxVertexNum][MaxVertexNum]; //邻接矩阵,可看作边表int n,e; //图中的顶点数n和边数e }MGraph; //用邻接矩阵表示的图的类型 //=========建立邻接矩阵======= void CreatMGraph(MGraph *G) { int i,j,k; char a; printf("Input VertexNum(n) and EdgesNum(e): "); scanf("%d,%d",&G->n,&G->e); //输入顶点数和边数 scanf("%c",&a); printf("Input Vertex string:"); for(i=0;in;i++) { scanf("%c",&a); G->vexs[i]=a; //读入顶点信息,建立顶点表 }

数据库实验1-6参考答案

实验一SQL Server使用初步 一、实验目的 1、熟悉SQL Server2000的组成及基本功能。 2、掌握SQL Server2000的登录及注册。 3、掌握SQL Server2000企业管理器的使用方法。 4、熟悉查询分析器的基本使用。 二、实验预习 1、什么是数据库管理系统DBMS?你所知道的DBMS有哪些? 答:DBMS是位于用户和操作系统之间的一层数据管理软件。常见的DBMS主要有:Oracle、db2、SQL Server、MySQL、PostgreSQL、SQLite、Firebird等等。 2、SQL Server 2000(2005)的安装步骤? 答:以企业版安装为例,步骤为: 将企业版安装光盘插入光驱后,出现以下提示框。请选择“安装 SQL Server 2000 组件” 出现下面对话框后,选择 "安装数据库服务器" 。 选择 "下一步",然后选择 "本地计算机" 进行安装。 在 "安装选择" 窗口,选择 "创建新的SQL Server实例..."。对于初次安装的用户,应选用这一安装模式,不需要使用 "高级选项" 进行安装。 "高级选项" 中的内容均可在安装完成后进行调整。 在 "用户信息" 窗口,输入用户信息,并接受软件许可证协议。 在“安装定义”窗口,选择“服务器和客户端工具”选项进行安装。 在“实例名”窗口,选择“默认”的实例名称。 在“安装类型”窗口,选择“典型”安装选项,并指定“目的文件夹”。 在 "服务账号" 窗口,请选择 "对每个服务使用统一账户..." 的选项。 在 "身份验证模式" 窗口,选择 "混合模式..." 选项,并设置管理员"sa"账号的密码。 最后按“下一步”即可完成安装。 检测安装:如果安装成功,应该能成功启动SQL Server,并且能和SQL Server 客户端连接上。 可以通过服务管理器来进行启动。

实验报告1windows的基本操作范例

实验名称:Windows的基本操作 一、实验目的 1.掌握桌面主题的设置。 2.掌握快捷方式的创建。 3.掌握开始菜单的组织。 4.掌握多任务间的数据传递——剪贴板的使用。 5.掌握文件夹和文件的创建、属性查看和设置。 6.掌握文件夹和文件的复制、移动和删除与恢复。 7.熟悉文件和文件夹的搜索。 8.熟悉文件和文件夹的压缩存储和解压缩。 二、实验环境 1.中文Windows 7操作系统。 三、实验内容及步骤 通过上机完成实验4、实验5所有内容后完成该实验报告 1.按“实验4--范例内容(1)”的要求设置桌面,将修改后的界面复制过来。 注:没有桌面背景图“Autumn”的,可选择其它背景图。 步骤:在桌面空白区域右击,选择菜单中的“个性化”,在弹出的窗口中点击“桌面背景”,在背景栏内选中“某一张图片”,单击“确定”。 修改后的界面如下图所示: 2.将画图程序添加到“开始”菜单的“固定项目列表”上。 步骤:右击“开始/所有程序/附件”菜单中的画图程序项,在弹出的快捷菜单中选“附到「开始」菜单”命令。 3.在D盘上建立以“自己的学号+姓名”为名的文件夹(如01108101刘琳)和其子文件 夹sub1,然后:

步骤:选定D:\为当前文件夹,选择“文件/新建/文件夹”命令,并将名字改为“学号+姓名”;选定“ D:\学号+姓名”为当前文件夹,选择“文件/新建/文件夹”命令,并将名字改为“sub1” ①在C:\WINDOWS中任选2个TXT文本文件,将它们复制到“学号+姓名”文件夹中;步骤:选定“C:\WINDOWS”为当前文件夹,随机选取2个文件, CTRL+C复制,返回“D:\学号+姓名”的文件夹,CTRL+V粘贴 ②将“学号+姓名”文件夹中的一个文件移到其子文件夹sub1中; 步骤:选定“ D:\学号+姓名”为当前文件夹,选中其中任意一个文件将其拖拽文件到subl ③在sub1文件夹中建立名为“”的空文本文档; 步骤:选定“ D:\学号+姓名\ sub1”为当前文件夹,在空白处单击右键,选择“新建\文本文档”,把名字改为test,回车完成。 ④删除文件夹sub1,然后再将其恢复。 步骤:选定“ D:\学号+姓名”为当前文件夹,右键单击“sub1”文件夹,选择“删除”,然后打开回收站,右键单击“sub1”文件夹,在弹出的快捷菜单中选择“还原”。 4.搜索C:\WINDOWS\system文件夹及其子文件夹下所有文件名第一个字母为s、文件长 度小于10KB且扩展名为exe的文件,并将它们复制到sub1文件夹中。 步骤:选定“ C:\WINDOWS\system”为当前文件夹,单击“搜索”按钮,在左侧窗格选择“所有文件和文件夹”,在“全部或部分文件名”中输入“s*.exe”,在“大小”中,选择“0~10KB”。 5.用不同的方法,在桌面上创建名为“计算器”、“画图”和“剪贴板”的三个快捷方式, 它们应用程序分别为:、和。并将三个快捷方式复制到sub1文件夹中。 步骤:①在"开始"菜单的"所有程序"子菜单中找到"计算器",单击右键,在弹出的快捷菜单中选择“发送到\桌面快捷方式”。 ②在"开始"菜单的"所有程序"子菜单中找到"画图",将其拖至桌面空白处。 ③在桌面上单击右键,在弹出的快捷菜单中选择“新建\快捷方式”,在“创建快捷方式”

sql 数据库 实验3答案

实验三:创建及管理数据表 1、创建表 依据数据表的结构创建相对应的数据表,表结构如下所示; 学生信息表(student ) CREATE (sno char (9) PRIMARY KEY , sname char (8) NOT NULL, ssex char (2), sage int , sdept varchar (20) ) 课程信息表(course ) CREATE (cno char (4) PRIMARY KEY , cname varchar (20) NOT NULL, cpno char (4), ccredit int ) 选课信息表(sc )

CREATE TABLE sc (sno char(9), cno char(4), grade int, Constraint PK_sno PRIMARY KEY(sno,cno)) 2.修改表结构 1)在表student中增加新字段“班级名称(sclass)”字符类型为varchar(10); use student ALTER TABLE student Add sclass nvarchar(10) 2)在表student中删除字段“班级名称(sclass)”; use student ALTER TABLE student Drop column sclass 3)修改表student中字段名为“sname”的字段长度由原来的6改为8; use student ALTER TABLE student ALTER COLUMN sname char(8) 4)修改表student中ssex字段默认值为‘男’; use student ALTER TABLE student add default'男'for ssex 5)修改表course中cname字段为强制唯一性字段; use student ALTER TABLE course Add constraint ix_course unique (cname) 6)修改表sc中grade字段的值域为0-100; use student ALTER TABLE sc Add constraint CK_grade CHECK(grade between 0 and 100) 7)删除数据表course的唯一性约束; use student ALTER TABLE course drop ix_course

数据结构实验图的基本操作

浙江大学城市学院实验报告 课程名称数据结构 实验项目名称实验十三/十四图的基本操作 学生姓名专业班级学号 实验成绩指导老师(签名)日期2014/06/09 一.实验目的和要求 1、掌握图的主要存储结构。 2、学会对几种常见的图的存储结构进行基本操作。 二.实验内容 1、图的邻接矩阵定义及实现: 建立头文件test13_AdjM.h,在该文件中定义图的邻接矩阵存储结构,并编写图的初始化、建立图、输出图、输出图的每个顶点的度等基本操作实现函数。同时建立一个验证操作实现的主函数文件test13.cpp(以下图为例),编译并调试程序,直到正确运行。 2、图的邻接表的定义及实现: 建立头文件test13_AdjL.h,在该文件中定义图的邻接表存储结构,并编写图的初始化、建立图、输出图、输出图的每个顶点的度等基本操作实现函数。同时在主函数文件test13.cpp中调用这些函数进行验证(以下图为例)。

3、填写实验报告,实验报告文件取名为report13.doc。 4、上传实验报告文件report13.doc到BB。 注: 下载p256_GraphMatrix.cpp(邻接矩阵)和 p258_GraphAdjoin.cpp(邻接表)源程序,读懂程序完成空缺部分代码。 三. 函数的功能说明及算法思路 (包括每个函数的功能说明,及一些重要函数的算法实现思路) 四. 实验结果与分析 (包括运行结果截图、结果分析等)

五.心得体会

程序比较难写,但是可以通过之前的一些程序来找到一些规律 (记录实验感受、上机过程中遇到的困难及解决办法、遗留的问题、意见和建议等。) 【附录----源程序】 256: //p-255 图的存储结构以数组邻接矩阵表示, 构造图的算法。 #include #include #include #include typedef char VertexType; //顶点的名称为字符 const int MaxVertexNum=10; //图的最大顶点数 const int MaxEdgeNum=100; //边数的最大值 typedef int WeightType; //权值的类型 const WeightType MaxValue=32767; //权值的无穷大表示 typedef VertexType Vexlist[MaxVertexNum]; //顶点信息,定点名称 typedef WeightType AdjMatrix[MaxVertexNum][MaxVertexNum]; //邻接矩阵typedef enum{DG,DN,AG,AN} GraphKind; //有向图,有向网,无向图,无向网typedef struct{ Vexlist vexs; // 顶点数据元素 AdjMatrix arcs; // 二维数组作邻接矩阵 int vexnum, arcnum; // 图的当前顶点数和弧数 GraphKind kind; // 图的种类标志 } MGraph; void CreateGraph(MGraph &G, GraphKind kd)// 采用数组邻接矩阵表示法,构造图G {//构造有向网G int i,j,k,q; char v, w; G.kind=kd; //图的种类 printf("输入要构造的图的顶点数和弧数:\n"); scanf("%d,%d",&G.vexnum,&G.arcnum); getchar();//过滤回车 printf("依次输入图的顶点名称ABCD...等等:\n"); for (i=0; i

数字图像处理实验报告

目录 实验一:数字图像的基本处理操作 (4) :实验目的 (4) :实验任务和要求 (4) :实验步骤和结果 (5) :结果分析 (8) 实验二:图像的灰度变换和直方图变换 (9) :实验目的 (9) :实验任务和要求 (9) :实验步骤和结果 (9) :结果分析 (13) 实验三:图像的平滑处理 (14) :实验目的 (14) :实验任务和要求 (14) :实验步骤和结果 (14) :结果分析 (18) 实验四:图像的锐化处理 (19) :实验目的 (19) :实验任务和要求 (19) :实验步骤和结果 (19) :结果分析 (21)

实验一:数字图像的基本处理操作 :实验目的 1、熟悉并掌握MATLAB、PHOTOSHOP等工具的使用; 2、实现图像的读取、显示、代数运算和简单变换。 3、熟悉及掌握图像的傅里叶变换原理及性质,实现图像的傅里叶变换。:实验任务和要求 1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分 成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。 2.对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分 别显示,注上文字标题。 3.对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换, 显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。 4.对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里 叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的 对应关系。 :实验步骤和结果 1.对实验任务1的实现代码如下: a=imread('d:\'); i=rgb2gray(a); I=im2bw(a,; subplot(1,3,1);imshow(a);title('原图像'); subplot(1,3,2);imshow(i);title('灰度图像'); subplot(1,3,3);imshow(I);title('二值图像'); subplot(1,3,1);imshow(a);title('原图像'); 结果如图所示:

数据库SQLServer-实验3答案-教

数据库SQLServer-实验3答案-教辅-教材

实验3 SQL Server数据表管理 一、实验目的 1.学会使用SQL Server管理平台和Transact-SQL语句CREATE TABLE和ALTER TABLE创建和修改表。 2.学会在SQL Server管理平台中对表进行插入、修改和删除数据操作。 3.学会使用Transact-SQL语句对表进行插入、修改和删除数据操作。 4.了解SQL Server的常用数据类型。 二、实验内容 1.启动SQL Server管理平台,在对象资源管理器中展开“studentsdb数据库文件夹。 2.在studentsdb数据库中创建数据表《学生表》、《课程表》、《成绩表》,数据结构 如图3-1、图3-2和图3-3所示。 图3-1 学生表 图3-2 课程表

图3-3 成绩表3.在SQL Server管理平台中创建《学生表》、《课程表》。 4.在SQL Server管理平台中,将《学生表》的学号列设置为主键,非空。 5.使用Transact-SQ语句CREATE TABLE在studentsdb数据库中创建《成绩表》。 6.《学生表》、《课程表》、《成绩表》中的数据如图3-4、图3-5和图3-6所示。 7.在SQL Server管理平台中为《学生表》、《课程表》、《成绩表》添加数据。

(注意:在添加数据是必须逐行输入,否则系统将会报错,显示“出错信息为:键列信息不足或不正确。更新影响到多行”,产生原因是由于相同记录所造成)。 8.使用Transact-SQL语句INSERT NTTO …V ALUES向studentsdb数据库的《成绩表》插入以下数据: 学号课程编号成绩 0004 0001 80

数字图像处理实验报告

目录 实验一:数字图像的基本处理操作....................................................................... 错误!未定义书签。:实验目的 .............................................................................................................. 错误!未定义书签。:实验任务和要求..................................................................................................... 错误!未定义书签。:实验步骤和结果..................................................................................................... 错误!未定义书签。:结果分析................................................................................................................. 错误!未定义书签。实验二:图像的灰度变换和直方图变换............................................................... 错误!未定义书签。:实验目的 .............................................................................................................. 错误!未定义书签。:实验任务和要求..................................................................................................... 错误!未定义书签。:实验步骤和结果..................................................................................................... 错误!未定义书签。:结果分析................................................................................................................. 错误!未定义书签。实验三:图像的平滑处理....................................................................................... 错误!未定义书签。:实验目的 .............................................................................................................. 错误!未定义书签。:实验任务和要求..................................................................................................... 错误!未定义书签。:实验步骤和结果..................................................................................................... 错误!未定义书签。:结果分析................................................................................................................. 错误!未定义书签。实验四:图像的锐化处理......................................................................................... 错误!未定义书签。:实验目的 .............................................................................................................. 错误!未定义书签。:实验任务和要求..................................................................................................... 错误!未定义书签。:实验步骤和结果..................................................................................................... 错误!未定义书签。:结果分析................................................................................................................. 错误!未定义书签。

数据库实验答案

实验3 使用T-SQL语言完成单表查询 一、实验目的 掌握使用T-SQL语言完成单表查询 掌握常用谓词的用法 掌握where子句的用法 掌握order by 子句的用法 掌握group by 子句和having短语的用法 实验环境 Microsoft SQL Server 2000。 实验内容和要求 查询全体学生的详细信息。 查询所有课程的详细信息。 查询所有选课记录的详细信息,要结果表中的列名以中文的形式显示,分别为:学号,课程号,成绩。 查询已被学生选修了的课程的编号。 查询系别编号为“d002”的学生的姓名和性别。 查询年龄在19至21岁或者性别为“女”的学生的学号和所在系别编号。 查询系别编号为d001、d002和d003的学生的学号和姓名。 查询课程名为“C_”开头的课程名和学分。 某些学生入学后还没有确定所在的系,查询还没有确定系的学生的姓名。 查询成绩大于60分的学生的学号、课程号和成绩,并将查询结果按课程编号升序排列,同一课程的成绩按分数降序排列。 查询学校所开设的总的课程数。 计算2号课的学生成绩总和以及平均成绩,对应的列名分别为“总成绩”和“平均成绩”。 查询选修了3号课程的学生的最高分和最低分,对应的列名分别为“最高分”和“最低分”。 求各个系别的编号以及各系的人数。 查询选课人数大于等于2人的课程编号以及选课的人数。 查询学生2选修课程的总成绩对应的列名为“总成绩”,并显示出学号。 查询有2门以上课程是80分以上的学生的学号及课程数。 查询选修了1号课的学生的学号和成绩,结果按成绩降序、学号升序排列。 实验1 使用T-SQL语言建库、建表 实验2 向表中增、删、改数据 实验目的 掌握使用T-SQL建库、建表、修改表; 掌握使用T-SQL对表中数据进行插入、删除和修改。 实验环境 Microsoft SQL Server 2000。 实验内容和要求 建立数据库STDB 在数据库STDB中建立四个表:

mysql数据库实验答案

实验一创建、修改数据库和表结构 1、用create建立教学数据库的五个基本表: (1)学生表(学号,姓名,性别,年龄),student((Sno, sname,ssex,sage) ; (2)课程表(课程号,课程名,学分),Course (Cno, Cname, credit) ; (3)选课表(学号,课程号,成绩),SC (Sno,, Cno, grade ) ; (4) 教师表(教师号,姓名,性别,出生年月,系部,职称,地址), T(Tno,Tname,ssex,birthday,dept,title,address) ; (5) 工资表(教师号,基本工资,职务工资,合计),Salary(Tno,jbgz,zwgz,hj); Create Database Student default character set utf8 default COLLATE utf8_bin;

Use Student; Create Table Student( SNo c har(20) primary key, SName char(20) , SSex char(4) default '男', SAge int ) ENGINE=InnoDB; Create Table Course( CNo c har(20) primary key, CName char(20) NOT NULL,

CRedit f loat ) ENGINE=InnoDB; Create Table SC( SNo c har(20) NOT NULL, CNo c har(20) NOT NULL, Grade float, Primary Key(SNo, CNo), Foreign Key(SNo) References Student(SNo) On Delete Cascade, Foreign Key(CNo) References Course(CNo) )ENGINE=InnoD B;

数字图像处理实验报告

数字图像处理实验报告实验一数字图像基本操作及灰度调整 一、实验目的 1)掌握读、写图像的基本方法。 2)掌握MATLAB语言中图像数据与信息的读取方法。 3)理解图像灰度变换处理在图像增强的作用。 4)掌握绘制灰度直方图的方法,理解灰度直方图的灰度变换及均衡化的方法。 二、实验内容与要求 1.熟悉MATLAB语言中对图像数据读取,显示等基本函数 特别需要熟悉下列命令:熟悉imread()函数、imwrite()函数、size()函数、Subplot()函数、Figure()函数。 1)将MA TLAB目录下work文件夹中的forest、tif图像文件读出、用到imread,imfinfo 等文件,观察一下图像数据,了解一下数字图像在MA TLAB中的处理就就是处理一个矩阵。将这个图像显示出来(用imshow)。尝试修改map颜色矩阵的值,再将图像显示出来,观察图像颜色的变化。 2)将MA TLAB目录下work文件夹中的b747、jpg图像文件读出,用rgb2gray()将其转化为灰度图像,记为变量B。 2.图像灰度变换处理在图像增强的作用 读入不同情况的图像,请自己编程与调用Matlab函数用常用灰度变换函数对输入图像进行灰度变换,比较相应的处理效果。 3.绘制图像灰度直方图的方法,对图像进行均衡化处理 请自己编程与调用Matlab函数完成如下实验。 1)显示B的图像及灰度直方图,可以发现其灰度值集中在一段区域,用imadjust函 数将它的灰度值调整到[0,1]之间,并观察调整后的图像与原图像的差别,调整后的灰度直方图与原灰度直方图的区别。 2)对B进行直方图均衡化处理,试比较与源图的异同。 3)对B进行如图所示的分段线形变换处理,试比较与直方图均衡化处理的异同。

数据库_实验三答案

实验3 SQL语言 一、实验目的 1、掌握SQL中运算符和表达式的使用。 2、掌握实用SQL语言查询数据库。 二、实验要求 1、所有的实验过程请严格按照实验容的步骤进行。 2、对关键步骤截屏并复制到实验报告的相应位置。 三、实验设备、环境 设备:计算机 环境:WINDOWS XP、SQL SERVER 2000中文版 四、实验原理、方法 上机操作 五、实验容 准备工作:还原学生成绩管理数据库; 注意:写SQL语句时,注意学生成绩管理数据库中表名称和字段名称的对应。 1、使用SQL查询分析器,对学生成绩管理数据库完成如下查询操作: 1)简单查询 (1)求数学系学生的学号和。 (2)求选修了课程的学生学号。

(3)求选修C1课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。 (4)求选修课程0001且成绩在80~90之间的学生学号和成绩,并将成绩乘以系数0.8输出。 (5)求数学系或计算机应用系姓王的学生的信息。 (6)求缺少了成绩的学生的学号和课程号。

2)连接查询 (1)查询每个学生的情况以及他(她)所选修的课程。 (2)求学生的学号、、选修的课程名及成绩。 (3)求选修0001课程且成绩为90分以上的学生学号、及成绩。

3)嵌套查询 (1)求选修了0003的学生学号和。 (2)求0001课程的成绩高于王军的学生的学号和成绩。

(3)求其他系中比计算机系某一学生年龄小的学生。 4)使用分组和函数查询 (1)求学生的总人数。 (2)求选修了课程的学生人数。

(3)求课程和选修0001的人数。 (4)求选修课超过3门课的学生学号。

数字图像处理实验一图像的基本操作和基本统计指标计算实验报告

实验一图像的基本操作和基本统计指标计算 一、实验目的 熟悉MATLAB图像处理工具箱,在掌握MATLAB基本操作的基础上,本课程主要依靠图像处理工具箱验证和设计图像处理算法。对于初学者来说,勤学多练、熟悉MATLAB图像处理工具箱也是学号本课程的必经之路。 了解计算图像的统计指标的方法及其在图像处理中的意义。 了解图像的几何操作,如改变图像大小、剪切、旋转等。 二、实验主要仪器设备 (1)台式计算机或笔记本电脑 (2)MATLAB(安装了图像处理工具箱,即Image Processing Toolbox(IPT)) (3)典型的灰度、彩色图像文件 三、实验原理 (1)将一幅图像视为一个二维矩阵。 < (2)利用MATLAB图像处理工具箱读、写和显示图像文件。 ①调用imread函数将图像文件读入图像数组(矩阵)。例如“I=imread(‘’);”。其基本格式为:“A=imread(‘’)”,其中,A为二维矩阵,filename.为文件名,fmt为图像文件格式的扩展名。 ②调用imwrite函数将图像矩阵写入图像文件。例如“imwrite(A,’’);”。其基本格式为“imwrite(a,”。 ③调用imshow函数显示图像。例如“imshow(‘’);”。其基本格式为:I为图像矩阵,N 为显示的灰度级数,默认时为256。 (3)计算图像有关的统计参数。 四、实验内容 (1)利用MATLAB图像处理工具箱和Photoshop读、写和显示图像文件。 (2)利用MATLAB计算图像有关的统计参数。 五、实验步骤 (1)利用“读图像文件I/O”函数读入图像。 (2)利用“读图像文件I/O”的iminfo函数了解图像文件的基本信息:主要包括Filename(文件名)、FileModDate(文件修改时间)、Filesize(文件尺寸)、Format(文件格式)、FormatVersion(格式版本)、Width(图像宽度)、Height(图像高度)、BitDepth(每个像素的位深度)、ColorType(彩色类型)、CodingMethod(编码方法)等。 ' (3)利用“像素和统计处理”函数计算读入图像的二维相关系数(corr2函数)、确定像素颜色值(impixel函数)、确定像素的平均值(mean2函数)、显示像素信息(pixval函数)、计算像素的标准偏移(std2函数)等。 要求:参照例题,对图像J加均值为0、方差为的高斯白噪声形成有噪图像J1,即

数据库实验三作业及答案.docx

实验3 SQL Server 数据表的管理 一、实验目的 1.学会使用企业管理器和Transact-SQL语句CREATE TABLE和ALTER TABLE创建和修改表。 2.学会在企业管理器中对表进行插入、修改和删除数据操作。 3.学会使用Transact-SQL语句对表进行插入、修改和删除数据操作。 4.了解SQL Server的常用数据类型。 二、实验准备 1.了解在企业管理器中实现表数据的操作,如插入、修改和删除等。 2.掌握用Transact-SQL语句对表数据进行插入(INSERT)、修改(UPDATE)和删除(DELETE和TRANCATE TABLE)操作。 三、实验内容及步骤 1.启动企业管理器,展开studentsdb数据库文件夹。 2.在studentsdb数据库中包含有数据表student_info、curriculum、grade,这些表的数据结构如图1-2、图1-3和图1-4所示。 图1-2 学生基本情况表student_info 图1-3 课程信息表curriculum 图1-4 学生成绩表grade 3.在企业管理器中创建student_info、curriculum表。 4.在企业管理器中,将student_info表的学号列设置为主键,非空。 5.使用Transact-SQL语句CREATE TABLE在studentsdb数据库中创建grade表。 CREATE TABLE grade (学号varchar(4), 课程编号varchar(4), 分数decimal(5,0) ) 6.student_info、curriculum、grade表中的数据如图1-5、图1-6和图1-7所示。 图1-5 student_info的数据

链表基本操作实验报告

实验2 链表基本操作实验 一、实验目的 1. 定义单链表的结点类型。 2. 熟悉对单链表的一些基本操作和具体的函数定义。 3. 通过单链表的定义掌握线性表的链式存储结构的特点。 二、实验容与要求 该程序的功能是实现单链表的定义和主要操作。如:单链表建立、输出、插入、删除、查找等操作。该程序包括单链表结构类型以及对单链表操作的具体的函数定义和主函数。程序中的单链表(带头结点)结点为结构类型,结点值为整型。 要求: 同学们可参考指导书实验2程序、教材算法及其他资料编程实现单链表相关操作。必须包括单链表创建、输出、插入、删除操作,其他操作根据个人情况增减。 三、 算法分析与设计。 头结点

2.单链表插入 s->data=x; s->next=p->next; p->next=s; 3.单链表的删除: p->next=p->next->next;

四、运行结果 1.单链表初始化 2.创建单链表 3.求链表长度 4.检查链表是否为空 5.遍历链表 6.从链表中查找元素 7.从链表中查找与给定元素值相同的元素在顺序表中的位置

8.向链表中插入元素 插入元素之后的链表 9.从链表中删除元素 删除位置为6的元素(是3) 10.清空单链表 五、实验体会 经过这次单链表基本操作实验,自己的编程能力有了进一步的提高,认识到自己以前在思考一个问题上思路不够开阔,不能灵活的表达出自己的想法,虽然在打完源代码之后出现了一些错误,但是经过认真查找、修改,最终将错误一一修正,主要是在写算法分析的时候出现了障碍,经过从网上查找资料,自己也对程序做了仔细的分析,对单链表创建、插入、删除算法画了详细的N-S流程图。

实验一基本认识及基本操作实验报告.docx

谢谢观赏实验一V I S S I M基本认识及基本操作实验报告 一、实验目的 掌握交通仿真系统VISSIM基本功能的使用。 二、实验原理 以基本路段、出口匝道、无信号平面交叉口为例,练习基本交通仿真操作。 三、实验内容 1、基本路段仿真 2、设置行程时间检测器 3、道路的连接和路径决策 4、冲突区的设置 四、实验步骤 单击菜单栏上的View,选择Options,在Languages&Units下选择Chinese,切换成中文。 1、基本路段仿真步骤 (1)绘制路段:单击“路段&连接器”按钮,切换到路段编辑状态,将鼠标移到视图区,确定任意起点按住鼠标右键,平行向右移动鼠标,在需要的长度放开鼠标右键,路段绘制完成,在弹出的“路段属性”对话框内设置路段属性。车道数设置为“3”,单击“完成”。 (2)流量设置:单击“车辆输入”按钮,切换到路段流量编辑状态,双击路段,在“车辆输入”对话框输入流量“1500”,车辆构成选择“Default”。路段起点出现黑色线段,表示已完成流量设置。 (3)运行仿真:菜单栏单击“仿真”—>“参数”,在弹出的“仿真参数”对话框内调节仿真运行速度,为看清车辆行驶,调小速度为“6仿真秒/s”,单击确定。 2、设置行程时间检测器步骤: (1)单击行程时间,左键单击选中主路段,然后在主路段靠近起点某处右键,出现红色竖线,起点检测器设置完成, 再在靠近终点处右键出现绿色竖线同时弹出“创建行程时间检测”对话框,单击确定。 (2)评价结果输出:菜单栏单击“评价”—>“文件”在评价对话框内勾选行程时间。单击确定。 (3)运行仿真:单击上部工具栏连续仿真按钮,然后结束停止仿真。 在根目录右键打开“.rsz”文件,选择打开方式为记事本,最后一行第二个数字则为平均行程时间。 3、道路的连接和路径决策步骤 (1)添加出口匝道:按绘制路段步骤添加一段出口匝道。 (2)连接匝道:单击“路段&连接器”按钮,切换到路段编辑状态,鼠标移到主路段,左键单击显示出主路段中心线,右键单击拖动鼠标到与匝道的连接处,匝道发生 谢谢观赏

相关文档
最新文档