搜档网
当前位置:搜档网 › 程序实验2:11-多线程编程---实验报告

程序实验2:11-多线程编程---实验报告

程序实验2:11-多线程编程---实验报告
程序实验2:11-多线程编程---实验报告

程序实验二:11-多线程编程实验

专业班级实验日期 5.21 姓名学号

实验一(p284:11-thread.c)

1、软件功能描述

创建3个线程,让3个线程重用同一个执行函数,每个线程都有5次循环,可以看成5个小任务,每次循环之间会有随即等待时间(1-10s)意义在于模拟每个任务到达的时间是随机的没有任何的特定规律。

2、程序流程设计

3.部分程序代码注释(关键函数或代码)

#include

#include

#include

#define T_NUMBER 3

#define P_NUMBER 5

#define TIME 10.0

void *thrd_func(void *arg )

{

int thrd_num=(int)arg;

int delay_time =0;

int count =0;

printf("Thread %d is staraing\n",thrd_num);

for(count=0;count

{

delay_time =(int)(rand()*TIME/(RAND_MAX))+1;

sleep(delay_time);

printf("\tTH%d:job%d delay =%d\n",thrd_num,count,delay_time); }

printf("%d finished\n",thrd_num);

pthread_exit(NULL);

}

int main()

{

pthread_t thread[T_NUMBER];

int no=0,res;

void * thrd_ret;

srand(time(NULL));

for(no=0;no

{

res=pthread_create(&thread[no],NULL, thrd_func,(void*)no);

if(res!=0)

{

printf("Creay th %d faild\n",no);

exit(res);

}

}

printf("success\nwaiting\n");

for(no=0;no

{

res=pthread_join(thread[no],&thrd_ret);

if(!res)

{

printf("t %d joined\n",no);

}

else

{

printf("T %djoined faild\n",no);

}

}

return 0;

}

4.编译、运行方法及结果(抓屏)

5.结果分析

由运行结果可以看出,创建线程、释放资源按照顺序,而每个线程的运行和结束是独立与并行的。

实验二(p287: 11-thread_mutex.c)

1、软件功能描述

在试验1的基础上通过互斥锁,使原本独立,无序的多个线程能够按顺序进行2、程序流程设计

3.部分程序代码注释(关键函数或代码)

#include

#include

#include

#define THREAD_NUMBER 3 /*线程数*/

#define REPEAT_NUMBER 3 /*每个线程的小任务数*/

#define DELAY_TIME_LEVELS 10.0 /*小任务间的最大时间间隔*/ pthread_mutex_t mutex;

void *thrd_func(void *arg) //线程函数例程

{

int thrd_num = (int)arg;

int delay_time = 0, count = 0;

int res;

//互斥锁上锁

res = pthread_mutex_lock(&mutex);

if(res)

{

printf("Thread %d is starting\n", thrd_num);

pthread_exit(NULL);

}

printf("Thread %d is starting\n", thrd_num);

for(count = 0; count < REPEA T_NUMBER; count++)

{

delay_time = (int)(rand() * DELAY_TIME_LEVELS/(RAND_MAX)) + 1;

sleep(delay_time);

printf("\tThread %d: job %d delay = %d\n",thrd_num, count, delay_time);

}

printf("Thread %d finished\n", thrd_num);

pthread_exit(NULL);

}

int main(void)

{

pthread_t thread[THREAD_NUMBER];

int no = 0, res;

void * thrd_ret;

srand(time(NULL));

pthread_mutex_init(&mutex, NULL);

for(no = 0; no < THREAD_NUMBER; no++ )

{

res = pthread_create(&thread[no], NULL, thrd_func, (void*)no);

if(res != 0)

{

printf("Create thread %d failed\n", no );

exit(res);

}

}

printf("Create threads success\n Waiting for threads to finish...\n");

/*这里的问题很奇怪,按照书上程序敲打,出现的线程首先是2而非0,没有按照书上所说:与创建顺序相同,但是在这里体现了互斥性,由于后面的释放资源程序从0开始,而一开始为线程2占用资源,所以无法释放资源,导致程序卡死,最后修改为先释放线程2的资源,之后则可以依次显示*/

for(no = 2; no < THREAD_NUMBER; no--)

{

res = pthread_join(thread[no],&thrd_ret);

if(!res)

{

printf("Thread %d joined\n", no);

}

else

{

printf("Thread %d join failed\n", no);

}

pthread_mutex_unlock(&mutex);

}

pthread_mutex_destroy(&mutex);

return 0;

}

4.编译、运行方法及结果(抓屏)

5.结果分析

实验结果体现了互斥性,3个线程有序运行。

实验三(P291:11-thread_sem.c)

1、软件功能描述

该程序在实验1的基础上,用信号量同步机制实现3个线程的有序执行,利用pv操作来控制执行顺序,达到执行的顺序和创建的顺序刚好相反。

2、程序流程设计

3.部分程序代码注释(关键函数或代码)

……

#include

#include

#include

#include

#define THREAD_NUMBER 3

#define REPEAT_NUMBER 3

#define DELAY_TIME_LEVELS 10.0

sem_t sem[THREAD_NUMBER];

void *thrd_func(void *arg)

{

int thrd_num = (int)arg;

int delay_time = 0;

int count = 0;

sem_wait(&sem[thrd_num]);

printf("Thread %d is starting\n",thrd_num);

for(count = 0; count < REPEAT_NUMBER; count++)

{

delay_time = (int)(rand() * DELAY_TIME_LEVELS/(RAND_MAX))+1; sleep(delay_time);

printf("\tThread %d: job %d delay = %d\n",thrd_num, count, delay_time); }

printf("Thread %d finished\n", thrd_num);

pthread_exit(NULL);

}

int main(void)

{

pthread_t thread[THREAD_NUMBER];

int no = 0,res;

void * thrd_ret;

srand(time(NULL));

for(no = 0; no < THREAD_NUMBER; no ++)

{

sem_init(&sem[no], 0, 0);

res = pthread_create(&thread[no], NULL, thrd_func, (void*)no);

if(res != 0 )

{

printf("Create thread %d failed\n", no);

exit(res);

}

}

printf("Create threads success\n Waiting for threads to finish...\n");

sem_post(&sem[THREAD_NUMBER - 1]);

for( no = THREAD_NUMBER-1; no >= 0; no--)

{

res = pthread_join(thread[no], &thrd_ret);

if(!res)

{

printf("Thread %d joined\n", no);

else

{

printf("Thread %d join failed\n", no);

}

sem_post(&sem[(no + THREAD_NUMBER-1)%THREAD_NUMBER]); }

for(no = 0; no < THREAD_NUMBER; no++)

{

sem_destroy(&sem[no]);

}

return 0;

}

4.编译、运行方法及结果(抓屏)

5.结果分析

程序运行、结束都是按照顺序进行的,只是顺序和创建的顺序刚好相反。

实验四(p295: 11-thread_attr.c)

1、软件功能描述

创建一个线程,具有绑定和分离属性,主线程通过finish——flag 标志变量来获得线程结束的消息,不调用pthread_join函数

2、程序流程设计

3.部分程序代码注释(关键函数或代码)

#include

#include

#include

#define REPEAT_NUMBER 3

#define DELAY_TIME_LEVELS 10.0

int finish_flag = 0;

void *thrd_func(void *arg)

{

int delay_time = 0;

int count = 0;

printf("Th is starting\n");

for(count=0; count < REPEA T_NUMBER; count++)

{

delay_time = (int)(rand()*DELAY_TIME_LEVELS/(RAND_MAX) + 1); sleep(delay_time);

printf("\tTh : job %d delay = %d\n",count,delay_time);

}

printf("Th finished\n");

finish_flag = 1;

pthread_exit(NULL);

}

int main(void)

{

pthread_t thread;

pthread_attr_t attr;

int no = 0,res;

void * thrd_ret;

srand(time(NULL));

res = pthread_attr_init(&attr);

if(res != 0)

{

printf("Create attribute failed\n");

exit(res);

}

res = pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);

res += pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); if(res!=0)

{

printf("Setting attribute failed\n");

exit(res);

}

res = pthread_create(&th, &attr, thrd_func, NULL);

if(res!=0)

{

printf("Create th failed\n");

exit(res);

}

pthread_attr_destroy(&attr);

printf("Create th success\n");

while(!finish_flag)

{

printf("Waiting for th to finish...\n");

sleep(2);

}

return 0;

}

4.编译、运行方法及结果(抓屏)

5.结果分析

由结果可以看出,这个创建的线程具有绑定好而分离属性,而且主线程通过一个finish_glag标志变量赖获得线程结束的消息,但是线程在运行结束之后似乎没有收回系统资源,因为程序运行前和程序运行后使用“free”命令查看内存使用情况,发现使用的内存并不一致。

实验五(p298: 11-producer-customer.c)

1、软件功能描述

信号量的意义,在程序生产中和消费过程中是随机进行的,而且生产者的速度比消费者的速度平均快两倍。生产者一次生产一个单元产品,消费者一次消费一个单元的产品。

2、程序流程设计

3.部分程序代码注释(关键函数或代码)

#include

#include

#include

#include

#include

#include

#include

#include

#define MYFIFO "myfifo"

#define BUFFER_SIZE 3

#define UNIT_SIZE 5

#define RUN_TIME 30

#define DELAY_TIME_LEVELS 5.0

int fd;

time_t end_time;

sem_t mutex,full,avail;

void *producer(void *arg)

{

int real_write;

int delay_time=0;

while(time(NULL)

{

delay_time=(int)(rand()*DELAY_TIME_LEVELS/(RAND_MAX)/2.0)+1; sleep(delay_time);

sem_wait(&avail);

sem_wait(&mutex);

printf("\nProducer: delay = %d\n", delay_time);

if((real_write=write(fd,"hello",UNIT_SIZE))==-1)

{

if(errno==EAGAIN)

{

printf("The FIFO has not been read yet.Please try latter\n");

}

}

else

{

printf("Write %d to the FIFO\n", real_write);

}

sem_post(&full);

sem_post(&mutex);

}

pthread_exit(NULL);

}

void *customer(void *arg)

{

unsigned char read_buffer[UNIT_SIZE];

int real_read;

int delay_time;

while(time(NULL)

{

delay_time=(int)(rand()*DELAY_TIME_LEVELS/(RAND_MAX))+1; sleep(delay_time);

sem_wait(&full);

sem_wait(&mutex);

memset(read_buffer,0,UNIT_SIZE);

printf("\nCustomer: delay = %d\n",delay_time);

if((real_read = read(fd,read_buffer,UNIT_SIZE))==-1)

{

if(errno==EAGAIN)

{

printf("No data yet\n");

}

}

printf("Read %s from FIFO\n",read_buffer);

sem_post(&avail);

sem_post(&mutex);

}

pthread_exit(NULL);

}

int main()

{

pthread_t thrd_prd_id,thrd_cst_id;

pthread_t mon_th_id;

int ret;

srand(time(NULL));

end_time=time(NULL)+RUN_TIME;

if((mkfifo(MYFIFO,O_CREAT|O_EXCL)<0)&&(errno != EEXIST)) {

printf("Cannot create fifo\n");

return errno;

}

fd = open(MYFIFO,O_RDWR);

if(fd==-1)

{

printf("Open fifo error\n");

return fd;

}

ret = sem_init(&mutex,0,1);

ret += sem_init(&avail,0,BUFFER_SIZE);

ret += sem_init(&full,0,0);

if(ret !=0)

{

printf("Any semaphore initialization failed\n");

return ret;

}

ret = pthread_create(&thrd_prd_id,NULL,producer,NULL); if(ret!=0)

{

printf("Create producer thread error\n");

return ret;

}

ret = pthread_create(&thrd_cst_id,NULL,customer,NULL); if(ret != 0)

{

printf("Create customer thread error\n");

return ret;

}

pthread_join(thrd_prd_id,NULL);

pthread_join(thrd_cst_id,NULL);

close(fd);

unlink(MYFIFO);

return 0;

}

4.编译、运行方法及结果(抓屏)

5.结果分析

由实验结果可以看出生产者的速度比消费者的速度平均快2倍左右。

程序设计实验报告

学生实验报告 院系:测绘学院 专业班级:测绘13级3班 学号:2013305517 学生姓名:王泽 指导教师:郭辉老师 2016年05月20日

安徽理工大学实验报告 实验课程名称:数据结构与软件开发上机实验 开课院系及实验室:测绘学院红楼二楼机房 实验1 编程基本知识练习 实验目的: 通过该实验课内容的练习,学生应掌握VB 编程的基本语法、变量的定义、数组(动态数组)的定义、VB 语言中子过程与函数的定义以及文本文件的读写等知识。 实验内容: 1)变量的定义动态数组的定义与应用; 2)矩阵的加、减、乘运算(定义Sub()子过程或Function()来实现); 3)数据文件的建立、数据的读取与写入。 实验步骤: 1.编辑界面 1.1 打开VB 编程工具,进入编程主界面。

1.2 在窗体上新建“读入数据”和“输出数据”两个按钮。 1.3 双击“窗体”进入代码输入界面,进行代码编辑。 2.用VB 编写的源代码 2.1 矩阵基本运算源码详见附录一。 (1)两矩阵相加 (2)两矩阵相减 (3)矩阵转置 (4)两矩阵相乘 (5)矩阵求逆 2.2 文本文件(本实验中data.txt)的读取源代码 (1)建立文本文件并输入数据 在桌面上新建一“data.txt” ( 文本文件路径为C:\Users\ WH\Desktop\练习\data.txt”)。输入以下内容: 6,7,4,0.005 A,35.418 B,45.712 C,25.270

D,24.678 在桌面上新建一“result.txt” ( 文本文件路径为C:\Users\ WH\Desktop\练习\result.txt”)。(2)从文本文件中读数据 Dim linedata as string, m_GaochaN as integer,m_Pnumber as integer,m_knPnumber as integer,M as Double,k1 as integer 'linedata 为存储文本文件一行信息的字符串变量 Dim a() as String,H() as Double 'a()为存储点名,H()存储高程 Open“C:\Users\ WH\Desktop\练习\data.txt”For Input As #1 Line Input #1, linedata k = Split(linedata, ",") m_GaochaN = Val(k(0)) m_Pnumber = Val(k(1)) m_knPnumber = Val(k(2)) M = CDbl(k(3)) For k1 = 1 To m_knPnumber Line Input #1, linedata k = Split(linedata, ",") a(k1)= k(0) GetstationNumber (a) H(k1) = CDbl(k(1)) Next Close #1 (3)将读入点名存储到点名数组中,且返回该点名所对应编号 Function GetstationNumber(name As String) Dim i As Integer For i = 1 To m_Pnumber If P_Name(i) <> "" Then '将待查点名与已经存入点名数组的点比较 If P_Name(i) = name Then GetstationNumber = i Exit For End If Else '待查点是新的点名,将新点名放到P_Name 数组中 P_Name(i) = name GetstationNumber = i Exit For End If Next i End Function (4)从文本文件中写数据(将从data.txt 读入的数据,写入到result.txt 文件中) Open“C:\Users\ WH\Desktop\ 练习\result.txt” For Output As #1 outstring = outstring + str(m_GaochaN) +","

程序设计基础实验报告

《程序设计基础》 实验报告 专业班级: 姓名: 学号:

实验一 面向过程的简单程序设计 1.实验目的要求 (1) 使用C++语言编写简单的计算机程序,掌握C++程序从编辑、编译到运行的全过程, 初步了解C++程序的特点。 (2) 掌握C++语言的数据类型(包括对各种数据类型变量的定义、初始化、赋值等)、运 算符和表达式的使用。 (3) 掌握赋值语句的使用。 (4) 掌握数据的输入输出方法。 2.实验内容 (1)设计简单程序,分别计算下列表达式,式中变量由键盘输入,输出表达式的值。 <1> d c b a x -++ <2> 11 11+++x x <3> sinX+cosX+tan -1 X <4> e x+y +e x-y <5> log 10(1+21x +) <6> 22b a -+??b a - (其中??a 表示取不大于a 的最大整数)。 <1> #include using namespace std; int main() { float x,a,b,c,d,e; cin>>x>>a>>b>>c>>d; e=x+(a+b)/(c-d); cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=sqrt(1+1/(x+1/(x+1)));

cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=sin(x)+cos(x)+1/tan(x); cout< #include #include using namespace std; int main() { double x,y,z; cin>>x>>y; z=exp(x+y)+exp(x-y); cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=log(1+sqrt(1+x*x)); cout< #include #include using namespace std; int main()

C语言程序设计实验报告(实验大纲+过程)

《C程序设计》实验教学大纲 一、适用范围 大纲适用信息管理专业本科教学使用。 二、课程名称 C程序设计 三、学时数与学分 总学时:90 总学分:4 实验学时:28 实验学分:1 四、教学目的和基本要求 目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解 C 语言的特点,熟练掌握 C 语言程序设计的基本方法和编程技巧。 基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。 注:带*的实验项目为选做实验项目 六、教材、讲义及参考书 《C程序设计题解与上机指导》谭浩强主编清华大学出版社 七、实验成绩评定办法 实验成绩=平时实验表现+实验报告。实验成绩占总成绩的20%。 实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格五类。 1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。

2、实验报告:学生实验后应按时完成实验报告。 八、实验教学大纲说明 本大纲共安排28学时的实验,其中带*号实验项目为选做实验项目,实际课时为18学时。实验项目多为设计性实验项目,每个设计性实验项目中都包含数个小的设计性题目,其中带*号的题目为选做题目,有时间和有能力的同学可以选做。 九、实验项目 实验一C程序的运行环境和运行一个C程序的方法 一、实验目的 1.了解Visual C++6.0编译系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。 二、实验内容 1.用编辑程序,输入教材第一章例1.1程序,并进行编译和运行。应了解所用的系统是用什么命令进行编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式的? 2.编写一个C程序,输出以下信息: **************************** very good! **************************** 3.输入并运行教材第一章中例1.3,了解如何在运行时向程序变量输入数据。 实验二数据类型、运算符和表达式 一、实验目的 1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。 2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。 二、实验内容 1.输入并运行以下程序: main( ) { char c1,c2; c1=97;c2=98; pr intf(“%c %c\n”,c1,c2); printf(“%d %d\n”,c1,c2); } 在此基础上 ①将第三行、第四行改为: c1=321;c2=353; 再使之运行,分析其运行结果。 ②将第二行改为: int c1,c2; 再使之运行,分析其运行结果。。 2.输入并运行以下程序:

网络程序设计实验报告-Winsock编程接口实验

网络程序设计 实验报告 实验名称: Winsock编程接口实验 实验类型:____验证型实验_____ __ 指导教师:______________________ 专业班级:_____________________ 姓名:_______________________ 学号:_____________________ 电子邮件:____________ 实验地点:______ _______ 实验日期2013 年 3 月29 日 实验成绩:__________________________

一、实验目的 ●掌握Winsock的启动和初始化; ●掌握gethostname(),gethostbyname(),GetAdaptersInfo()等信息查询函数的使用。 二、实验设计 由实验内容可以知道: 1、编写程序能同时实现对多个域名的解析。比如在控制台输入:getip https://www.sodocs.net/doc/b54306150.html, https://www.sodocs.net/doc/b54306150.html,,能输出https://www.sodocs.net/doc/b54306150.html,和https://www.sodocs.net/doc/b54306150.html,对应的IP地址列表。 2、编写程序获取并输出本地主机的所有适配器的IP地址,子网掩码,默认网关,MAC 地址。 首先要了解一些基本的知识gethostname(),gethostbyname(),GetAdaptersInfo()等信息查询函数的基本知识gethostbyname()返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针。结构的声明与gethostaddr()中一致。 之后要根据内容画出函数流程图

三、实验过程(包含实验结果) 1.在实验过程中调用GetAdaptersInfo()时,出现了undeclared identifier的报错,原因是没有包含其头文件,之后进行一些修改解决了问题. 2.实验结果 3.选择查看本机信息 四、讨论与分析 1.Winsock初始化的作用是什么? 答:使用winsock初始化可加载winsock编程的动态链接库。

大学程序设计基础实验报告 (2)

**大学程序设计基础实验报告 实验名称:实验三分支结构 实验目的: 1、掌握IF-ELSE语句使用。 2、掌握ELSE-IF语句使用。 3、熟悉SWITCH语句使用。 实验内容: 在本地电脑中新建一个文件夹,用于存放C程序,文件夹的名字要求是“学号姓名-实验序号”,如E:\ 1920115555张三-03。启动C-Free,完成如下各题。 1、编程题:输入参数a,b,c,求一元二次方程ax2+bx+c=0的根(①a、b、c都为0,②a 和b为0,c不为0,③a为0,b不为0,c任意,④a不为0,且a、b、c满足b2-4ac ≥0,⑤a不为0,且a、b、c满足b2-4ac<0)。 2、编程题:输入职工的月薪salary,计算并输出应缴纳的个人所得税tax。tax=rate * (salary –850),rate的计算方式如下: 当salary <= 850,则rate = 0; 当850 < salary <= 1350,则rate = 5%; 当1350 < salary <= 2850,则rate = 10%; 当2850 < salary <= 5850,则rate = 15%; 当salary > 5850,则rate = 20%;。 3、编程题:根据输入的3个边长a、b、c,判断它们是否能构成三角形,若能构成三 角形,则进一步判断此三角形是哪种类型的三角形(等边三角形、等腰三角形、直角三角形和一般三角形。等腰直角算作等腰)。 4、编程题:输入一个形式如“操作数运算符操作数”的表达式,对2个整数进行乘、 除或求余运算。【请分别用if语句和switch语句实现此题功能】 上交作业的方法: 1.将程序代码及注释和运行程序的窗口复制到实验结果下方对应的题号上,并把这 次实验上机操作中遇到的问题及解决方法、心得等填好完成实验报告。 2.保存以上所有按要求已调试通过,并形成.c(或.cpp)和.exe文件到以自己的“学 号姓名-03”命名的文件夹中,并将以自己的“学号姓名”命名的文件夹压缩后上 交到ftp://10.172.250.252:1161中的“作业上传”文件夹下的“报告上交02”文件 夹下的子文件夹“源文件压缩上交”中,同时把以“学号姓名-03”命名的word 文档上交到“报告上交03”文件夹下的另一子文件夹“word文件上交”中。 特别提醒:每次上传的文件名一定要是“学号姓名-实验序号. doc”(如1720115555张

路由器实验报告1

路由器技术实验报告

《路由器技术》实验指导书 一.实验总学时(课外学时/课学时):22 开实验个数: 7 二.适用专业:计算机专业 三.考核方式及办法:在规定实验时间完成实验要求,依据实验过程、实验结果和实验报告综合考核。四.配套的实验教材或指导书:自编实验指导书 五. 实验项目: 实验一:Packet Tracer软件使用交换机的配置与管理 (容一):认识 Packet Tracer软件 Packet Tracher介绍 Packet Tracer 是 Cisco 公司针对CCNA认证开发的一个用来设计、配置和故障排除网络的模拟软件。Packer Tracer 模拟器软件比 Boson 功能强大,比 Dynamips 操作简单,非常适合网络设备初学者使用。学习任务: 1、安装 Packer Tracer; 2、利用一台型号为 2960 的交换机将 2pc机互连组建一个小型局域网; 3、分别设置pc机的ip 地址; 4、验证 pc 机间可以互通。 实验设备: Switch_2960 1 台;PC 2 台;直连线 配置信息: PC1 IP: 192.168.1.2 Submask: 255.255.255.0 Gateway: 192.168.1.1 PC2 IP: 192.168.1.3 Submask: 255.255.255.0 Gateway: 192.168.1.1

(容二):交换机的基本配置与管理 1.实验目标: 掌握交换机基本信息的配置管理。 2.实验背景: 某公司新进一批交换机,在投入网络以后要进行初始配置与管理,你作为网络管理员,对交换机进行基本的配置与管理。 3.技术原理: 交换机的管理方式基本分为两种:带管理和带外管理。 1.通过交换机的 Console 端口管理交换机属于带外管理;这种管理方式不占用交换机的网络端口,第一次配置交换机必须利用 Console端口进行配置。 2.通过Telnet、拨号等方式属于带管理。 交换机的命令行操作模式主要包括: ●用户模式 Switch> ●特权模式 Switch# ●全局配置模式 Switch(config)# ●端口模式 Switch(config-if)# 4.实验步骤: ●新建Packet Tracer 拓扑图 ●了解交换机命令行 ●进入特权模式(en) ●进入全局配置模式(conf t) ●进入交换机端口视图模式(int f0/1) ●返回到上级模式(exit) ●从全局以下模式返回到特权模式(end) ●帮助信息(如? 、co?、copy?) ● ●命令简写(如 conf t) ●命令自动补全(Tab) ●快捷键(ctrl+c 中断测试,ctrl+z 退回到特权视图)

C语言程序设计实验报告(数组)

C语言程序设计实验报告(数组) 1实验目的 (1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(查找、排序等)。 2实验内容 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。 要求: 1、不允许用strcat()和strlen()字符处理库函数; 2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数 strlen()计算并返回两个字符串的长度; 3、调用函数catstr()连接两个字符串(将str2连接在str1后面); 4、调用函数lenstr()计算并返回连接后字符串的长度; 5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字 符串及其长度。

3算法描述流程图

4源程序 #include #include void catStr(char str1[],char str2[]) { int i,j; for (i=0;str1[i]!='\0';i++); for(j=0;str2[j]!='\0';j++) str1[i+j]=str2[j]; str1[i+j]='\0'; } lenStr(char m[] ) {int i;

for (i=0;m[i]!='\0';i++); printf("%d",i); } void main() {char s1[50]="forever",s2[50]="more"; printf("s1=%s,s2=%s",s1,s2); printf("\ns1的长度:"); lenStr(s1); printf("\ns2的长度:"); lenStr(s2); catStr(s1,s2); printf("\n连接后的字符:"); printf("%s\n",s1); printf("连接后字符的长度:"); lenStr(s1); printf("\n"); } 5测试数据 s1=forever, s2=more 6运行结果 7出现问题及解决方法 在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。 8实验心得 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。

网络编程实验报告

实验一TCP Socket API程序设计 一、预备知识 1.网络编程基本概念 网络上的计算机间的通讯,实质上是网络中不同主机上的程序之间的通讯。在互联网中使用IP地址来标识不同的主机,在网络协议中使用端口号来标识主机上不同进程,即使用(IP地址,端口号)二元组。 套接字(Socket)用于描述IP地址和端口,是一个通信链的句柄,通信时一个网络程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过与网络接口卡相连的传输介质将这段信息发送到另一台主机的Socket中,以供其他程序使用。 图1-1 TCP通信流程 2.TCP通信流程 TCP程序是面向连接的,程序运行后,服务器一直处于监听状态,客户端与

服务器通信之前必须首先发起连接请求,由服务器接收请求并在双方之间建立连接后才可以互相通信。 二、实验目的 1.了解Winsock API编程原理; 2.掌握TCP Socket程序的编写; 3.了解C/S模式的特点; 4.学会解决实验中遇到的问题。 三、实验任务 使用Winsock API相关类实现TCP Socket通信程序,并能成功运行。 四、实验环境及工具 1. Windows2000/XP/7 2. Visual C++开发平台 3. Visual Studio2010 五、实验内容和步骤 参照《Visual C++网络编程教程》书中81页,TCP Socket API程序设计。 连接: void CChatClientDlg::OnConnect() { WSADATA wsd; //WSADATA结构 WSAStartup(MAKEWORD(2,2),&wsd); //加载协议,使用Winsock 2.2版 m_client = socket(AF_INET,SOCK_STREAM,0); //创建流式套接字 //服务器地址 sockaddr_in serveraddr; UpdateData(); if(ServerIP.IsBlank()) { AfxMessageBox("请指定服务器IP!"); return; } if(sPort.IsEmpty()) { AfxMessageBox("请指定端口!"); return; }

路由器实验报告1

路由器技术实验报告 ------------安徽工业大学计算机与科学技术学院

《路由器技术》实验指导书 一.实验总学时(课外学时/课内学时):22 开实验个数: 7 二.适用专业:计算机专业 三.考核方式及办法:在规定实验时间内完成实验要求,依据实验过程、实验结果和实验报告综合考核。四.配套的实验教材或指导书:自编实验指导书 五. 实验项目: 实验一:Packet Tracer软件使用交换机的配置与管理 (内容一):认识 Packet Tracer软件 Packet Tracher介绍 Packet Tracer 是 Cisco 公司针对CCNA认证开发的一个用来设计、配置和故障排除网络的模拟软件。Packer Tracer 模拟器软件比 Boson 功能强大,比 Dynamips 操作简单,非常适合网络设备初学者使用。学习任务: 1、安装 Packer Tracer; 2、利用一台型号为 2960 的交换机将 2pc机互连组建一个小型局域网; 3、分别设置pc机的ip 地址; 4、验证 pc 机间可以互通。 实验设备: Switch_2960 1 台;PC 2 台;直连线 配置信息: PC1 IP: Submask: Gateway: PC2 IP: Submask::

(内容二):交换机的基本配置与管理 1.实验目标: 掌握交换机基本信息的配置管理。 2.实验背景: 某公司新进一批交换机,在投入网络以后要进行初始配置与管理,你作为网络管理员,对交换机进行基本的配置与管理。 3.技术原理: 交换机的管理方式基本分为两种:带内管理和带外管理。 1.通过交换机的 Console 端口管理交换机属于带外管理;这种管理方式不占用交换机的网络端口,第一次配置交换机必须利用 Console端口进行配置。 2.通过Telnet、拨号等方式属于带内管理。 交换机的命令行操作模式主要包括: 用户模式 Switch> 特权模式 Switch# 全局配置模式 Switch(config)# 端口模式 Switch(config-if)# 4.实验步骤: 新建Packet Tracer 拓扑图 了解交换机命令行 进入特权模式(en) 进入全局配置模式(conf t) 进入交换机端口视图模式(int f0/1) 返回到上级模式(exit) 从全局以下模式返回到特权模式(end) 帮助信息(如、co、copy)

C语言程序设计基础实验报告6【VIP专享】

实验6 数组 一、实验目的 1、掌握一维数组和二维数组的定义、赋值和输入输出的方法; 2、掌握字符数组和字符串函数的使用; 3、掌握与数组有关的算法(特别是排序算法)。 二、实验内容和步骤 编程序并上机调试运行。 1、以下给定程序MODI1.C的功能是: 求一维数组a中所有元素的平均值, 结果保留两位小数。例如,当一维数组a中的元素为:10, 4, 2, 7, 3, 12, 5, 34, 5, 9时,程序的输出应为:The aver is: 9.10 程序中有两处错误,错误都在提示行:/***********found***********/的下面一行。请改正程序中的错误, 使它能得出正确的结果。 注意:程序中的其它地方请不要随意改动,不得增行或删行,也不得更改程序的结构! #include #include void main() { int a[10]={10,4,2,7,3,12,5,34,5,9}, i; /************found************/ /************found************/ s = a[0]; for ( i=1; i<10; i++) s += a[i]; aver = s / i; printf("The aver is: %.2f\n", aver); } 2、以下给定程序MODI1.C的功能是:求二维数组a中的最小值。 例如,当二维数组a中的元素为: 4 2 34 7 3 12 5 6 5 程序的输出应为:The min is: 2 。 程序中有两处错误,错误都在提示行:/***********found***********/的下面一行。请改正程序中的错误, 使它能得出正确的结果。 注意:程序中的其它地方请不要随意改动,不得增行或删行,也不得更改程序的结构! #include #include void main() { int a[3][3]={4,2,34,7,3,12,5,6,5}, i, j, min; clrscr();

路由器实验报告

路由器实验报告

————————————————————————————————作者: ————————————————————————————————日期: ?

路由器技术实验报告 ------------安徽工业大学计算机与科学技术学院

《路由器技术》实验指导书 一.实验总学时(课外学时/课内学时):22 开实验个数:7 二.适用专业:计算机专业 三.考核方式及办法:在规定实验时间内完成实验要求,依据实验过程、实验结果和实验报告综合考核。 四.配套的实验教材或指导书:自编实验指导书 五. 实验项目: 实验一:PacketTracer软件使用交换机的配置与管理 (内容一):认识PacketTracer软件 Packet Tracher介绍 Packet Tracer是Cisco公司针对CCNA认证开发的一个用来设计、配置和故障排除网络的模拟软件。 Packer Tracer 模拟器软件比Boson 功能强大,比Dynamips 操作简单,非常适合网络设备初学者使用。 学习任务: 1、安装Packer Tracer; 2、利用一台型号为2960 的交换机将2pc机互连组建一个小型局域网; 3、分别设置pc机的ip 地址; 4、验证pc 机间可以互通。 实验设备: Switch_2960 1台;PC2 台;直连线 配置信息: PC1 IP:192.168.1.2 Submask:255.255.255.0 Gateway:192.168.1.1 PC2 IP:192.168.1.3 Submask:255.255.255.0 Gateway: 192.168.1.1

C+程序设计实验报告-2013

C++程序设计 实验报告 专业计算机科学与技术班级 ____________ 学号 ____________ 姓名 ____________ 指导教师 __许加兵_ 信息与电子工程学院2013年9月-12月

C++程序设计实验报告 专业__________班级__________学号__________姓名__________ 成绩____________ 指导教师____________ 日期____________ 实验1 C++集成开发环境与C++函数程序设计 一、实验目的 1、了解和使用Visual Studio 2010的C++集成开发环境; 2、熟悉Visual Studio 2010环境的基本命令、功能键和常用的菜单命令; 3、学会完整的C++程序开发过程; 4、学习并掌握C++函数程序设计; 二、实验内容 1、安装、了解和使用Visual Studio 2010的C++集成开发环境; 2、通过以下的C++函数程序设计,熟悉Visual Studio 2010环境的基本命令、功能键和常用的菜单命令; 3、通过以下的C++函数程序设计,学会完整的C++程序开发过程; 4、完成以下的C++函数程序设计和调试: 1)编写一个函数print(),将一个整型向量输出到cout。此函数接受两个参数:一个字符串(用于“标记”输出)和一个向量。 2) 编写一个函数,接受一个vector 参数,返回一个vector ,其每个元素值是对应字符串的长度。此函数还找出最长和最短的字符串,以及字典序第一个和最后一个字符串。 三、简要说明C++开发环境安装和配置的过程

路由器基本配置_实验报告

路由器基本配置_实验报告 《组网技术》实验报告 姓名学号教学班计算机网络 任课教师王丽娟指导教师王丽娟班主任 2013-6-3 实验地点广西某家具公司机房实验时间 实验项目名称:路由器基本配置 实验目标及要求: 通过CISCO路由器,了解路由器的各个接口的用途、配接方法,路由器配置命令、状态模式的功能,在此基础上通过超级终端完成对路由器的各种基本配置,如:路由器的命名、特权密码的设置、LAN接口的配置、WAN接口的配置、静态路由的配置等等。并用命令保存和查验配置信息。 实验环境及工具: CISCO路由器,PC机,网线,专用电缆(RS232,V35),CONSOLE。 实验内容及过程: 实验内容: 观察CISCO路由器,了解路由器基本知识; 学习电缆连接; 查看CISCO路由器的操作,了解路由器工作原理; 学习基本的路由器配置。 实验步骤: 配置相应的IP参数 打开计算机的“超级终端”程序 此超级终端内输入的命令都是对路由器A的操作,超级终端窗口内所有输出都是路由器A的 输出。 键入“,”列入命令提示。 7-A>? Exec commands: <1-99> Session number to resume access-enable Create a temporary Access-List entry access-profile Apply user-profile to interface clear Reset functions connect Open a terminal connection disable Turn off privileged commands disconnect Disconnect an existing network connection

