zoukankan      html  css  js  c++  java
  • 进程调度模拟程序

    #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);

    }

  • 相关阅读:
    三、Vue CLI-单页面
    width100%,设置padding或border溢出解决方法
    一、Linux平台部署ASP.NET、ASP.NET CORE、PHP
    二、Core授权-2 之.net core 基于Identity 授权
    一、doT.js使用笔记
    一、域名认证信息
    HB-打包
    一、模型验证CoreWebApi 管道方式(非过滤器处理)2(IApplicationBuilder扩展方法的另一种写法)
    python 写的几道题
    美团面试总结
  • 原文地址:https://www.cnblogs.com/dachui/p/5592266.html
Copyright © 2011-2022 走看看