使用c语言编写FCFS算法的程序代码
时间: 2023-10-24 12:18:41 浏览: 151
C语言FCFS算法
以下是使用C语言编写的FCFS(先来先服务)算法的程序代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct process {
int pid; //进程ID
int at; //到达时间
int bt; //执行时间
int ct; //完成时间
int tat; //周转时间
int wt; //等待时间
};
int main() {
int n, i, j;
float avg_tat = 0, avg_wt = 0;
struct process p[100], temp;
printf("Enter the number of processes: ");
scanf("%d", &n);
//输入每个进程的到达时间和执行时间
for (i = 0; i < n; i++) {
printf("Enter arrival time and burst time for process %d: ", i + 1);
scanf("%d %d", &p[i].at, &p[i].bt);
p[i].pid = i + 1;
}
//按照到达时间对进程进行排序
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (p[i].at > p[j].at) {
temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
}
//计算每个进程的完成时间、周转时间和等待时间
for (i = 0; i < n; i++) {
if (i == 0) {
p[i].ct = p[i].at + p[i].bt;
} else {
if (p[i].at > p[i - 1].ct) {
p[i].ct = p[i].at + p[i].bt;
} else {
p[i].ct = p[i - 1].ct + p[i].bt;
}
}
p[i].tat = p[i].ct - p[i].at;
p[i].wt = p[i].tat - p[i].bt;
//计算平均周转时间和平均等待时间
avg_tat += p[i].tat;
avg_wt += p[i].wt;
}
avg_tat /= n;
avg_wt /= n;
//输出每个进程的信息以及平均周转时间和平均等待时间
printf("PID\tAT\tBT\tCT\tTAT\tWT\n");
for (i = 0; i < n; i++) {
printf("%d\t%d\t%d\t%d\t%d\t%d\n", p[i].pid, p[i].at, p[i].bt, p[i].ct, p[i].tat, p[i].wt);
}
printf("Average Turnaround Time: %.2f\n", avg_tat);
printf("Average Waiting Time: %.2f\n", avg_wt);
return 0;
}
```
该程序首先要求用户输入进程数,然后输入每个进程的到达时间和执行时间。然后按照到达时间对进程进行排序,然后计算每个进程的完成时间、周转时间和等待时间,并输出每个进程的信息以及平均周转时间和平均等待时间。
阅读全文