FCFS调度器C代码循环输出格式异常问题求助
FCFS调度器C代码输出格式问题解决
我修改了Sanfoundry的FCFS调度器C代码:移除周转时间相关内容,改为处理预设数组而非用户输入。代码逻辑正确,但循环输出格式不符合预期,即便和原代码几乎一致也无法解决。相关信息如下:
现有代码
int main() { int pid[5] = {1, 2, 3, 4, 5}; int bt[5] = {5, 3, 1, 2, 3}; int n = 5; int i, wt[n]; wt[0]=0; // 计算每个进程的等待时间 for(i=1; i<n; i++) { wt[i]= bt[i-1]+ wt[i-1]; } printf("Process ID Burst Time Waiting Time\n"); float twt=0.0; for(i=0; i<n; i++) { printf("%d\t\t", pid[i]); printf("%d\t\t", bt[i]); printf("%d\t\t", wt[i]); // 累加总等待时间 twt += wt[i]; } float awt; // 计算平均等待时间 awt = twt/n; printf("\nAvg. waiting time= %f\n",awt); }
预期输出
ProcessID BurstTime WaitingTime 1 5 0 2 3 5 3 1 8 4 2 9 5 1 11
实际输出
ProcessID BurstTime WaitingTime 1 5 0 2 3 5 3 1 8 4 2 9 5 3 11
问题原因及解决办法
核心问题是循环输出每个进程信息后没有换行,导致所有进程的字段都连续打印在同一行,格式混乱。
只需在循环内的三个printf语句后添加换行指令即可修复:
修改后的循环代码:
for(i=0; i<n; i++) { printf("%d\t\t", pid[i]); printf("%d\t\t", bt[i]); printf("%d\n", wt[i]); // 将末尾的\t\t替换为\n,或单独加printf("\n"); twt += wt[i]; }
另外注意:你预期输出中第5个进程的Burst Time为1,但现有代码中bt[4] = 3,若要完全匹配预期输出,需将bt数组修改为int bt[5] = {5, 3, 1, 2, 1};。
内容的提问来源于stack exchange,提问作者max1eee -
相关产品推荐
相关产品推荐

