• 进程调度模拟程序


    #include<stdio.h>

    #define N 10

    typedef struct process  

    {

       char name;

       int arrive;

       int prio;

       int needTime;

       char state;

      

    }Process;

    Process a[N];

    void input(Process a[],int n){              

        int i;

       for(i=0;i<n;i++)

       {

              printf("请输入%d个进程的进程名:",i+1);

              scanf("%c",&a[i].name);

              printf("请输入%d个进程的优先级:",i+1);

            scanf("%d",&a[i].prio);

            printf("请输入%d个进程的到达时间:",i+1);

            scanf("%d",&a[i].arrive);

              printf("请输入%d个进程的需要时间:",i+1);

              scanf("%d",&a[i].needTime);

              a[i].state='r';

            getchar();

              printf(" ");

       }

    }

    void sort(Process a[],int n)              

    {

       int i,j;

       Process temp;

       for(i=0;i<n;i++)

          for(j=i;j<n;j++)

          {

                 if(a[j].prio>a[i].prio)

                 {

                        temp=a[j];

                        a[j]=a[i];

                        a[i]=temp;

                 }

                 if(a[j].prio==a[i].prio) 

                 {

                        if(a[j].arrive<a[i].arrive)

                        {

                   temp=a[j];

                        a[j]=a[i];

                        a[i]=temp;

                        }

                 }

          }

    }

    void output(Process a[],int n)           

    {

       int i;

       printf("进程排序结果: ");

        printf("******************************** ");

       printf("进程名 优先级 到达 需要 ");

       for(i=0;i<n;i++)

            printf("%c %d %d %d %c ",a[i].name,a[i].prio,a[i].arrive,a[i].needTime,a[i].state);

        printf("******************************** ");

    }

    void running(Process a[],int n)

    {

       int i;

        for(i=0;i<n;i++)

       {

          while(a[i].needTime!=0)

          {

                printf("按任意键继续 ");

                fflush(stdin);

                getchar();

             a[i].needTime=a[i].needTime-1;

                a[i].prio=a[i].prio-1;

                if(a[i].needTime==0)

                {

                       a[i].state='f';

                }

              printf("现在执行的进程信息: ");

             printf("进程名 优先级 需要 ");

             printf("%c %d %d %c ",a[i].name,a[i].prio,a[i].needTime,a[i].state);

             printf("******************************** ");

                sort(a,n);

                output(a,n);

          }

       }

    }

    main()

    {

       int n;

       printf("你想输入多少个进程:");

       scanf("%d",&n);

       getchar();

       input(a,n);

       sort(a,n);

       running(a,n);

    }

  • 相关阅读:
    集合
    WPF自定义控件--模拟手机密码输入控件,在输入时显示最后一个输入密码字符
    配置VS不生成XML和PDB文件
    Wlan常见命令(可以查看连接密码)
    云栖社区用机器人爬CSDN的文章?
    Marshal.PtrToStringAnsi中文乱码
    各种手工DIY
    yii2修改默认控制器
    3D模型网站分享
    SemanticZoom配合GridView组件的使用关键点
  • 原文地址:https://www.cnblogs.com/dachui/p/5592266.html
Copyright © 2020-2023  润新知