操作系统课程设计.doc

上传人:风**** 文档编号:969909 上传时间:2024-03-19 格式:DOC 页数:27 大小:271KB
下载 相关 举报
操作系统课程设计.doc_第1页
第1页 / 共27页
操作系统课程设计.doc_第2页
第2页 / 共27页
操作系统课程设计.doc_第3页
第3页 / 共27页
操作系统课程设计.doc_第4页
第4页 / 共27页
操作系统课程设计.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、 课 程 设 计(论文)课程名称 计算机操作系统 题目名称 调度算法 学部(系) 专业班级 学号 学生姓名 指导教师 2013 年 12 月 31 日word文档 可自由复制编辑课程设计(论文)任务书题目名称调度算法学生学部(系) 专业班级 姓 名 学 号 一、课程设计(论文)的内容用户使用操作系统的主要目的是作业处理。一个作业进入系统到运行结束,一般需经历收容、运行、完成三个阶段,与这三个阶段对应的作业处于后备、运行和完成三种状态。作业调度的主要功能是按照某种原则从后备作业队列中选取作业进入主存,并为作业做好运行前的准备工作和作业完成后的善后处理工作。常用的作业调度算法有:先来先服务、短作业

2、优先、响应比高者优先、优先数优先等调度算法。衡量作业调度算法性能的主要指标有:作业的周转时间、作业的平均周转时间和平均带权周转时间。二、课程设计(论文)的要求与数据(1)需求分析(2)系统设计(3)模块代码能正常运行(4)提供合理的测试数据(5)设计说明文档三、课程设计(论文)应完成的工作(1)采用模块化的程序设计方法,程序书写符合规范,代码应完善。 (2)要有运行结果和过程的界面截图。 (3)对系统进行初步的错误和漏洞检测; (4)根据论文规范撰写论文,用A4纸打印并按时提交。四、课程设计(论文)进程安排序号设计(论文)各阶段内容地点起止日期1搜集资料图书馆13.12.18-12.212需求

3、分析图书馆12.223系统分析与设计图书馆12.234功能模块的实现图书馆12.24-12.265系统测试,运行图书馆12.276完成课程设计(论文)图书馆12.28-12.31五、应收集的资料及主要参考文献1郁红英,李春强.计算机操作系统 北京:清华大学出版社,20082凤羽.操作系统.北京:电子工业出版社,2004 3孟静.操作系统原理教程.北京:清华大学出版社,20004周苏、金海溶.操作系统原理实验.北京: 科学出版社,20005孟庆昌操作系统教程 北京:电子工业出版社,20046陈向群,杨芙清操作系统教程2版 北京:北京大学出版社,20067黄干平,陈洛资,等计算机操作系统北京:科技

4、出版社,19898冯耀林,杜舜国操作系统西安:西安电子科技大学出版社,19899黄祥喜计算机操作系统实验教程广州:中山大学出版社,1994发出任务书日期: 2013 年 12 月 1 日 指导教师签名:计划完成日期: 2013 年 12 月 31 日 摘要随着社会科学技术的迅猛发展,计算机以它卓越的进步已经遍布各行各业,其实计算机本身就是一堆废铁,而操作系统使它有了生命和灵魂,操作系统就相当于人的各个组织,如果没有操作系统那计算机就像一个植物人一样,毫无价值。操作系统是配置在计算机上的第一层软件,是对硬件系统的首次扩充。它在计算机系统中占据了特别重要的地位,很多系统软件以及大量的应用软件都依赖

5、于操作系统的支持,取得它的服务。在计算机系统上所配置的操作系统的主要目标与计算机系统的规模和操作系统的应用环境有关,而操作系统在计算机系统中所起的作用也可以从不同的角度来观察。操作系统已成为从大型机直至微型机都配置的软件,在不同的操作系统中采用的调度方式是不同的,它不仅是计算机与用户之间的接口,也是计算机资源的管理者。当今的的计算机已经从无操作系统到单道批处理系统再发展到多道程序系统然后是分时系统和实时系统。在多道程序系统中,一个作业被提交后必须经过处理机调度后,方能获得处理机执行。作业是一个比程序更为广泛的概念,它不仅包含了通常的程序和数据,而且还应配有一分作业说明书,系统根据该说明书来对程

