模拟调度
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("