算法程序设计实验报告

程序设计》课程设计 姓名:王 学号:20100034 班级:软件工程00 班 指导教师:王会青 成绩: 2010年 6 月 实验一.构造可以使n 个城市连接的最小生成树 专业:__软件工程___ 班级:__软件姓名:_王___ 学号:_20100034 完成日期:_2010/6/26 ________ 一、【问题描述】给定一个地区的n 个城市间的距离网,用Prim 算法或Kruskal 算法建立最小生成树,并计算得到的最小生成树的代价。 1 城市间的道路网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存在道

路,则将相应边的权值设为自己定义的无穷大值。 2 显示出城市间道路网的邻接矩阵。 3 最小生成树中包括的边及其权值,并显示得到的最小生成树的总代价。 4 输入城市数、道路数→输入城市名→输入道路信息→执行Kruskal 算法→执行Prim 算法→输出最小生成树 二、【问题分析】 1. 抽象数据类型结构体数组的定义: #ifnd ef ADJACENCYMATRIXED// 防止该头文件被重复引用 #define ADJACENCYMATRIXED // 而引起的数据重复定义 #define INFINITY 32767 // 最大值∞ #define MAX_VERTEX_NUM 20 // 最大顶点个数 typedef int VRType; // 权值,即边的值 typedef char InfoType; // 附加信息的类型,后面使用时会定义成一个指针 typedef char VertexType[MAX_VERTEX_NUM]; // 顶点类型 typedef enum {DG=1, DN, UDG, UDN} GraphKind; //{ 有向图,有向网,无向图,无向网} typedef struct ArcCell { VRType adj; //VRType 是顶点关系类型。对无权图,用1 或0 表示相邻否;对带权图,则为权值类型。 InfoType*info; // 该弧关系信息的指针

