模拟调度
1 #include<stdio.h>
2
3 #define N 10
4
5 typedef struct process //进程结构
6
7 {
8
9 char name;
10
11 int arrive;
12
13 int prio;
14
15 int needTime;
16
17 char state;
18
19
20
21 }Process;
22
23 Process a[N];
24
25
26
27
28 void input(Process a[],int n){ //输入函数
29
30 int i;
31
32 for(i=0;i<n;i++)
33
34 {
35
36 printf("请输入第%d个进程的进程名:",i+1);
37
38 scanf("%c",&a[i].name);
39
40 printf("请输入第%d个进程的优先级:",i+1);
41
42 scanf("%d",&a[i].prio);
43
44 printf("请输入第%d个进程的到达时间:",i+1);
45
46 scanf("%d",&a[i].arrive);
47
48 printf("请输入第%d个进程的需要时间:",i+1);
49
50 scanf("%d",&a[i].needTime);
51
52 a[i].state='r';
53
54 getchar();
55
56 printf("\n");
57
58 }
59
60 }
61
62 void sort(Process a[],int n) //排序算法
63
64 {
65
66 int i,j;
67
68 Process temp;
69
70 for(i=0;i<n;i++)
71
72 for(j=i;j<n;j++)
73
74 {
75
76 if(a[j].prio>a[i].prio) //按进程优先级排序
77
78 {
79
80 temp=a[j];
81
82 a[j]=a[i];
83
84 a[i]=temp;
85
86 }
87
88 if(a[j].prio==a[i].prio) //如果优先级相同,按先来先服务原则排序
89
90 {
91
92 if(a[j].arrive<a[i].arrive)
93
94 {
95
96 temp=a[j];
97
98 a[j]=a[i];
99
100 a[i]=temp;
101
102 }
103
104 }
105
106 }
107
108 }
109
110 void output(Process a[],int n)
111
112 {
113
114 int i;
115
116 printf("\t进程排序结果:\n");
117
118 printf("\t********************************\n");
119
120 printf("