您的位置:

c语言磁盘调度,C语言磁盘调度算法

本文目录一览:

怎样提高C语言的编程能力?

1、学好C语言,你可以很好地应付任何一种编程工具。

2、一定要多上机练习,通过程式了解相关知识。几经反复方得正果。

3、不要把学习C语言当成一种任务,更不要把它看成很难完成的任务。要充满自信,只要是一个智力正常的人都能学好C语言。始终保持游戏的心态,多发现其中的乐趣。当感到编程趣味无穷,那你在电脑方面将前程无量。

4、如果一个程式一时无法弄清楚最后暂时放在一边,过一段时间你可能会从其他的程式中悟出道理。

5、C语言是一个整体,各个方面是有机联系的,要从总体上把握它,不要把它割裂成互不关联的部件。

6、不要完全相信教材(包括本讲义),所有结论最好都上机验证。

怎样学好C语言

1. 工欲善其事,必先利其器

准备工作:一个开发环境,如Turbo C 2.0、Visual C++等开发工具;一本好教材,如谭浩强主编的《C语言程序设计》(第二版)。我当时看的是他的第一版,就为它的简洁、完美所吸引,简直爱不释手,用了两个星期一口气看完。

2. 秘密武器

初学者学习计算机语言要会“读程序”,要对小型的应用型、游戏型程序感兴趣,并模仿去加深对C语言程序设计的理解和操作,只有不断地写程序、调试程序才能得到编写程序的经验和加深对程序的理解,这也是学习编写优秀高级程序的秘密武器。

3. 发扬探索精神

学习C语言程序设计有点像做数学难题,只要我们善于思考,善于探索,发扬探索精神去寻找好的设计思想和方法,才能把C语言的精髓真正地掌握。

备战C语言考试要诀

1. 了解大纲,临阵不乱

各类笔试中,大多数考题是与大纲要求的基本内容一致的,难度不高,但内容十分广泛,应牢固掌握C语言考试大纲要求的基础部分。只有熟悉题型,理解语法、句法,做到心中有数,才能临阵不乱。

2. 善于归纳,强化记忆

对于需要记忆的计算机基础知识和基本概念,如果考试时因此失分就十分可惜。如:C语言中有几种不同的数据类型?运算的优先级别是怎样的?因此我们需要善于归纳这些计算机基础知识,并在理解的基础上强化记忆。

3. 重视实践,善于调试

计算机科学是一门理论性、实践性都很强的学科,对C语言考试的参加者来说,基础理论方面要求不高,而上机试题往往是很多考生不能通过考试的重要原因,因此要勤于实践。

4. 多做练习,查漏补缺

在认真地学完指定用书后,最好再找些试题,认真地测试一下,一则可以检查自己的复习情况;二则可以查漏补缺;三则可以调节心理状况,以备正式考试时沉着冷静、万无一失。

C语言! 求教。

算法设计学过吗,全排列算法。

你想遍历所有送法,只要产生全排列即可。

#include stdio.h

#include math.h

int A[] = {10,1,9,11,19}, N = 4, //N个用户,数组A[1...N]存储N个用户的楼层,A[0]存储送水工所在楼层

MIN = 10000;

//交换元素

void swap(int *a, int *b)

{

int t = *a;

*a = *b;

*b = t;

}

//产生全排列

void func(int n)

{

int i, t = 0;

if(n==N) //递归叶子节点

{

for(i=0; iN; i++) //计算不满意度之和

t += abs(A[i]-A[i+1])*(N-i);

if(MIN t)MIN = t; //更新MIN

return;

}

//递归过程

for(i=n; i=N; i++)

{

swap(A+n, A+i);

func(n+1);

swap(A+n, A+i);

}

}

int main()

{

func(1); //函数调用

printf("%d", MIN);

}

磁盘调度算法SSTF算法 不限制编程语言,可以选用C/C++等

Java版的磁盘调度算法,

其中算法包含

1 先来先服务

 2 最短时间优先

     3 最短时间优先

     4 单向扫描算法

程序是动画演示的,程序以圆模拟磁道,以方块模拟磁头根据算法在界面上演示。

程序运行截图如下图所示:

请用C语言编写一个磁盘读取调度的程序(disk read scheduling)

#include stdio.h

#include string.h

int main()

