教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 行业资料 >

先来先服务调度算法C语言实现

来源:网络收集 时间:2026-07-06
导读: #include stdio.h struct fcfs { char name[10]; float arrivetime; //定义进程的结构体 //进程名 //到达时间 float servicetime; //服务时间 float starttime; //开始时间 float finishtime; float zztime; float dqzztime; //完成时间 //周转时间 //带权周

#include <stdio.h>

struct fcfs

{

char name[10]; float arrivetime; //定义进程的结构体 //进程名 //到达时间 float servicetime; //服务时间 float starttime; //开始时间 float finishtime; float zztime; float dqzztime; //完成时间 //周转时间 //带权周转时间

}; fcfs a[100]; //定义先来先服务算法进程的最大数量

//输入函数 void Finput(fcfs *p,int N)

{

int i; printf("输入进程的名称、到达时间、服务时间:(例如: x 0 100)\n"); for(i=0;i<=N-1;i++) { printf("输入第%d进程的名称、到达时间、服务时间:",i+1); } scanf("%s%f%f",&p[i].name,&p[i].arrivetime,&p[i].servicetime);

}

//输出函数

void FPrint(fcfs *p,float arrivetime,float servicetime,float starttime,float finishtime,float zztime,float dqzztime,int N)

{

int k; printf("\n执行顺序:\n"); printf("%s",p[0].name); for(k=1;k<N;k++) { printf("-%s",p[k].name); } printf("\n进程名\tarrive\tservice\tstart\tfinish\tzz\tdqzz\n\n"); for(k=0;k<=N-1;k++) {

printf("%s\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t\n\n",p[k].name,p[k].arrivetime,p[k].servicetime,p[k].starttime,p[k].finishtime,p[k].zztime,p[k].dqzztime);

}

//按到达时间排序,先到达排在前面 } void Fsort(fcfs *p,int N)

{

for(int i=0;i<=N-1;i++)

for(int j=0;j<=i;j++) if(p[i].arrivetime<p[j].arrivetime) { fcfs temp; temp=p[i];

} p[i]=p[j]; p[j]=temp;

}

//运行结果

void Fdeal(fcfs *p, float arrivetime,float servicetime,float starttime,float finishtime,float &zztime,float &dqzztime,int N)

{

int k;

for(k=0;k<=N-1;k++) { if(k==0) { p[k].starttime=p[k].arrivetime; } else { p[k].starttime=p[k-1].finishtime; //开始时间=前一个进程的完成时间 p[k].finishtime=p[k-1].finishtime+p[k].servicetime; //结束时间=前一个进} p[k].finishtime=p[k].arrivetime+p[k].servicetime; 程的完成时间+现在进程的服务时间 } for(k=0;k<=N-1;k++) { p[k].zztime=p[k].finishtime-p[k].arrivetime; p[k].dqzztime=p[k].zztime/p[k].servicetime; //周转时间=完成时间-到达时间 //带权周转时间=周转时间/服务时间 }

}

//先来先服务

void FCFS(fcfs *p,int N)

{

float arrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0; Fsort(p,N); Fdeal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N); FPrint(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);

}

void main() //主函数

{int N;

printf("------先来先服务调度算法------\n"); printf("输入进程数:"); scanf("%d",&N); Finput(a,N); FCFS(a,N); }

…… 此处隐藏:85字,全部文档内容请下载后查看。喜欢就下载吧 ……
先来先服务调度算法C语言实现.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/2275228.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)