本文目录一览:
- 1、怎样提高C语言的编程能力?
- 2、C语言! 求教。
- 3、磁盘调度算法SSTF算法 不限制编程语言,可以选用C/C++等
- 4、请用C语言编写一个磁盘读取调度的程序(disk read scheduling)
- 5、请帮我把这个C语言小程序改为C++的,通过了追加分70+20一定给
怎样提高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);
}
}
}