设有四道作业,提交时刻和运行时间如下表: 作业号 提交时刻(时) 运行时间(小时) 1 8:00 2.0 2 8:50 0.5 3 9:00 0.1 4 9:50 0.2 编写C语言程序,实现高响应比优先调度算法。 要求输入提交时刻及运行时间,输出调度顺序。
时间: 2024-05-13 14:19:11 浏览: 127
以下是高响应比优先调度算法的C语言程序实现:
```c
#include <stdio.h>
#define MAX_JOBS 4
typedef struct Job {
int job_id; // 作业号
float arrival_time; // 到达时间
float run_time; // 运行时间
float priority; // 优先级
} Job;
int main() {
Job jobs[MAX_JOBS]; // 作业数组
// 输入作业信息
for (int i = 0; i < MAX_JOBS; i++) {
printf("请输入作业 %d 的到达时间和运行时间:", i + 1);
scanf("%f %f", &(jobs[i].arrival_time), &(jobs[i].run_time));
jobs[i].job_id = i + 1;
jobs[i].priority = 0.0;
}
// 计算作业的优先级
float total_run_time = 0.0;
for (int i = 0; i < MAX_JOBS; i++) {
total_run_time += jobs[i].run_time;
jobs[i].priority = (total_run_time - jobs[i].arrival_time) / jobs[i].run_time;
}
// 按优先级排序作业
for (int i = 0; i < MAX_JOBS - 1; i++) {
for (int j = i + 1; j < MAX_JOBS; j++) {
if (jobs[i].priority < jobs[j].priority) {
Job temp = jobs[i];
jobs[i] = jobs[j];
jobs[j] = temp;
}
}
}
// 输出调度顺序
printf("高响应比优先调度算法的调度顺序为:");
for (int i = 0; i < MAX_JOBS; i++) {
printf("%d ", jobs[i].job_id);
}
printf("\n");
return 0;
}
```
在程序中,我们先定义了一个 Job 结构体来存储作业的信息,包括作业号、到达时间、运行时间和优先级。然后通过循环输入每个作业的信息,并计算出每个作业的优先级。
接下来,我们按优先级对作业进行排序,最后输出调度顺序即可。在输出调度顺序时,我们只需要输出每个作业的作业号即可。
阅读全文