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

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

```c #include <stdio.h> typedef struct { char name[10]; int arrivalTime; int runTime; } Process; void sjfScheduling(Process processes[], int n) { int completionTimes[n]; int turnaroundTimes[n]; int currentTime = 0; int minRunTime, selectedProcess; for (int i = 0; i < n; i++) { minRunTime = 9999; selectedProcess = -1; for (int j = 0; j < n; j++) { if (processes[j].arrivalTime <= currentTime && processes[j].runTime < minRunTime && processes[j].runTime > 0) { minRunTime = processes[j].runTime; selectedProcess = j; } } if (selectedProcess == -1) { for (int j = 0; j < n; j++) { if (processes[j].runTime > 0 && processes[j].arrivalTime < minRunTime) { minRunTime = processes[j].arrivalTime; selectedProcess = j; } } } if (selectedProcess!= -1) { currentTime += processes[selectedProcess].runTime; completionTimes[selectedProcess] = currentTime; processes[selectedProcess].runTime = 0; } } for (int i = 0; i < n; i++) { turnaroundTimes[i] = completionTimes[i] - processes[i].arrivalTime; printf("%d ", turnaroundTimes[i]); } } int main() { Process processes[4]; for (int i = 0; i < 4; i++) { scanf("%s %d %d", processes[i].name, &processes[i].arrivalTime, &processes[i].runTime); } sjfScheduling(processes, 4); return 0; } ``` [2024-11-14 16:15:00 | AI写代码神器 | 473点数解答]

相关提问