C++程序设计实验报告5

《程序设计基础》 实验报告 学号:2016211990 姓名:王贯东 班级:16-计算机科学与技术-1班

学院:计算机与信息学院 实验五指针 1.实验目的要求 (1)掌握指针的概念,学会定义和使用指针变量。 (2)学会使用数组指针和指向数组的指针变量。 (3)学会使用字符串指针和指向字符串的指针变量。 (4)了解指向指针的指针的概念以及其使用方法。 (5)掌握指针、引用、数组做函数参数的传递机制。 (6)*学会使用指向函数的指针变量。 2.实验设备 Visual C++ 6.0 3.实验内容 (1)阅读下面程序,写出其运行结果。

<1> #include sub ( int x , int y , int *z ) { *z = y – x ; } void main( ) { int a,b,c; sub( 10 , 5 , &a ) ; sub( 7, a, &b ) ; sub( a, b, &c ) ; cout << a <<‘,’<< b <<‘,’<< c << endl ; } 解:输出-5,-12,-7 <2> #include #include void main()

{ int stre ( char[ ] ) ; char str [ 10 ] , *p = str ; gets ( p ) ; cout << stre ( p ) << endl ; } int stre ( char str[ ] ) { int num = 0 ; while( * ( str + num ) != ’\0’ ) num ++ ; return ( num ) ; } 解:题目库函数少了 。该正后,输入1234,输出4 (2)编写程序实现下列问题的求解。 (1)输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字符串,按由小到大的顺序输出。 #include using namespace std; int turn (int *p1,int *p2)

