酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

要求输入4个进程的信息,若进程调度采用最短剩余时间优先srtf调度算法(若所需运行时间一样,则按照输入顺序执行。),请按照执行过程的顺序输出各个进程的名称。 输入格式 程序要求输入4行,以回车符号作为分隔,每行有3个数据,以空格作为分隔。首先输入一个字符串(长度小于等于10),为进程名,第2个数据类型为整型,表示进程到达的时刻,第3个数据类型为整型,表示进程所需运行的时间。 输出格式 按照执行过程的顺序输出各个进程的名称即一个字符串,进程名称之间用一个空格作为分隔。使用c语言

```c #include <stdio.h> #include <string.h> // 定义进程结构体 typedef struct { char name[10]; int arrivalTime; int burstTime; int remainingTime; } Process; // 比较函数,用于剩余时间排序 int compare(const void *a, const void *b) { Process *p1 = (Process *)a; Process *p2 = (Process *)b; if (p1->remainingTime == p2->remainingTime) { return p1->arrivalTime - p2->arrivalTime; } else { return p1->remainingTime - p2->remainingTime; } } int main() { Process processes[4]; for (int i = 0; i < 4; i++) { scanf("%s %d %d", processes[i].name, &processes[i].arrivalTime, &processes[i].burstTime); processes[i].remainingTime = processes[i].burstTime; } int currentTime = 0; int completedProcesses = 0; printf("执行顺序: "); while (completedProcesses < 4) { qsort(processes, 4, sizeof(Process), compare); int selected = -1; for (int i = 0; i < 4; i++) { if (processes[i].arrivalTime <= currentTime && processes[i].remainingTime > 0) { selected = i; break; } } if (selected == -1) { currentTime++; continue; } processes[selected].remainingTime--; if (processes[selected].remainingTime == 0) { completedProcesses++; printf("%s ", processes[selected].name); } currentTime++; } printf("\n"); return 0; } ``` [2024-11-14 16:17:26 | AI写代码神器 | 456点数解答]

相关提问