6、序的运行进行控制。在批处理系统中,是以作业为基本单位从外存调入内存的。对于批量型作业而言,通常要经历作业调度和进程调度两个过程方能获得处理机。为了管理和调度作业,在多道批处理系统中为每个作业设置了一个作业控制块,即PCB(Job Control Block)每当作业进入系统是,系统便为每个作业创建一个PCB,根据作业类型将它插入相应的后备队列中,作业调度程序根据一定的算法来调度它们,被调度到的作业将会装入内存。作业调度的主要功能是根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程,分配必要的资源,然后,再将新

7、创建的进程排在就绪队列上,准备准备执行。每次执行作业调度时,都需要做以下两个决定:1.接纳多少个作业,取决于多道程序度即允许多少个作业同时在内存中运行,多道程序度的确定是根据系统的规模和运行速度等情况做适当的折中。2.接纳哪些作业,取决于采用的调度算法。作业调度的算法主要包括三种:先来先服务算法、短作业优先调度算法和高响应比优先调度算法。本系统采用结构体定义作业的数据类型,用数组接纳各个作业,通过把创建的JCB结构体组织成链,用不同算法循环测试处理的每个作业,来确定各个作业接受系统服务的次序,从而输出每个算法对作业处理结果,即平均周转时间。从而确定哪种算法对于本次的作业调度是最佳的算法。关键词

8、 操作系统,作业调度,调度算法,优先权,响应比,平均周转时间,最佳算法目录 1 序言12 设计原理12.1先来先服务调度算法22.2短作业优先调度算法22.3高响应比优先调度算法23 程序分析33.1系统操作33.2程序功能结构图33.3程序功能流程图43.3.1 创建作业流程图43.3.2 先来先服务调度算法流程图43.3.3 短作业优先调度算法流程图43.3.4 响应比优先调度算法流程图53.3.5总结最优调度算法流程图64 程序的实现64.1主函数程序实现64.1.1主程序实现功能64.1.2 主程序实现代码74.2 创建作业函数的实现84.2.1 函数说明84.2.2 创建函数实现代码

9、84.3 先来先服务函数94.3.1函数说明94.3.2先来先服务代码94.4短作业优先函数104.4.1函数说明114.4.2短作业优先代码114.5 响应比高者优先函数134.5.1函数说明134.5.2响应比高者优先代码134.6总结函数154.6.1 函数说明154.6.2 总结函数实现代码155 系统运行结果165.1主函数运行界面165.2创建函数运行界面165.3先来先服务调度算法运行界面175.4短作业优先函数运行界面185.5响应比高者优函数运行结果185.6总结函数运行界面19总结20参考文献211 序言本次课程设计的题目为作业调度,其调度算法分别为先来先服务调度算法、短作

10、业优先调度算法、高响应比优先调度算法。作业调度的主要功能是根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。然后再将新创建的进程插入就绪队列,准备执行。每个系统在选择作业调度算法时,既应考虑用户的要求,又能确保系统具有较高的效率。在每次执行作业调度时,都须做出两个决定,一是决定接纳多少个作业;二是决定接纳哪些作业。在OS中调度的实质是一种资源分配,因而调度算法是指:根据系统的资源分配策略所规定的资源分配算法。对于不同的系统和系统目标,通常采用不同的调度算法。先来先服务调度算法是一种最简单的调

11、度算法,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。短作业优先调度算法是指对短作业优先调度的算法。短作业优先的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。高响应比优先调度算法,是指将就绪队列中排序的优先权最高的作业调入内存执行。在高响应比调度算法中,优先权的计算公式为:优先权=(等待时间+要求服务时间)/要求服务时间,该算法既照顾了短作业,又考虑了作业到达的先后次序,不会使长作业长期得不到服务。因此,该算法实现了一种较好的折衷。当然,在利用该算法时,每要进行调度之前,都须先做响

12、应比的计算,这会增加系统开销。在执行高响应比优先调度算法时,每有一个作业调入内存运行后就需根据最后一次调入内存的业状态计算就绪队列中的其它作业的优先权。在编写程序时,调度算法前建立系统源文件扩展名为.txt,利用创建(输入)函数creat()向源文件中输入作业流,把作业的基本信息输入到文件中,如:作业的名称、作业的提交时间、作业的运行时间。作业初始排序为到达时间先后(即先来先服务调度排序作业流)。采用高响应比优先调度算法时,从就绪队列中选出优先权最高的作业调入内存执行,系统自动将处理机分配给它,使它立即执行并一直执行到完成。该程序代码中执行的操作步骤主要为以二进制模式打开源文件,利用高响应比优