路由器及其配置实验报告

《路由器及其配置》实验结果文件 附:实验配置命令清单及显示结果 1.交换机(路由器)A 夏战辉: ra(config)#hostname RA RA(config)#int s1/2 RA(config-if)#ip add 172.16.10.1 255.255.255.0 RA(config-if)#clock rate 64000 RA(config-if)#clock rate setting is only valid for DCE ports. no shutdown RA(config-if)#no shutdown RA(config-if)#exit RA(config)#int f1/0 RA(config-if)#ip add 192.168.10.1 255.255.255.0 RA(config-if)#end RA# Configured from console by console RA#show int s 1/2 serial 1/2 is UP , line protocol is UP Hardware is PQ2 SCC HDLC CONTROLLER serial Interface address is: 172.16.10.1/24 MTU 1500 bytes, BW 2000 Kbit Encapsulation protocol is HDLC, loopback not set Keepalive interval is 10 sec , set Carrier delay is 2 sec

RXload is 1 ,Txload is 1 Queueing strategy: WFQ 5 minutes input rate 17 bits/sec, 0 packets/sec 5 minutes output rate 17 bits/sec, 0 packets/sec 450 packets input, 9900 bytes, 0 no buffer Received 450 broadcasts, 0 runts, 0 giants 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 abort 450 packets output, 9900 bytes, 0 underruns 0 output errors, 0 collisions, 4 interface resets 1 carrier transitions V35 DTE cable DCD=up DSR=up DTR=up RTS=up CTS=up RA#show runn Building configuration... Current configuration : 619 bytes ! version 8.4 (building 15) hostname RA ! ! ! ! ! ! ! ! ! no service password-encryption ! ! ! ! ! ! interface serial 1/2 ip address 172.16.10.1 255.255.255.0 ! --More- Show running-config

