#include <iostream>#include <queue>using namespace std;struct Process { int id; // 进程ID int time; // 运行时间};int main() { queue<Process> q; int n, t, total_time = 0; cout << "请输入进程数和每个进程的运行时间:" << endl; cin >> n; for (int i = 1; i <= n; i++) { cout << "请输入第" << i << "个进程的运行时间:" << endl; cin >> t; q.push({i, t}); total_time += t; } cout << "总共需要运行" << total_time << "毫秒" << endl; int slice = 10; // 时间片大小为10毫秒 int cur_time = 0; while (!q.empty()) { Process p = q.front(); q.pop(); if (p.time > slice) { p.time -= slice; cur_time += slice; q.push(p); } else { cur_time += p.time; cout << "进程" << p.id << "运行完成,用时" << cur_time << "毫秒" << endl; } } return 0;}的运行结果
时间: 2024-04-27 11:24:48 浏览: 67
#include <iostream>
假设我们输入进程数为3,每个进程的运行时间分别为20毫秒,30毫秒,40毫秒,则运行结果为:
请输入进程数和每个进程的运行时间:
3
请输入第1个进程的运行时间:
20
请输入第2个进程的运行时间:
30
请输入第3个进程的运行时间:
40
总共需要运行90毫秒
进程1运行完成,用时10毫秒
进程2运行完成,用时30毫秒
进程3运行完成,用时70毫秒
解释:
首先,我们输入了进程数和每个进程的运行时间,并计算出了总共需要运行的时间为90毫秒。
然后,我们设置时间片大小为10毫秒,并初始化当前时间为0。
接着,我们不断地从队列中取出进程,如果该进程的运行时间大于时间片大小,则将其剩余时间重新放回队列中,否则直接输出该进程的运行完成信息。
最终,所有进程都完成了运行。
阅读全文