改写C程序
#include <stdio.h> #define m 10 #define n 10 #define minisize 100 struct { float address; float length; int flag; }used_table[n]; struct {float address; float length; int flag; }free_table[m]; void allocate(char J,float xk) {int i,k; float ad; k=-1; for(i=0;i<m;i++) if(free_table[i].length>=xk&&free_table[i].flag==1) if(k==-1||free_table[i].length<free_table[k].length) k=1; if(k==-1) {printf("无可用空间\n"); return; } if(free_table[k].length-xk<=minisize) {free_table[k].flag=0; ad=free_table[k].address; xk=free_table[k].length; } else {free_table[k].length=free_table[k].length-xk; ad=free_table[k].address+free_table[k].length; } i=0; while(used_table[i].flag!=0&&i<n) i++; if (i>=n) {printf("无表目填写已分分区,错误\n"); if(free_table[k].flag==0) free_table[k].flag=1; else free_table[k].length=free_table[k].length+xk; return; } else {used_table[i].address=ad; used_table[i].length=xk; used_table[i].flag=J; } return; } reclaim(J) {int i,k,j,s,t; float S,L; s=0; while((used_table[s].flag!=J||used_table[s].flag==0)&&s<n) s++; if(s>=n) {printf("找不到该作业\n"); return; } used_table[s].flag=0; S=used_table[s].address; L=used_table[s].length; j=-1;k=-1;i=0; while(i<m&&(j==-1||k==-1)) {if(free_table[i].flag==0) {if(free_table[i].address+free_table[i].length==S)k=i; if (free_table[i].address==S+L)j=i; } i++; } if(k!=-1) if(j!=-1) {free_table[k].length=free_table[j].length+free_table[k].length+L; free_table[j].flag=0; } else free_table[k].length=free_table[k].length+L; else if(j!=-1) {free_table[j].address=S; free_table[j].length=free_table[j].length+L; } else { t=0; while(free_table[t].flag==1&&t<m) t++; if(t>=m) {printf("主存空间区表没有空间,回收空间失败\n"); used_table[s].flag=J; return; } free_table[t].address=S; free_table[t].length=L; free_table[t].flag=1; } return; } void main(void) {int i,a; float xk; char J; free_table[0].address=10240; free_table[0].length=102400; free_table[0].flag=1; for(i=0;i<m;i++) free_table[i].flag=0; for(i=0;i<n;i++) used_table[i].flag=0; while(i) {printf("选择功能项(0-推出,1-分配主存,2-回收主存,3-显示主存)\n"); printf("选择功能项(0-3):"); scanf("%d",&a); switch(a) {case 1: printf("输入作业名J和作业所需长度xk:"); scanf("%*c%d%f",&J,&xk); allocate(J,xk); break; case 2: printf("输入要回收分区的作业名\n"); scanf("%*c%c",&J); reclaim(J); break; case 3: printf("输出空闲区表:\n起始地址 分区长度 标志\n"); for(i=0;i<m;i++) printf("%5.0f%10.0f%6d\n",free_table[i].address,free_table[i].length,free_table[i].flag); printf("按任意键,输出已分配区表\n"); getch(); printf("输出以分配区表:\n起始地址 分区长度 标志\n"); for(i=0;i<n;i++) if(used_table[i].flag!=0) printf("%6.0f%9.0f%6c\n",used_table[i].address,used_table[i].length,used_table[i].flag); else printf("%6.0f%9.0f%6d\n",used_table[i].address,used_table[i].length,used_table[i].flag); break; ("没有给选项\n"); } } }
您好我是网吧的请问我在客户机器装2000系统是不是也占用内存比较多啊,但是2000不那么容易死机,请高手指教!
答:其实我也是女生了,所以不知道是否可以自诩对女性心理比较了解。 女生忽冷忽热的原因大抵有以下的情况吧: 1:性格问题:现在因为大都都是独生子女,所以比较不习惯关心...详情>>
问:姐妹之间的矛盾 我和我妹都在读高三,但不同学校,她总是打电话哭诉,说她不开心,不...
答:先和班主任老师了解一下他在学校的情况,看看问题出在哪里?必要时看看心理医生,然后和她谈好,可以转到你的学校来,转学后能保证一切顺利吗?到时再怨天尤人可没机会了。详情>>