13、先调度算法在就绪队列中选出当前优先权最高的作业调度运行,通过程序中的计算方法求出并输出该作业的开始时间、完成时间、周转时间。2 设计原理用户使用操作系统的主要目的是作业处理。一个作业进入系统到运行结束,一般需经历收容、运行、完成三个阶段,与这三个阶段对应的作业处于后备、运行和完成三种状态。作业调度的主要功能是按照某种原则从后备作业队列中选取作业进入主存,并为作业做好运行前的准备工作和作业完成后的善后处理工作。常用的作业调度算法有:先来先服务、短作业优先、响应比高者优先、优先数优先等调度算法。衡量作业调度算法性能的主要指标有:作业的周转时间、作业的平均周转时间和平均带权周转时间。2.1先来先服务

14、调度算法先来先服务(FCFS)调度算法是一种最简单的调度算法。当在作业调度中采取该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪对列。当程序运行选择些算法时,我们可以输入要打开的文件名,从打开的文件中按照作业依次写入文件的顺序把已写入文件的作业流信息调入到内存中,采用FCFS算法分别求出其每个作业的开始时间、完成时间、周转时间。FCFS算法比较有利于长作业,而不利于短作业。最后求出平均周转时间。最简单的调度原则是先进先出就绪队列完成。根据作业到达就绪队列的时间来分配中央处理机,一旦一个作业获得了中央处理机,就一直运

15、行到结束,先来先服务是非剥夺调度。这种调度从形式上讲是公平的,但它使短作业要等待长作业的完成,重要的作业要等待不重要作业的完成。从这个意义上讲又是不公平的。先进先出调度使响应时间的变化较小,因此它比其它大多数调度都可预测。由于这种调度方法不能保证良好的响应时间,在处理交互式用户时很少用这种方法。在当今系统中,先进先出很少作为调度模式,而是常常嵌套在其它的调度模式中。2.2短作业优先调度算法短作业优先调度算法SJF,是指对短作业或短进程优先调度的算法。短作业(SJF)的调度算法可以照顾到实际上在所有作业中占很大比例的短作业,使它们能比长作业优先执行。当程序运行选择些算法时,我们可以输入要打开的文

16、件名,从打开的文件中按照作业依次写入文件的顺序把已写入文件的作业流信息调入到内存中,然后按照作业的运行时间将其从小到大依次利用链表链接起来,按照链表链接的顺序依次运行短作业,并求出其每个作业的开始时间、完成时间、周转时间。最后求出平均周转时间。2.3高响应比优先调度算法高响应比优先调度算法XYB,是通过计算出作业的优先权,比较哪个作业的优先权最大就采用本调度算法运行哪个作业,优先权的计算工公式为:优先权=(等待时间+要求服务时间)/要求服务时间。当程序运行选择些算法时,我们可以输入要打开的文件名,从打开的文件中按照作业依次写入文件的顺序把已写入文件的作业流信息调入到内存中,然后利用循环依次求出

17、每个作业的优先权,依次把优先权最大的作业采用链表链接起来,按照链表链接的顺序依次运行高响应比作业,并求出其每个作业的开始时间、完成时间、周转时间。最后求出平均周转时间。由于等待时间与服务时间之和就是系统对该作业的响应时间,故该优先权又相当于响应比Rp。据此,又可表示为: Rp=(等待时间+要求服务时间)/要求服务时间=响应时间/要求服务时间。通过优先权计算公式可以看出:如果作业等待时间相同,则要求运行的时间愈短,因而算法有利于短作业;当要求运行的时间相同时,作业的优先权决定于其等待时间,因而是实现了先来先服务;对于长作业,当其等待时间足够长时,其优先权便可升到很高,从而也右获得处理机。所以,该

18、算法既照顾了短作业,又考虑了作业到达的先后次序,也不会使长作业长期得不到服务。因此,该算法弥补了前两种算法的不足之处,但在利用该算法进行调度作业时,第个作业的响应比的计算也是很复杂的。响应比R定义如下: R =(W+T)/T = 1+W/T。其中T为该作业估计需要的执行时间,W为作业在后备状态队列中的等待时间。每当要进行作业调度时,系统计算每个作业的响应比,选择其中R最大者投入执行。这样,即使是长作业,随着它等待时间的增加,W / T也就随着增加,也就有机会获得调度执行。这种算法是介于FCFS和SJF之间的一种折中算法。由于长作业也有机会投入运行,在同一时间内处理的作业数显然要少于SJF法,从

19、而采用HRN方式时其吞吐量将小于采用SJF 法时的吞吐量。另外,由于每次调度前要计算响应比,系统开销也要相应增加。3 程序分析当程序运行时输出主界面,在主界面中提供了调用FCFS先来先服务优先调度算法、SJF短作业优先调度算法、XYB高响应比优先调度算法、创建文件(输入数据并写入文件中)、判断最佳算法、退出此程序。3.1系统操作第一种操作:先来先服务调度算法,程序运行时输入要进行调度的作业文件名,之后用先来先服务调度算法调度作业。第二种操作:短作业优先调度算法,程序运行时输入要进行调度的作业文件名,之后用短作业优先调度算法调度作业。第三种操作:高响应比优先调度算法,程序运行时输入要进行调度的作

20、业文件名,之后用高响应比优先调度算法调度作业。第四种操作:创建文件,可输入一批作业的数据,并且把数据保存在文本文件以免数据丢失。以后每次调度算法时,可直接运用此文件中的数据信息。第五种操作:判断最佳算法,调度完三种调度算法后,求出最佳算法。第六种操作:正常退出此程序。3.2程序功能结构图本系统主要实现作业调度的功能,所以应该包括添加作业信息功能,先来先服务调度算法功能,短作业优先调度算法功能,响应比优先调度算法功能,总结最优调度算法功能。功能结构图如图3.1所示。作业管理系统添加作业信息先来先服务调度算法短作业优先调度算法响应比优先调度算法总结最优调度算法图3.1 功能结构图3.3程序功能流程

21、图3.3.1 创建作业流程图在创建作业功能中,首先创建一个新的文件,然后开始创建作业,将作业信息存入文件,其流程图如图3.2所示。开始输入文件名文件存在?输入作业信息创建文件NY结束 图3.2 创建作业流程图 3.3.2 先来先服务调度算法流程图开始从文件中读取作业信息依次处理每个作业结束输入平均周转时间先来先服务就是根据提交时间来将作业排序,并依次处理先来先服务流程图如图3.3所示。图3.3先来先服务调度算法流程图3.3.3 短作业优先调度算法流程图短作业优先算法是将第一个提交的作业先进行处理,并将后来的作业对其处理时间由短到长重新排序,最后算出处理所有作业的周转时间。其流程图如图3.4所示

22、。从文件中读取作业信息处理第一个作业将其他作业按照运行时间排序依次处理每个作业求出平均周转时间结束开始输出平均周转时间图3.4 先来先服务调度算法流程图3.3.4 响应比优先调度算法流程图响应比优先调度算法先将第一个进入序列的作业进行处理,然后计算后来进入序列的作业的响应比,按照响应比由高到低的顺序进行排序,并依次处理,最后计算出所有作业的周转时间。其流程图如图3.5所示。开始从文件中读取作业信息求出每个作业的响应比将作业按照响应比从高到低排序处理第一个进入序列的作业依次处理序列中的每个作业计算出处理所有作业的平均周转时间结束输出处理所有作业的周转时间图3.5 响应比优先调度算法流程图3.3.

23、5总结最优调度算法流程图总结最优调度功能主要是通过比较先来先服务调度算法,短作业优先调度算法以及响应比优先调度算法得出的平均周转时间,得出最短的周转时间和最优化的算法,但是如果想执行此功能,首先要确定其他三个算法已经运行完成,才可以执行,其功能流程图如图3.6所示。开始执行完其他三种算法?输出错误信息比较三种算法的平均周转时间,取最小值得到最短周转时间的算法名称输出结果结束NY图3.6 总结最优调度算法4 程序的实现4.1主函数程序实现4.1.1主程序实现功能主函数中主要运用了printf()函数。printf()函数用于将程序的主界面在屏幕上打印输出,提示用户进行选择来调度相应的作业调度算法

