CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

优先级不能调用

楼主guojm333(雨中的风铃)2006-07-03 10:39:54 在 C/C++ / C语言 提问

#include   "conio.h"  
  #include   "stdio.h"  
  #include   "stdlib.h"  
  struct   process_type  
  {    
          char   name;  
          int   youxian;  
          int   daxiao;  
  };  
  struct   process_type   jiuxu[5];  
   
  struct   process_type   guaqi[5];  
   
  struct   process_type   cpu;  
   
  int   number1=0,number2=0,first=0;  
   
  void   create()  
  {  
          if(number1>=5)  
          {  
                  printf("\n就绪进程已满,请先删除或挂起进程\n");  
          }  
          else  
          {  
                  if(number1==0)  
                  {  
                          printf("\n这是你第一次输入进程信息,它将直接调入CPU运行!\n");  
                          printf("请输入新进程名\n");  
                          scanf("%c",&cpu.name);  
                          printf("请输入新进程的优先级\n");  
                          scanf("%d",&cpu.youxian);  
                          printf("请输入新进程的大小\n");  
                          scanf("%d",&cpu.daxiao);  
                          number1++;  
                  }  
                  else  
                  {  
                          printf("\n请输入新进程名\n");  
                          scanf("%s",&jiuxu[number1].name);  
                          printf("请输入新进程的优先级\n");  
                          scanf("%d",&jiuxu[number1].youxian);  
                          printf("请输入新进程的大小\n");  
                          scanf("%d",&jiuxu[number1].daxiao);  
                          number1++;  
                  }  
          }  
  }  
   
   
   
  void   run()   /*建立进程显示函数,用于显示当前进程*/  
  {    
  printf("\n   进程名   优先级   运行时间   \n");  
  printf("         %c   \t",cpu.name);  
  printf("     %d   \t",cpu.youxian);  
  printf("     %d   \t",cpu.daxiao);  
  printf("\n");    
   
  }      
   
   
  swap(struct   process_type   a,struct   process_type   b)  
  {  
        int   m,n;  
        char   p;  
        m=a.youxian;  
        a.youxian=b.youxian;  
        b.youxian=m;  
        n=a.daxiao;  
        a.daxiao=b.daxiao;  
        b.daxiao=n;  
        p=a.name;  
        a.name=b.name;  
        b.name=p;  
  }  
   
  void   huanchua()  
  {  
          int   i,m,t,p;  
          char   n;  
   
          for(i=1;i<number1+1;i++)  
          {  
                  if(jiuxu[i].youxian>cpu.youxian)  
                  swap(jiuxu[i],cpu)   ;  
          }  
          for(i=1;i<number1+1;i++)  
          {  
                  if(p==jiuxu[i].youxian)  
                  {  
                          m=cpu.daxiao;  
                          cpu.daxiao=jiuxu[i].daxiao;  
                          n=cpu.name;  
                          cpu.name=jiuxu[i].name;  
                          t=cpu.youxian;  
                          cpu.youxian=jiuxu[i].youxian;  
                          break;  
                  }  
                  else   continue;  
          }  
        for(i=0;i<number1-1;i++)  
          {  
                  jiuxu[i].daxiao=jiuxu[i+1].daxiao;  
                  jiuxu[i].name=jiuxu[i+1].name;  
                  jiuxu[i].youxian=jiuxu[i+1].youxian;  
          }  
          jiuxu[i].daxiao=m;  
          jiuxu[i].name=n;  
          jiuxu[i].youxian=t;  
  }  
   
  void   huanchub()  
  {  
          int   i;  
          char   p;  
          printf("\n请输入想要挂起的进程名:\n(在以下中选:");  
          for(i=0;i<number1;i++)  
          {  
                  printf("%c",jiuxu[i].name);  
          }  
          printf(")\n");  
          scanf("%s",&p);  
          for(i=0;i<number1;i++)  
          {  
                  if(p==jiuxu[i].name)  
                  {  
                          guaqi[number2].daxiao=jiuxu[i].daxiao;  
                          guaqi[number2].name=jiuxu[i].name;  
                          guaqi[number2].youxian=jiuxu[i].youxian;  
                          number2++;  
                          break;  
                  }  
                  else   continue;  
          }  
          for(i=0;i<number1;i++)  
          {  
                  jiuxu[i].daxiao=jiuxu[i+1].daxiao;  
                  jiuxu[i].name=jiuxu[i+1].name;  
                  jiuxu[i].youxian=jiuxu[i+1].youxian;  
          }                          
          number1--;  
  }  
   
   
  void   huanchuc()  
  {  
          int   i;  
          jiuxu[number1].daxiao=guaqi[0].daxiao;  
          jiuxu[number1].name=guaqi[0].name;  
          jiuxu[number1].youxian=guaqi[0].youxian;  
          number1++;  
          for(i=0;i<number2;i++)  
          {  
                  guaqi[i].daxiao=guaqi[i+1].daxiao;  
                  guaqi[i].name=guaqi[i+1].name;  
                  guaqi[i].youxian=guaqi[i+1].youxian;  
          }  
          number2--;  
  }  
   
  void   huanchud()  
  {  
          int   i,m,t;  
          char   p,n;  
          printf("\n请输入想要运行的进程名:\n(在以下中选:");  
          for(i=0;i<number1;i++)  
          {  
                  printf("%c   ",jiuxu[i].name);  
          }  
          printf(")\n");  
          scanf("%s",&p);  
          for(i=0;i<number1;i++)  
          {  
                  if(p==jiuxu[i].name)  
                  {  
                          m=cpu.daxiao;  
                          cpu.daxiao=jiuxu[i].daxiao;  
                          jiuxu[i].daxiao=m;  
                          n=cpu.name;  
                          cpu.name=jiuxu[i].name;  
                          jiuxu[i].name=n;  
                          t=cpu.youxian;  
                          cpu.youxian=jiuxu[i].youxian;  
                          jiuxu[i].youxian=t;  
                          break;  
                  }  
                  else   continue;  
          }  
  }  
   
   
  void   huanchue()  
  {  
          int   i;  
          char   p;  
          printf("\n请输入想要调入就绪的进程名:\n(在以下中选:");  
          for(i=0;i<number2;i++)  
          {  
                  printf("%c   ",guaqi[i].name);  
          }  
          printf(")\n");  
          scanf("%s",&p);  
          for(i=0;i<number2;i++)  
          {  
                  if(p==guaqi[i].name)  
                  {  
                          jiuxu[number1].daxiao=guaqi[i].daxiao;  
                          jiuxu[number1].name=guaqi[i].name;  
                          jiuxu[number1].youxian=guaqi[i].youxian;  
                          break;  
                  }  
                  else   continue;  
          }  
          number1++;  
          for(i=0;i<number2;i++)  
          {  
                  guaqi[i].daxiao=guaqi[i+1].daxiao;  
                  guaqi[i].name=guaqi[i+1].name;  
                  guaqi[i].youxian=guaqi[i+1].youxian;  
          }  
          number2--;  
  }  
   
   
   
   
  void   huanchu()  
  {  
          int   a;  
          printf("请你选择需要的交换方式:\n");  
          printf("1.将优先级高的进程调入CPU执行.\n");  
          printf("2.手动将进程挂起.\n");  
          printf("3.将挂起的进程按先入先出的方式调入就绪队列.\n");  
          printf("4.手动将就绪进程调入CPU执行.\n");  
          printf("5.手动将挂起的进程调入就绪队列.\n");  
          scanf("%d",&a);  
          switch(a)  
          {  
          case   1:   huanchua();break;  
          case   2:   huanchub();break;  
          case   3:   huanchuc();break;  
          case   4:   huanchud();break;  
          case   5:   huanchue();break;  
          default:break;  
          }  
  }  
   
   
   
  void   del()  
  {  
          int   i;  
          char   p;  
          printf("\n请输入想要删除的进程名:\n(在以下中选:");  
          for(i=0;i<number2;i++)  
          {  
                  printf("%c   ",guaqi[i].name);  
          }  
          printf(")\n");  
          scanf("%c",&p);  
          for(i=0;i<number2;i++)  
          {  
                  if(p==guaqi[i].name)  
                  {  
                          for(i=0;i<number2;i++)  
                          {  
                                  guaqi[i].daxiao=guaqi[i+1].daxiao;  
                                  guaqi[i].name=guaqi[i+1].name;  
                                  guaqi[i].youxian=guaqi[i+1].youxian;  
                          }                          
                          number1--;  
                          break;  
                  }  
                  else   continue;  
          }  
  }  
   
   
   
   
   
  void   main()  
  {  
          int   n;  
          char   a;  
          n=1;  
          while(n==1)  
          {  
                  printf("\n********************************************");  
                  printf("\n*                               进程演示系统                               *");  
                  printf("\n*         1.创建新的进程             2.查看运行进程         *");  
                  printf("\n*         3.换出某个进程             4.删除某个进程         *");  
                  printf("\n*         5.退出演示系统                                                 *");  
                  printf("\n********************************************");  
                  printf("\n请选择(1~5)");  
                  a=getche();  
                  switch(a)  
                  {  
                  case'1':create();break;  
                  case'2':run();break;  
                  case'3':huanchu();break;  
                  case'4':del();break;  
                  case'5':exit(0);  
                  default:printf("输入有错!\n");break;  
                  }  
                  printf("\n********************************************");  
          }  
  }  
   
  可以运行,只是优先级高的调度出错,不能调入cpu中.(使用换出进程1时) 问题点数:20、回复次数:1Top

1 楼littlefish1981()回复于 2006-07-03 11:35:59 得分 0

你的huanchua()中if(p==jiuxu[i].youxian)//p的定义在哪里??Top

相关问题

关键词

得分解答快速导航

  • 帖主:guojm333

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo