老师给的程序实验,但是我c语言不太会,这个程序是有很多错误的,能不能有大佬帮忙把错误改正。感谢大佬们
二、实验内容
实现下列内存分配算法:首次适应算法、最佳适应算法、最坏适应算法
三、实验程序
#include<stdio.h>
#define L10
Typedef struct LNode
{int startaddress;
Int size;
Int state;
} LNode;
LNode
P[L]={{0,128,0},{200,256,0},{500,512,0},{1500,1600,0},{5000,150,0}};
Int N=5; int f=0;
Void print()
{ int i;
printf(“起始地址 分区 状态\n”);
for(i=0;i<N;i++)
printf(“%3d %8d %4d\n”,P[i].startaddress,P[i].size,P[i].state);
}
Void First()
{ int i,l=0,m;
printf(“\n 输入请求分配分区的大小:”);
scanf(“%d”,&m);
for (i=0;i<N;I++)
{ if (P[i].size<m)
Continue;
else if (P[i].size==m)
{ P[i].state=1;
l=1;
break;
}
else
{ P[N].startaddress=P[i].startaddress+m;
P[N].size=P[i].size-m;
P[i].size=m; P[i].state=1;
l=1; N++;
break;
}
}
if (l==1||i<N )
{ printf(“地址成功分配\n\n”);
printf(“地址分配成功后的状态:\n”);
print();
}
else
printf(“没有可以分配的地址空间\n”);
}
viod Worst()
{ int i,t=0,l=0,m;
int a[L];
printf(“\n 输入请求分配分区的大小:”);
sxanf(“%d”,&m);
for (i=0;i<N;i++)
{ a[i]=0;
if (P[i].size<m)
continue;
else if (P[i].size==m)
{ P[i].state=1;
l=1;
break;
}
else
a[i]=P[i].size-m;
}
if (l==0)
{ for(i=0;i<N;I++)
{ if(a[i]!=0)
t=i;
}
for (i=0;i<N;i++)
{ if(a[i]!=0 && a[i]>a[t])
t=i;
}
P[N].startaddress=P[t].startaddress+m;
P[N],size=P[t].size-m;
P[t].size=m; P[t].state=1;
l=1; N++;
}
if (l==1 || i<N)
{ printf(“地址成功分配\n\n”);
printf(“地址分配成功后的状态:\n”);
print();
}
else
printf(“没有可以分配的地址空间\n”);
}
void Best()
{ int i,t=0,l=0,m;
int a[L];
printf(“\n 输入请求分配分区的大小:”);
sxanf(“%d”,&m);
for (i=0;i<N;i++)
{ a[i]=0;
if (P[i].size<m)
continue;
else if (P[i].size==m)
{ P[i].state=1;
l=1;
break;
}
else
a[i]=P[i].size-m;
}
if (l==0)
{ for(i=0;i<N;I++)
{ if(a[i]!=0)
t=i;
}
for (i=0;i<N;i++)
{ if(a[i]!=0 && a[i]<a[t])
t=i;
}
P[N].startaddress=P[t].startaddress+m;
P[N],size=P[t].size-m;
P[t].size=m; P[t].state=1;
l=1; N++;
}
if (l==1 || i<N)
{ printf(“地址成功分配\n\n”);
printf(“地址分配成功后的状态:\n”);
print();
}
else
printf(“没有可以分配的地址空间\n”);
}
void main()
{ int k=0;
printf(“动态分区分配算法:”);
while(k!=5)
{ printf(“\n********************主菜单********************”);
printf(“\n1、首次适应算法\n、”);
printf(“\n2、最坏适应算法\n3、最佳适应算法”);
printf(“\n4、退出\n”);
printf(“请选择算法:”);
scanf(“%d”,&k);
switch (k)
{ case 1:
printf(“\n 初始状态为:\n”);
print();
First();
continue;
case 2:
printf(“\n 初始状态为:\n”);
print();
CirFirst();
continue;
case 3:
printf(“\n 初始状态为:\n”);
print();
Worst();
continue;
case 4:
printf(“\n 初始状态为:\n”);
print();
Best();
continue;
case 5:
break;
default printf(“选择错误,请重新选择。\n”);
}
}
}