24、实现不同的作业调度算法。主程序主要实现的是作业管理的主界面菜单的显示,利用switch语句实现主菜单的调用。switch()函数正是用来接收用户从键盘上输入的选择信息,根据用户输入的选择来调度相应的调度算法进而使函数运行实现相应的调度算法功能。本程序设置数字键选项16,分别实现调用先来先服务算法(fcfs)、调用短作业优先算法(sjf)、调用高响应者优先算法(xyb)、作业的创建(creat)、调用总结函数(zj)和退出程序功能。在运行菜单中,用户输入16的任意键,即进入对应的文件操作,完成操作后,可继续重复执行菜单选项以实现其他的文件操作功能。4.1.2 主程序实现代码主程序代码如下:#in

25、clude #define SIZE 4struct jcb int name; float tjtime; float runtime; float starttime; float finishtime; float turntime;float xyb;struct jcb *next;srSIZE,swSIZE,sqSIZE;float pj3=0;int main()int x;printf(nnnn);printf(Please choose the number: n);printf(| choose1:FCFS n);printf(| choose2:SJF n);printf

26、(| choose3:XYB n);printf(| choose4:CREAT n);printf(| choose5:ZJ n);printf(| choose6:EXIT n);printf(-n);scanf(%d,&x);switch (x)case 1:fcfs(); break;case 2:sjf(); break;case 3:xyyb(); break;case 4:creat();break;case 5:zj();break;case 6:exit(0);4.2 创建作业函数的实现4.2.1 函数说明根据宏定义中定义的SIZE的大小,本次课程设计的程序中为作业设定了四个

27、作业的调度情况,在具体的运行过程中,首先界面提示输入文件名,输入文件名“1”后界面提示分别输入作业的名称、提交时间和运行时间,整型数据和浮点型数据均可,中间用空格隔开。4.2.2 创建函数实现代码creat()创建函数用于创建文件并把作业的相关信息如:作业的名称(name)、作业的提交时间(tjtime)和作业的运行时间(runtime)这些基本信息写入文本文件中,使程序运行时当调用不同的调度算法时作业的基本信息不被破坏。同时为以后运行时对选用不同算法而算出的平均周转时间进行比较。创建函数程序代码如下:creat()FILE *fp; int i,j; char a20; pj0=0;pj1=

28、0;pj2=0;printf(tttwelcome to CREATn); printf(qing shu ru wen jian mingn); scanf(%s,a); if(fp=fopen(a,wb)=NULL) /*以二进制文件写入*/ printf(cannot open filen); for(i=0;iSIZE;i+)printf(input number %d records name,tjtime,runtime:n,i+1); scanf(%d%f%f,&sri.name,&sri.tjtime,&sri.runtime); if(fwrite(&sri,sizeof(s

29、truct jcb),1,fp)!=1)printf(file write errorn);fclose(fp);printf(please press anykey return main()n);getchar();getchar();main();4.3 先来先服务函数4.3.1函数说明先来先服务算法,每次调度是从后备作业队列中,选择一个最先进入该队列的作业,把处理机分配给它,使之投入运行。通过一系列运算求出其作业的开始时间、完成时间、周转时间。最后求出此调度算法下的平均周转时间,并将所求出的数据信息输出在屏幕上。该算法补角有利于长作业,而不利短作业。4.3.2先来先服务代码先来先服务代

