C 语言实现操作系统 SJF 算法:精准计算周转时间
以下是一个使用 C 语言实现短作业优先(SJF)算法并计算周转时间的示例代码: ```c #include <stdio.h> #include <stdlib.h> // 定义进程结构体 typedef struct Process { int pid; // 进程 ID int burst_time; // 进程的 CPU 执行时间 int waiting_time; // 等待时间 int turnaround_time; // 周转时间 } Process; // 交换两个进程 void swap(Process *a, Process *b) { Process temp = *a; *a = *b; *b = temp; } // 对进程数组按执行时间升序排序 void sortProcesses(Process processes[], int n) { int i, j; for (i = 0; i < n - 1; i++) { for (j = 0; j < n - i - 1; j++) { if (processes[j].burst_time > processes[j + 1].burst_time) { swap(&processes[j], &processes[j + 1]); } } } } // 计算等待时间和周转时间 void calculateTimes(Process processes[], int n) { processes[0].waiting_time = 0; processes[0].turnaround_time = processes[0].burst_time; for (int i = 1; i < n; i++) { processes[i].waiting_time = processes[i - 1].waiting_time + processes[i - 1].burst_time; processes[i].turnaround_time = processes[i].waiting_time + processes[i].burst_time; } } // 打印进程信息 void printProcessInfo(Process processes[], int n) { printf("Process ID\tBurst Time\tWaiting Time\tTurnaround Time\n"); for (int i = 0; i < n; i++) { printf("%d\t\t%d\t\t%d\t\t%d\n", processes[i].pid, processes[i].burst_time, processes[i].waiting_time, processes[i].turnaround_time); } } // 计算平均周转时间 float calculateAverageTurnaroundTime(Process processes[], int n) { float totalTurnaroundTime = 0; for (int i = 0; i < n; i++) { totalTurnaroundTime += processes[i].turnaround_time; } return totalTurnaroundTime / n; } int main() { Process processes[] = { {1, 6, 0, 0}, {2, 8, 0, 0}, {3, 7, 0, 0}, {4, 3, 0, 0} }; int n = sizeof(processes) / sizeof(processes[0]); sortProcesses(processes, n); calculateTimes(processes, n); printProcessInfo(processes, n); float averageTurnaroundTime = calculateAverageTurnaroundTime(processes, n); printf("Average Turnaround Time: %.2f\n", averageTurnaroundTime); return 0; } ``` 在上述代码中,我们首先定义了`Process`结构体来表示进程。然后,实现了排序函数`sortProcesses`对进程按执行时间排序,`calculateTimes`函数计算等待时间和周转时间,`printProcessInfo`函数打印进程信息,`calculateAverageTurnaroundTime`函数计算平均周转时间。在`main`函数中创建进程数组,进行处理和输出结果。 ######[AI写代码神器 | 809点数解答 | 2024-11-05 09:08:18]
- C语言实现:根据图书单价与数量计算应付总费用 (字节豆包 | 291点数解答 | 2024-11-04 22:11:11)350
- C++编程:图书购买费用计算及输入输出处理要点(字节豆包 | 347点数解答 | 2025-11-03 14:32:27)94
- 计算多本计算机图书总价:Python、Java、C++ 三种语言实现(字节豆包 | 1013点数解答 | 2025-12-07 17:30:24)95
- Python 编程:根据图书单价和数量精准计算应付总费用(字节豆包 | 344点数解答 | 2025-12-14 13:10:04)64
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)382
- Python 实现 DES 加密算法编程实验:从原理到单步调试全解析(字节豆包 | 4096点数解答 | 2025-11-09 22:06:30)90
- 数字化制图综合平台:助力企业转型,推动烟草物流图纸智能化设计 (字节豆包 | 490点数解答 | 2024-10-30 20:30:29)162
- 数字化制图综合平台:引领烟草物流及多领域设计革新 在企业数字化转型的时代浪潮中,数字化制图技术创新应用成为产业升级与提升竞争力的关键。企业对高效、精准、智能化设计解决方案需求迫切,构建集二维到三维正逆向工程快捷化、干涉检测可视化、设备明细数据提取自动化以及设备模块模型库于一体的综合平台意义重大。 此平台集成先进数字化制图工具与智能算法,可实现二维设计到三维建模的无缝转换,大大缩短设计周期。正逆向工程能快速切换,满足不同场景设计需求。内置干涉检测功能可实时监测设计潜在冲突,保障设计方案可行与安全。设备明细数据自动提取提高设计准确性与效率。设备模块模型库为设计师提供丰富资源,支持设计标准化与模块化,加速项目推进。 整体来看,该综合平台的应用极大促进了烟草物流行业及更广泛领域的技术创新与效率提升。在烟草物流方案图纸智能化设计中,它提升了图纸设计效率与质量,使设计工作更加高效、精准。对于企业而言,这一平台带来显著竞争优势,能帮助企业在数字化转型中脱颖而出,在激烈的市场竞争中占据有利地位,推动整个行业向更高效、更智能的方向发展。 (阿里通义 | 216点数解答 | 2024-10-30 20:30:51)193
- 易语言读取文本文件并显示到超级列表框:代码示例与注意要点(DeepSeek | 571点数解答 | 2025-08-23 20:54:40)261
- 易语言:读取并显示特定文本到超级列表框,还能增加新数据的方法与要点(DeepSeek | 1317点数解答 | 2025-08-23 20:58:40)259
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)352
- C++ 代码实现自定义运算 x@y = x² + y² - xy 及 x@(x+y) 计算(DeepSeek | 215点数解答 | 2025-12-13 15:08:14)100