You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 -

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 19:20:48