30、码如下:fcfs() FILE *fp; int j; char b20; struct jcb *t, *p,*q,*head; p=q=(struct jcb *)malloc(sizeof(struct jcb); head=NULL;pj0=0;printf(tttwelcome to fcfsn); printf(qing shu ru wen jian mingn); scanf(%s,b); if(fp=fopen(b,rb)=NULL) printf(cannot open filen); printf(please press anykey return:n); getcha

31、r();getchar(); main(); printf(welcome come to fcfo:n); for(j=0;jnext=p; t=q; q=p; p=(struct jcb *)malloc(sizeof(struct jcb); q-name=srj.name; q-tjtime=srj.tjtime; q-runtime=srj.runtime; if(j=0) q-starttime=q-tjtime; else q-starttime=t-finishtime; q-finishtime=(q-starttime+q-runtime); q-turntime=(q-f

32、inishtime-q-tjtime); q-next=p;p-next=NULL;p=head;printf(name tjtime runtime starttime finishtime turntimen);while(p-next!=NULL)printf(%dt%.2ft%.2ft%.2ft%.2ft%.2ftn,p-name,p-tjtime,p-runtime,p-starttime,p-finishtime,p-turntime);pj0=pj0+p-turntime;p=p-next;pj0=pj0/SIZE;printf(fcfos average turntime:%f

33、n,pj0);printf(please press any key return main()n);getchar();getchar();main();4.4短作业优先函数4.4.1函数说明短作业(进程)优先调度算法SJ(P)F,是对短作业或短进程优先调度的算法。它们可以分别用于作业调度和作业进程。短作业优先(SJF)的调度算法时从后备队列中选择的一个或若干个估计运行时间最短的作业,将它们调入内存运行。SJP调度算法能有效地降低作业的平均等待时间,提高系统吞吐量。4.4.2短作业优先代码短作业优先代码如下:sjf()FILE *fp; int i,j,name; float t1,t2,t

34、3,t4,t5,t6; struct jcb *t, *p,*q,*head; char b20; p=q=(struct jcb *)malloc(sizeof(struct jcb); head=NULL;pj1=0;printf(tttwelcome to sjfn);printf(qing shu ru wen jian mingn); scanf(%s,b); if(fp=fopen(b,rb)=NULL) printf(cannot open filen);printf(please press anykey return:n); getchar();getchar(); main

35、(); printf(welcome come to sjf:n); fread(&sw0,sizeof(struct jcb),1,fp); for(i=1;iSIZE-1;i+)fread(&swi,sizeof(struct jcb),1,fp); for(j=i+1;jSIZE;j+) fread(&swj,sizeof(struct jcb),1,fp); if(swj.runtimeswi.runtime) name=swi.name; swi.name=swj.name; swj.name=name;t1=swi.tjtime; swi.tjtime=swj.tjtime; sw

36、j.tjtime=t1; t2=swi.runtime; swi.runtime=swj.runtime; swj.runtime=t2; for(j=0;jnext=p; t=q; q=p; p=(struct jcb *)malloc(sizeof(struct jcb); q-name=swj.name; q-tjtime=swj.tjtime; q-runtime=swj.runtime; if(j=0) q-starttime=q-tjtime; else q-starttime=t-finishtime; q-finishtime=(q-starttime+q-runtime);

37、q-turntime=(q-finishtime-q-tjtime); q-next=p;p-next=NULL;p=head;printf(name tjtime runtime starttime finishtime turntimen);while(p-next!=NULL)printf(%dt%.2ft%.2ft%.2ft%.2ft%.2ftn,p-name,p-tjtime,p-runtime,p-starttime,p-finishtime,p-turntime);pj1=pj1+p-turntime;p=p-next;pj1=pj1/SIZE;printf(sjfs avera

38、ge turntime:%fn,pj1);printf(please press any key return main()n);getchar();getchar();main();4.5 响应比高者优先函数响应比高者优先函数是将最先进入就绪队列的作业放入处理机开始运行,再将队列后面的作业通过响应比运算得出其响应比,并重新排序,得出每个作业的开始时间和运行时间,并且得出总的周转时间。4.5.1函数说明此函数主要利用链表和数组和for循环以及if判断重新对作业进行排列,开始将作业依次进入处理机运算,最后得出总的周转时间。4.5.2响应比高者优先代码响应比高者优先代码如下:xyyb()FILE

39、*fp; int i,j,xb,m; float w; char b20; struct jcb *p,*q,*head,*t,*u;pj2=0;printf(tttwelcome to xybn); printf(qing shu ru wen jian mingn); scanf(%s,b); if(fp=fopen(b,rb)=NULL) printf(cannot open filen); printf(please press anykey return:n); getchar(); getchar(); main(); for(m=0;mSIZE;m+)fread(&sqm,siz

40、eof(struct jcb),1,fp);for(j=1;jname=sq0.name;q-tjtime=sq0.tjtime;q-runtime=sq0.runtime;q-starttime=sq0.tjtime;q-finishtime=q-starttime+q-runtime;q-turntime=q-finishtime-q-tjtime;/*printf(%dt%.2ft%.2ft%.2ft%.2ft %.2ftn,p-name,p-tjtime,p-runtime,p-starttime,p-finishtime,p-turntime);*/for(i=1;inext=p;t=q;q=p;w=0;for(j=1;jfinishtime-sqj.tjtime)+sqj.runtime)/sqj.runtime; if(sqj.xybw) w=sqj.xyb; xb=j; q-name=sqxb.name; q-tjtime=sqxb.tjtime; q-runtime=sqxb.runtime; q-starttime=t-finishtime; q-finishtim

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 教学课件 > 中学教案课件 > 初中(七年级)课件教案

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922