```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点数解答]