{

char s[4]="abc",sc='d';//比较的字符串和字符

FILE *fp;

char filename[100],c;

int i=0,n1=0,n2=0;

long fpos,len;

printf("input filename:\n");

gets(filename);//输入文件名称

if((fp=fopen(filename,"r"))==NULL)//打开文件

{

printf("open %s error!\n",filename);

return 1;

}

len=strlen(s);

c=fgetc(fp);

while(!feof(fp))

{

if(c==s[0])//如果第一个字符相等,比较剩下的字符串

{

fpos=ftell(fp);//记住当前文件指针位置

for(i=1;ilen;i++)

{

if(fgetc(fp)!=s[i])//如果不匹配,跳出循环

{

fseek(fp,fpos,0);//重新设置指针位置

break;

}

}

if(i==len)//如果匹配成功,累加数目

n1++;

}

if(c==sc)//与字符sc匹配,累加数目

n2++;

c=fgetc(fp);

}

printf("\n与字符串%s匹配的有%d个\n",s,n1);//输出匹配个数

printf("与字符%c匹配的有%d个\n",sc,n2);

getchar();

return 0;

}

请帮我把这个C语言小程序改为C++的,通过了追加分70+20一定给

#include stdio.h

void main()

{

char algorithm;

float l,m;

int a[100];

int direct,begin,i,j,t,k,n=0;

printf("请输入要调度序列的个数:\n");

scanf("%d",n);

printf("请输入要调度的序列:\n");

for(i=0;in;i++)

{

scanf("%d",a[i]);

}

printf("\n");

for(i=0;in-2;i++)

{

for(j=n-1;j=1;j--)

{

if(a[j]a[j-1])

{

t=a[j];

a[j]=a[j-1];

a[j-1]=t;

}

}

}

/* for(i=0;in;i++)

couta[i]endl;*/

printf("请选择磁盘调度算法,其中s代表scan算法,c代表cscan算法:\n");

//cinalgorithm;

scanf("%c",algorithm);

//以下为scan算法实现磁盘调度

if(algorithm=='s')

{

printf("请输入开始的磁盘序列号:\n");

scanf("%d",begin);

printf("\n");

for(i=0;in;i++)

{

if(a[i]==begin)

k=i;

}

printf("请输入访问方向,其中1为增大方向,0为减小方向:\n");

scanf("%d",direct);

printf("\n");

m=float(n)-1;

if(direct==1)

{

for(i=k;in;i++)

//couta[i]" ";

printf("%d ",a[i]);

for(i=k-1;i=0;i--)

//couta[i]" ";

printf("%d ",a[i]);

//coutendl;

printf("\n");

l=((a[n-1]-a[k])+(a[n-1]-a[0]))/m;

//cout"平均寻道长度为:"lendl;

printf("平均寻道长度为:%d\n",l);

}

else

{

for(i=k;i=0;i--)

//couta[i]" ";

printf("%d ",a[i]);

for(i=k+1;in;i++)

printf("%d ",a[i]);

printf("\n");

l=((a[k]-a[0])+(a[n-1]-a[0]))/m;

printf("平均寻道长度为:%d\n",l);

}

}

//以下为cscan算法实现调度

else

{

//cout"请输入开始的磁盘序列号:"endl;

printf("请输入开始的磁盘序列号:\n");

//cinbegin;

// coutendl;

scanf("%d",begin);

printf("\n");

for(i=0;in;i++)

{

if(a[i]==begin)

k=i;

}

//cout"请输入访问方向,其中1为增大方向,0为减小方向:"endl;

printf("请输入访问方向,其中1为增大方向,0为减小方向:\n");

//cindirect;

//coutendl;

scanf("%d",direct);

printf("\n");

m=float(n)-1;

if(direct==1)

{

for(i=k;in;i++)

printf("%d ",a[i]);

for(i=0;ik;i++)

printf("%d ",a[i]);

printf("\n");

l=((a[n-1]-a[k])+(a[n-1]-a[0])+(a[k-1]-a[0]))/m;

printf("平均寻道长度为:%d\n",l);

}

else

{

for(i=k;i=0;i--)

printf("%d ",a[i]);

for(i=n-1;ik;i--)

printf("%d ",a[i]);

printf("\n");

l=((a[k]-a[0])+(a[n-1]-a[0])+(a[n-1]-a[k+1]))/m;

printf("平均寻道长度为:%d\n",l);

}

}

}