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

    }

  • 相关阅读:
    Js new一个函数和直接调用函数的区别
    js 获取两个数组的交集,并集,补集,差集
    新版CHROME跨域问题:COOKIE之SAMESITE属性 PS:火狐浏览器SESSIOINID每次请求一致,但在谷歌浏览器每次的请求就不一样
    vue中handsontable 使用
    vue 单独页面定时器 离开页面销毁定时器
    vscode 之 power model 插件 超级炫酷的打字效果动画
    同步和异步的执行顺序
    为什么typeof null 的结果为 object
    悬浮显示input中所有的内容及css处理文字过长时显示为多余部分省略
    第十六次作业
  • 原文地址:https://www.cnblogs.com/dachui/p/5592266.html
Copyright © 2011-2022 走看看