PTA题目
注:在PTA上面提交时务必把scanf_s改成scanf,(编译器用的是vs2019).
主函数
int main(void) {
int n = 0;
scanf_s("%d", &n);
struct pcb p[10] = {
0};
input(p, n);
sort(p, n);
FCFS(p, n);
output(p, n);
return 0;
}
核心算法
void FCFS(struct pcb* p, int n) {
//计算完成时间
for (int i = 0; i < n; i++) {
if (i == 0) {
p[0].ftime = p[0].atime + p[0].rtime; //如果是第一个则完成=到达+服务
}
else {
if (p[i].atime > p[i - 1].ftime) {
//如果到达>上一个的完成,则完成=到达+服务,这个算法考虑了cpu的空闲情况
p[i].ftime = p[i].atime + p[i].rtime;
}
else {
p[i].ftime = p[i - 1].ftime + p[i].rtime;//如果到达<=上一个的完成,则完成=上一个完成+服务
}
}
}
//周转时间
for (int i = 0; i < n; i++) {
p[i].ttime = p[i].ftime - p[i].atime;
}
//带权周转
for (int i = 0; i < n