先来先服务算平均周转时间

#include <stdio.h>
#include <stdlib.h>

typedef struct {
    float ready;  // 到达时间
    float run;    // 执行时间
} Process;

int main() {
    int i, n;              // n用来记录进程的个数
    float finish, sum;     // finish完成时间,sum总周转时间

    printf("输入进程的个数:");
    scanf("%d", &n);

    Process *processes = (Process *)malloc(n * sizeof(Process));

    for (i = 0; i < n; i++) {
        printf("请输入第%d个进程的到达时间与执行时间:\n", i + 1);
        printf("到达时间=");
        scanf("%f", &processes[i].ready);
        printf("运行时间=");
        scanf("%f", &processes[i].run);
    }

    // 按照到达时间对进程进行排序(升序)
    for (i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (processes[j].ready > processes[j + 1].ready) {
                // 交换位置
                Process temp = processes[j];
                processes[j] = processes[j + 1];
                processes[j + 1] = temp;
            }
        }
    }

    finish = processes[0].ready + processes[0].run;
    sum = finish - processes[0].ready;
    //第一个到达进程 
    printf("进程\t到达时间\t执行时间\t周转时间\n");
	printf("%d\t%.2f\t\t%.2f\t\t%.2f\n", 1, 
	processes[0].ready, processes[0].run, sum);

    for (i = 1; i < n; i++) {
        if (finish < processes[i].ready) {
            finish = processes[i].ready;
        }
        finish += processes[i].run;
        sum += finish - processes[i].ready;
        printf("%d\t%.2f\t\t%.2f\t\t%.2f\n", i + 1, 
		processes[i].ready, processes[i].run, 
		finish - processes[i].ready);
    }

    printf("进程的平均周转时间为:%.2f\n", sum / n);

    free(processes); // 释放动态分配的内存

    return 0;
}

到达时间执行时间开始时间结束时间周转时间
03033
2481210
15387


周转时间 = 结束时间 - 到达时间

等待时间 = 周转时间 - 执行时间

执行时间 = 周转时间 - 等待时间

响应时间 = 开始时间 - 到达时间

响应比 = 1 +等待时间/执行时间

带权周转时间 = 周转时间 / 执行时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值