```c #include <stdio.h> #include <string.h> typedef struct { char name[11]; int arrival_time; int burst_time; int remaining_time; } Process; void srtf(Process processes[], int n) { int current_time = 0; int completed = 0; int shortest; int finish_time; int check = 0; int minm = 999999; int i; while (completed != n) { for (i = 0; i < n; i++) { if ((processes[i].arrival_time <= current_time) && (processes[i].remaining_time < minm) && processes[i].remaining_time > 0) { minm = processes[i].remaining_time; shortest = i; check = 1; } } if (check == 0) { current_time++; continue; } processes[shortest].remaining_time--; minm = processes[shortest].remaining_time; if (minm == 0) { minm = 999999; } if (processes[shortest].remaining_time == 0) { completed++; check = 0; finish_time = current_time + 1; printf("%s ", processes[shortest].name); } current_time++; } } int main() { Process processes[4]; int i; for (i = 0; i < 4; i++) { scanf("%s %d %d", processes[i].name, &processes[i].arrival_time, &processes[i].burst_time); processes[i].remaining_time = processes[i].burst_time; } srtf(processes, 4); return 0; } ``` 这段代码定义了一个进程结构体,包含进程名、到达时间、运行时间和剩余时间。主函数中读取四个进程的信息,然后调用`srtf`函数来模拟最短剩余时间优先调度算法。在`srtf`函数中,我们通过不断检查当前时间点上哪个进程的剩余时间最短来决定下一个执行的进程,直到所有进程都完成。每次选择进程后,都会打印出该进程的名称。 [2024-11-14 15:54:43 | AI写代码神器 | 622点数解答]