C#程序设计实验报告

学生实验报告 (理工类) 课程名称: C#程序设计专业班级:M11计算机科学与技术(专转本)学生学号: XXXXXXXX 学生姓名: XXX 所属院部:信息技术学院指导教师: XXX 2012 — 2013学年第 1 学期 金陵科技学院教务处制

实验报告书写要求 实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,标题采用四号黑体,正文采用小四号宋体,单倍行距。纸张一律采用A4的纸张。 实验报告书写说明 实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。教师可根据学科特点和实验具体要求增加项目。 填写注意事项 (1)细致观察,及时、准确、如实记录。 (2)准确说明,层次清晰。 (3)尽量采用专用术语来说明事物。 (4)外文、符号、公式要准确,应使用统一规定的名词和符号。 (5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。 实验报告批改说明 实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。 实验报告装订要求 实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。

实验项目名称:C#基础编程实验学时: 6 同组学生姓名:实验地点: A205 实验日期: 9月17日-9月24日实验成绩: 批改教师:批改时间:

实验1 C#基础编程 一、实验目的 1、熟悉Visual Studio .NET开发环境; 2、掌握C#应用程序的基本操作过程; 3、掌握C#的数据类型,运算符以及表达式的使用; 4、掌握分支和循环语句的使用方法; 5、掌握一维数组,二维数组及数组型数组的使用。 二、实验要求 (1)编写程序要规范、正确,上机调试过程和结果要有记录; (2)做完实验后给出本实验的实验报告。 三、实验设备、环境 安装有Visual Studio .NET软件。 四、实验步骤 1、分析题意; 2、根据题目要求,新建项目; 3、编写并输入相关的程序代码; 5、运行与调试项目; 6、保存项目。 五、实验内容 1、编写一个简单的控制台应用程序,打印一行文字(如你的姓名)。using System; using System.Collections.Generic; using System.Text; namespace Test1_1 { class Program { static void Main(string[] args) { Console.WriteLine("1121412016 张明星!"); Console.ReadLine(); } } } 2、编写一个简单的Windows应用程序,在标签中显示你的姓名。 Form窗体的代码: using System; using System.Collections.Generic;

相关主题