文件管理计算机实验报告(范文)
第 页 PAGE \* Arabic 1第 页 PAGE \* Arabic 1
江西师范大学计算机信息工程学院学生实验报告
专业__ 计算机科技非师范 姓名_ 曾凯 学号__ 0908061246 日期__
课程名称
计算机网络
实验室名称
实验名称
文件管理
指导教师
谢旭升
成绩
实验目的
利用C语言,编程实现先来先服务 、最短寻道优先、电梯算法中的一个算法,编写和调试简单的文件操作程序。
磁道服务顺序从指定的文本文件(TXT文件)中取出;
输出:第一行:磁道的服务顺序;第二行:显示移动总道数。
实验原理和内容
实验过程 代码及结果分析
先来先服务
#include
#include
#define n 8/*假定要访问的柱面共8个*/
int fcfs(int a[n],int pos)
{
int i,count=0;
for(i=0;i
{
count=count+abs(pos-a[i]);
pos=a[i];
}
return count;
}
int main(int argc, char *argv[])
{
int a[n],i,count,pos;
printf("请输入要访问的柱面序列:\n");
for(i=0;i
scanf("%d",&a[i]);
printf("请输入磁盘当前位置:\n");
scanf("%d",&pos);
count=fcfs(a,pos);
printf("磁头移动的距离为:%d\n",count);
printf("磁头平均移动次数为:%d\n",count/n);
printf("依次访问序列为:\n");
for(i=0;i
printf("%4d",a[i]);
return 0;
}
最短寻道优先
#include
#include
#define n 8/*假定要访问的柱面共8个*/
int sstf(int a[n],int pos)
{
int count=0,i,j,x;
for(i=0;i
{
for(j=0;j
if(abs(a[j]-pos)>abs(a[j+1]-pos))
{
x=a[j];
a[j]=a[j+1];
a[j+1]=x;
}
}
for(i=0;i
{
count=count+abs(pos-a[i]);
pos=a[i];
}
return count;
}
int main(int argc, char *argv[])
{
int a[n],i,count,pos;
printf("请输入要访问的柱面号:\n");
for(i=0;i
scanf("%d",&a[i]);
printf("请输入磁盘当前位置:\n");
scanf("%d",&pos);
count=sstf(a,pos);
printf("磁盘访问距离为:%d\n",count);
printf("平均移动次数:%d\n",count/n);
printf("依次访问的序号为:\n");
for(i=0;i
printf("%4d",a[i]);
return 0;
}
电梯算法
#include
#include
#define n 8/*假定要访问的柱面共8个*/
int double_scan(int a[n],int pos)
{
int count=0,i,j,x;
i=n;
while(i>0)
{
for(j=0;j
if(a[j]>a[j+1])
{
x=a[j];
a[j]=a[j+1];
a[j+1]=x;
}
i--;
}
for(i=0;i
if(pos
break;
for(x=i;x
{
count=count+abs(pos-a[x]);
pos=a[x];
printf("%4d",a[x]);
}
for(j=i-1;j>=0;j--)
{
count=count+abs(pos-a[j]);
pos=a[j];
printf("%4d",a[j]);
}
retur