/*
先来先服务FCFS
要求:
1>用结构体定义程序:程序号,优先数(到达时间),CPU运算所需时间
2>输入进程序列
3>按优先数高低排序输出
*/
#include<stdio.h>
#include<string.h>
#define N 100
typedef struct Time
{
int reachTime; //优先数(程序到达时间)
int runningTime; //CPU运算时间
}Time;
typedef struct Information
{
long ID; //程序号
Time pay;
}INF;
int n;
void readpay(INF p[]);
void DeSortbytheFirst(INF p[]);
void main() //主函数
{
INF p[N];
struct Time;
int sum=0;
int i;
// long number;
printf("请输入程序个数:(<100个)");
scanf("%d",&n);
readpay(p);
for(i=0;i<n;i++)
{
sum=sum+p[i].pay.reachTime+p[i].pay.runningTime;
}
printf("\n\n\t\t\t#####总周转时间为:%d毫秒#####\n\t\n",sum);
printf("\t\t\t#####按优先级高低排序输出#####\n\n");
DeSortbytheFirst(p);
}
void readpay(INF p[]) //1.输入程序资料
{
int i;
for(i=0;i<n;i++)
{
printf("\n\t请输入第%d个程序号:",i+1);
scanf("%ld",&p[i].ID);
printf("请输入第%d个程序的到达时间:",i+1);
scanf("\t%d",&p[i].pay.reachTime);
printf("请输入第%d个程序的CPU运算时间:",i+1);
scanf("\t%d",&p[i].pay.runningTime);
printf("\t\n%10ld %d\t%d\t\n 周转时间:%d\n",p[i].ID,p[i].pay.reachTime,p[i].pay.runningTime,p[i].pay.reachTime+p[i].pay.runningTime);
}
}
void DeSortbytheFirst(INF p[]) //2.按优先级高低排序输出
{
int i,j,k;
int All;
int a1,a2;
INF temp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<=n;j++)
{
a1=p[i].pay.reachTime+p[i].pay.runningTime;
a2=p[j].pay.reachTime+p[j].pay.runningTime;
if(a1<a2)
{
temp=p[j];
p[j]=p[i];
p[i]=temp;
}
}
printf("\n\t按优先级高低排序为:\n");
printf("\n\t编号\t程序号\t到达时间\t运转时间\t\n");
for(k=0;k<n;k++)
{
All=p[k].pay.reachTime+p[k].pay.runningTime;
printf("\t%d%10ld\t%d\t\t%d\t\n",k+1,p[k].ID,p[k].pay.reachTime,All);
}
}
}
#####################################################
运行结果: