c语言模拟迷宫程序(精选9篇)
1.c语言模拟迷宫程序 篇一
程序员之路──如何学习C语言
学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C语言是本文的主题。请注意,即使是“最小的代价”,也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着你需要经历艰苦的过程。
一、要读就读好书,否则不如不读
所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。
大名鼎鼎的谭浩强教授出了一本《C语言程序设计》,据说发行量有超过400万,据我所知,很多学校都会推荐这本书作为C语言课本。虽然本人的名字(谭浩宇)跟教授仅仅一字之差,但我是无比坚定地黑他这本书的。这本书不是写给计算机专业的学生的,而是给那些需要考计算机等级考试的其它专业学生看的。这本书的主要缺点是:例子程序非常不专业,不能教给你程序设计应该掌握的思考方式;程序风格相当地不好,会让你养成乱写代码的恶习;错误太多,曾经有人指出过这本书的上百个错误,其中不乏关键的概念性错误。好了,这本书我也不想说太多了,有兴趣大家可以百度一下:)
Kernighan和Ritchie的《The C Programming Language》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。另外,即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。《C语言参考手册》就是《C Reference Manual》,是C语言标准的详细描述,包括绝大多数C标准库函数的细节,算得上是最好的标准C语言的工具书。顺便提一句,最新的《C程序设计语言》是根据C89标准修订的,而《C语言参考手册》描述的是C99标准,二者可能会有些出入,建议按照C99标准学习。还有一本《C和指针》,写得也是相当地不错,英文名是《Pointers on C》,特别地强调指针的重要性,算是本书的一个特点吧。不过这本书并不十分适合初学者,如果你曾经学过C语言,有那么一些C语言的基础但又不是很扎实,那么你可以尝试一下这本书。我相信,只要你理解了指针,C语言便不再神秘。
如果你已经啃完了一本C语言教材,想要更进一步,那么有两本书你一定要看。首先是《C Traps and Pitfalls》(中译名《C陷井与缺陷》),很薄的一本小册子,内容非常非常地有趣。要注意一点,这本书是二十多年前写成的,里面提到的很多C语言的缺陷都已被改进,不过能够了解一些历史也不是什么坏事。然后你可以挑战一下《Expert C Programming》(中译名《C专家编程》),书如其名,这本书颇具难度,一旦你仔细读完并能透彻理解,你便可以放心大胆地在简历上写“精通C语言”了。
切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果你看不懂,那你一定是缺失了某些必需基础知识。此时,你要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。
二、Unix/Linux还是Windows,这是个很大的问题
不同的编程环境会造就出不同思维的程序员。Windows的程序员大多依赖集成开发环境,比如Visual Studio,而Unix程序员更加钟爱Makefile与控制台。显而易见,集成开发环境更容易上手,在Windows上学习C语言,只需要会按几个基本的Visutal C++工具栏按钮就可以开始写Hello, World!了,而在Unix下,你需要一些控制台操作的基本知识。有人也许认为Unix的环境更简洁,但习惯的力量是很大的,大家都很熟悉Windows的基本操作,而为了学习C语言去专门装一个Unix系统,似乎有点不划算。
对于一个只懂得Windows基本操作、连DOS是什么都不知道的新手而言,尽快做一些有趣而有意义的事情才是最重要的。用C语言写一个小程序远比学习ls、cat等命令有趣,况且我们要专注于C语言本身,就不得不暂时忽略一些东西,比如编译链接的过程、Makefile的写法等等等等。
所以我建议初学者应该以Visual C++ 6.0(不是VisualC++.NET)或者Dev C++作为主要的学习环境,而且千万不要在IDE的使用技巧上过多纠缠,因为今后你一定要转向Unix环境的。Visual C++ 6.0使用很方便,调试也很直观,但其默认的编译器对C标准的支持并不好,而Dev C++使用gcc编译器,对C99的标准都支持良好。使用顺带提一下,很多大学的C语言课程还在使用Turbo C 2.0作为实验环境,这是相当不可取的,原因其一是TC 2.0对C标准几乎没有支持,其二是TC 2.0编译得到的程序是16位的,这对今后理解32位的程序会造成极大的困扰(当然,用djgpp之类的东西可以使TC 2.0编译出32位程序,不过那过于复杂了)。
等你学完一本C语言的教材,你一定要转向Unix平台继续学习,几乎所有的C语言高级教程都是基于Unix平台的(比如《C专家编程》)。转变的过程是痛苦的,你需要面对的是各种纷繁复杂的命令,完全不同于Windows平台的思考方式,但是这种痛苦是值得的。Unix与C是共生的,Unix的思考方式和习惯更加符合C语言的思考方式和习惯。在Unix下,你可以找到无数优秀的源代码供你尽情阅读,你可以方便地查看某个库函数的联机手册,还可以看到最优秀的代码风格
归结起来就是一句话:初学C语言,建议使用Windows系统和集成开发环境,在准备向“高手”方向努力时,请先转向Unix平台。
三、万事俱备,你就是东风
书已选定,环境配置完成,正所谓万事俱备,只欠你自己的努力了。请从书的前言开始,仔细地阅读手头的教材,很多人看书喜欢直接从第一章开始看,这是错误的做法。前言是作者对整本书的大体介绍,作者一般会告诉你需要什么基础才能够顺利阅读本书,这可以帮助你检验自己的基础知识是否已经具备。看完前言,还要浏览一下目录,了解一下书的整体结构,顺便给自己安排一下学习计划。
学习C语言,必需注意每一个细节,书上的例子代码一定要自己亲自敲一遍,编译执行输出都跟书上说的一致才能算是学完了一个例子,如果不一致,就要仔细找原因。出了书本上有的例子,自己还要“创造”一些例子,比如学习运算符优先级的时候,可以写几个相同的表达式,在不同的位置加上括号,看看有哪些不同的行为,比如*p++和(*p)++,又比如a = b == c、(a = b)== c和a =(b == c)等等。自己抄的书上的例子以及改造之后的例子,还有自己“创造”的例子,都应该仔细地归类保存,并且要在源代码中写上简短的注释,阐述这个例子的意图。
例子之后就是习题了,我建议初学者把所有的习题都独立做一遍,然后对照答案的代码,看看自己的代码有那些不足,再试着修改自己的代码。很多人不重视习题,这是极大的错误,因为作者通常会在习题中说明一些重要的道理,而不是单纯地检验前面的知识。
也许你认为这样学习太慢,其实不然。学得细致就不用走回头路,等你学到后面才发现自己前面没搞清楚,那才是真的得不偿失。一般说来,整本书读完,你应该完成数千行乃至上万行的代码,无论是原封不动照抄书上的,还是自己心血来潮写就的,都是今后继续学习的一笔财富。以我自己举例,阅读《Windows核心编程》时(我只阅读了3/4的内容),除了抄书上的代码,还自己写了很多例子,一共有5574行(用unix下的wc工具统计),时隔多日,我早已记不清Windows的系统编程了,但只要花几分钟翻出以前的代码看看,便会重新了然于胸。所谓好记性不如烂笔头,就是这个道理。
仔细读书、认真抄写源代码、独立完成习题外加更进一步的实验,最后将所有的代码留下,成为自己的经验和财富,绝对的辛苦,也绝对的事半功倍。当然,这种方式只适合学习需要精通的技术,如果不是学习C语言,你还要具体情况具体分析。
写到最后,还有非常非常重要的一点没有提及──代码风格,从最开始学习就必须强迫自己模仿最优秀的代码风格。
2.c语言模拟迷宫程序 篇二
《C语言程序设计》作为计算机专业的基础课, 已经成为一门必修的语言课程, 在整个语言课程体系中占有非常重要的地位。在C语言教学过程中, 从客观上讲, 教师的教法和学生的学法的差异, 对教学效果都会产生很大的影响。针对教师的教法和学生学习语言类课程的学法, 结合近几年来的教学经验和教学体会, 把一些经验和方法总结出来, 希望能对C语言课程的教学和学习有所帮助。
1 分析教学中存在的问题
《C语言程序设计》是一个逻辑性很强的课程。有些问题是将数学知识转化用c语言来实现, 这就要求学生首先要能够理解和掌握数学知识, 才能将其转化用c语言来实现。在调试程序时, 提示的信息都是用英语给定, 那么也就要求学生掌握最基本的英语单词, 有些甚至是计算机专业英语, 能将英语句子翻译为汉语, 才能够对程序加以修改。学生在心里认为c语言难学, 没有积极学习的主动性, 导致上课时没兴趣, 不能专心听讲, 布置的作业无从下手, 在实践课中, 看到要编写的程序题目, 理不出头绪。
2 涉及新的知识要有导入
在教学的过程中, 要将新的知识点, 要有很自然的导入语, 引导学生思考问题和解决问题的方法。例如:scanf (“%d”, &a) ;只能从键盘接受一个整型数, 现在要输入40名学生的成绩, 如何通过一个s canf函数来实现, 难道是要定义40个变量, 那如果要接受100个数呢?更多的呢?为了解决诸如此类的问题我们采用数组来实现。这样也就引导学生思路跟着教师, 给他们提出问题, 在给出解决问题的办法。
3 举一反三
给定一个例子时, 将涉及到的所有内容都要讲到。各种形式, 可能出现的错误都要指定。例如:现在要求n!我们可以给定一下几种形式:
一个例子可以给出多种方法来实现, 在这只给出6中形式, 从这6种中, 就可以看到初值不同, 语句的书写顺序不同。通过一个例子, 让学生能理解各种形式, 遇到诸如此类问题时, 就可以迎刃而解。
4 与实践教学相结合
程序设计课程具有很强的实践性, 对于计算机语言课程的教授不应仅仅是传授知识, 应该以培训能力为主。C语言的内容繁多, 在有限的课时内不可能也不必要面面俱到, 所以必须突出重点, 突出实用性, 关键在于教会学生正确运用C语言编写程序。应始终坚持以应用为中心, 以算法为基础, 以培养学生的实践能力为核心, 突出技术实用性和再学习能力的培养。
摘要:《C语言程序设计》是高职高专院校计算机专业基础课程之一, 其教学效果直接影响学生在计算机方面的应用, 教学中出现的听得懂、编不出程序的现象, 探究问题存在的原因, 从教学的教学内容和方法方面进行了探讨, 提出只有教师的教学内容和教学方法进行合理的组合, 激发学生的学习兴趣才能达到良好的教学效果。
关键词:教学方法,案例教学,启发教学,教学效果
参考文献
[1]朱健, 庞倩超.C语言程序设计案例教程.全国高职高专教育精品规划教材:北京:交通大学出版社.
[2]郭芹.对高职高专计算机专业程序设计教学的思考.中国科技信息.2008 (1) .
[3]谭浩强.C语言程序设计教程.北京:高等教育出版社.
3.浅探《C语言程序设计》教学 篇三
关键词:C语言;项目化教学;教学方法
中图分类号:TP312.1-4 文献标识码:A 文章编号:1674-7712 (2014) 18-0000-01
《C语言程序设计》作为计算机专业的基础课,在整个课程体系中占有重要地位。在C语言教学过程中,教师的教学方法和学生的理解接受能力的差异,对教学效果都会产生直接的影响。总结多年来的教学经验和教学体会,结合学生在学习程序设计类课程的思维规律和模式,把一些经验和方法总结出来,希望能对C语言教学有所帮助。
一、现行教学和学习中存在的问题
现行教学中理论课与实践课相对分离,不能相互促进。理论课中往往只注重对教材知识的分析和灌输,而在实践课程中,老师很难监控到每个学生,了解他们是否都在认真编写、调试程序。这就造成理论课没有起到为实践课打基础的作用,实践课也没有起到巩固、应用理论课的作用。《C语言程序设计》是一个逻辑性很强的课程。学生在面对具体的程序设计时遇到的问题与教材中的内容相距甚远,这使大多数同学感到无从下手。这其中的原因可以分成两类:一方面目前高校使用的大多数教材中,结构都基本相同。在每一章介绍完了概念之后,提供一些例题解释相关概念的使用方法,并在章节结束后针对本章中出现的内容提供一些练习题。考试也主要是测试学生对于教材内容的掌握程度,而与实际应用相距较大。这种考试实际上主要是测试学生对书本中的基本知识的掌握程度,而忽略了对学生解决实际问题的能力的培养。另一方面为了应付考试,学生更多注意的是教材中的典型例题与老师指定的重点内容,对于程序的系统概念没有真正理解,特别是没有程序整体设计的概念。这样做的结果就是学生在学习时一切围绕老师讲课的内容,特别是老师讲授的例题。学生在学习的过程中,没有注意如何综合运用相关内容来解决具体问题,导致学生在学完程序设计课程进入应用阶段时,面对具体的专业设计要求无从下手。
二、提高教学效果的方法和途径
(一)明确课程目标。本课程的目标主要是提高学生解决实际问题的能力,适应社会需求。对C语言程序设计课程的教学而言,强调实践性是在教学中特别重要的问题。老师的教学不应仅仅是传授知识,应该以培养学生的实际应用能力为主。C语言的内容繁多,在有限的课时内不可能也不必要面面俱到,所以必须突出重点,突出实用性,关键在于教会学生正确运用C语言编写程序,一些细节、具体规则和进一步的知识可以让学生在今后的应用中来不断学习和掌握。教师应始终坚持以应用为中心,以算法为基础,以培养学生的实践能力为核心,突出技术实用性和再学习能力的培养。
(二)进行教学改革。1.教学内容改革。高职学校学生的培养就是要直接面对社会需求,招之即能用。因此,程序设计课程要以社会对编程能力的需求和技术发展为依据,调整教学大纲和教学内容,以适应技术岗位能力要求,设计课程体系。在课程设置与建设中,要充分体现教学内容在训练和提高学生实践能力方面的要求,强化学生的实际开发和应用能力。总结本人多年的教学经验,结合其他老师成功的教学方法,采用项目化教学方法可以达到很好的效果。这个项目应具有以下几个特点:(1)实用性。本项目就是一个具体的实际需求,是解决现实性中一个实际问题而设计,这样也能提高学生的兴趣和热情;(2)完整性。本项目的程序设计是系统的、完整的,要能全面运用整个课程学习的知识,案例的设计贯穿整个课程的学习,随着课程的学习不断完善。
2.改变教学思想和方法。培养学生对C语言的兴趣及正确的思维模式。《C语言程序设计》注重由设计算法到书写程序并进行调试的整个过程,显得抽象、复杂,这也是大多数学生抱怨程序设计太难、太深奥、不好学的主要原因。在教学过程中,先介绍项目的整个程序设计框架,目的是使学生先对程序有个初步的印象,再结合教材,简单介绍该例子中用到的语句,让学生对该语言的学习有一个大概的了解,避免学生对学习语言望而生畏。整个教学过程中应该把“解题思路、方法和步骤”当作授课的重点,从而让学生明白如何分析、解决实际问题,逐渐培养学生进行程序设计的正确思维模式。计算机语言程序设计中算法是其灵魂,是教学重点,也是教学难点,而语言只是表示形式。没有正确的算法,计算机将解决不了任何问题。对于C语言所涉及到的算法,应进行部分精讲多练。通过案例分析,重点讲解程序设计的思想和方法,辅以語言知识的介绍,将课程内容分为若干个主题,以项目程序设计为贯穿各主题的主线。每个主题的教学过程由“要点讲解”、“练习/上机实践”和“疑难解答”三个阶段组成,然后提出项目中的问题,以学生独立完成为主,教师只提供必要的辅导,培养学生探索问题和解决问题的能力,更有利于创新能力的培养。整个课程教学围绕一个工程项目进行,通过逐步拓展的实训项目和设计,将每一阶段的学习进行小结性的贯穿与能力提高。将C的知识点都溶化到项目的程序编写中。
3.改革课程考核方式。(1)平时上机训练时给学生留一些编程习题,每次根据学生编写情况进行测评并占据期末总成绩30%;(2)期末前,要求学生完成本课程项目的整体设计,考核学生综合解决问题的能力,占据期末总成绩30%;(3)期末进行理论考试,占期末总成绩的40%。
(三)展示学生作品,激发学生的学习欲望。计算机软件课程具有多样性、复杂性和求异性特点,我们要针对每个学生任务完成的情况,让同学们展示自己的学生成果,及时肯定学生的成绩,这样会有利于激发学生的学习热情,保持学生的学习兴趣,对学生的后续学习将产生强大的动力和自信心。
(四)培养学生的自学能力和创造性。学生学习计算机语言的最终目的是编写满足实际需求的程序,所以在教学中教授的不仅仅是具体语言的语法知识,更重要的是通过这门语言学习,培养学生遇到实际问题自己分析问题、解决问题的能力。我们可以通过给学生布置作业的形式让同学们自学,老师既要要求学生独立思考、自主学习,又要鼓励学生间进行协作学习。教师可以分配一些比较复杂的问题,由几个学生组成一个小组合作解决,这样同学们可以互相探讨学习方法,协作解决一些遇到的问题。通过解决问题,锻炼学生综合应用知识的能力、培养其创造性和合作精神。
参考文献:
4.c语言初级小程序 篇四
#include
#include
int main()
{
int i,a;
for(i=101;i<200;i++)
{for(a=2;a<=sqrt(i);a++)
if(i%a==0)
break;
if(i%a!=0)
printf(”%dn“,i);
}
return 0;
}
2.输入乘法口诀:
#include
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
printf(”%d*%d=%d “,j,i,j*i);
printf(”n“);
}
return 0;
}
3.判断1000-2000之间的闰年:
#include
int main()
{
int i;
for(i=1000;i<=2000;i++)
if((i%4==0&&i%100!=0)||i%400==0)
printf(”%dn“,i);
return 0;
5.c语言程序设计基础 篇五
一、选择题(2’*20=40’)
1、c程序由构成。
A.函数B.命令C.程序D.表达式
2、以下选项中合法的变量名是
A.#y2B.a A.floatB.charC.intD.double4、在我们使用的turboC中,一个int型数据在内存中占个字节 A.0B.1C.2D.45、若有定义:int a=8,b=5,c;执行语句c=ab+0.4后c= A.1.4B.1C.2.0D.26、在c语言中,char型数据在内存中的存储形式是 A.补码B.ASSCIIC.原码D.反码 1、函数方法: #include scanf(“%d”,&a[i]);sort(a,10);printf(“The sorted array:n”);for(i=0;i<10;i++) printf(“%d ”,a[i]);printf(“n”);} void sort(int array[],int n){int i,j,k,t; for(i=0;i {k=i; for(j=i+1;j if(array[j] k=j; t=array[k];array[k]=array[i];array[i]=t;} } 2、数组方法:实验6_1 #include printf(“enter data:n”); for(i=1;i<=10;i++) {printf(“a[%d]=”,i); scanf(“%d”,&a[i]); } printf(“n”); printf(“The orginal numbers:n”); for(i=1;i<=10;i++) printf(“%5d”,a[i]); printf(“n”); for(i=1;i<=9;i++) {min=i; for(j=i+1;j<=10;j++)if(a[min]>a[j])min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf(“nThe sorted numbers:n”); for(i=1;i<=10;i++) printf(“%5d”,a[i]); printf(“n”);} 3、指针方法:(教材209 例题8.9)#include scanf(“%d”,p++);p=a;sort(p,10);for(p=a,i=0;i<10;i++) {printf(“%d ”,*p);p++;} printf(“n”);} void sort(int x[],int n){int i,j,k,t; for(i=0;i {k=i; for(j=i+1;j if(x[j]>x[k])k=j; if(k!=i) {t=x[i];x[i]=x[k];x[k]=t;} } } 二、素数算法: 1、筛选法求素数(教辅41.1题)#include for(i=1;i<=100;i++) a[i]=i; a[1]=0; for(i=2;i for(j=i+1;j<=100;j++) {if(a[i]!=0 && a[j]!=0) if(a[j]%a[i]==0) a[j]=0; } printf(“n”); for(i=2,n=0;i<=100;i++) { if(a[i]!=0) {printf(“%5d”,a[i]); n++; } if(n==10) {printf(“n”); n=0; } } printf(“n”);} 2、(1)For循环方法: #include printf(“please enter a integer number:”); scanf(“%d”,&m); k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>k)printf(“%d is a prime number.n”,m); else printf(“%d is not a prime number.n”,m);} (2)求100~200之间素数: # include for(m=101;m<=200;m=m+2) { k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>=k+1) {printf(“%d ”,m); n=n+1; } if(n%10==0)printf(“n”); } printf(“n”);} 3、函数方法:实验7_1(教辅63.3题)#include int n; printf(“ninput an integer:”); scanf(“%d”,&n); if(prime(n)) printf(“n %d is a prime.n”,n); else printf(“n %d is not a prime.n”,n);} int prime(int n) {int flag=1,i; for(i=2;i if(n%i==0) flag=0; return(flag); } 三、最值问题: 1、函数方法,两个数比较大小(教材144.例题7.2)#include int a,b,c; scanf(“%d,%d”,&a,&b); c=max(a,b); printf(“max is %dn”,c);} int max(int x,int y){ int z; z=x>y?x:y; return(z);} 2、二维数组,求出其中值最大的那个元素值:(教材123.例题6.5)#include int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf(“max=%d,row=%d,colum=%dn”,max,row,colum);} 3、有三个字符串,要求找出其中最大者(教材136.例题6.9)#include char string[20]; char str[3][20]; int i; for(i=0;i<3;i++) gets(str[i]); if(strcmp(str[0],str[1])>0) strcpy(string,str[0]); else strcpy(string,str[1]); if(strcmp(str[2],string)>0) strcpy(string,str[2]); printf(“nthe largest string is:n%sn”,string);} 4、函数方法,四个整数,找出最大值:(教材152.例题7.5)#include int a,b,c,d,max; printf(“Please enter 4 interger numbers:”); scanf(“%d %d %d %d”,&a,&b,&c,&d); max=max_4(a,b,c,d); printf(“max=%d n”,max);} int max_4(int a,int b,int c,int d){int max_2(int a,int b);int m; m=max_2(a,b);m=max_2(m,c);m=max_2(m,d);return(m);} int max_2(int a,int b) 这也可以这么写 int max_2(int a,int b){return(a>b?a:b); {if(a>b)return a;} else return b;} 四、辗转相除问题:(最大公约数最小公倍数问题) 1、一般法,求最大公约数和最小公倍数(教辅26页,第一题)#include int p,r,n,m,temp; printf(“请输入两个正整数n,m:”); scanf(“%d,%d,”,&n,&m); if(n { temp=n; n=m; m=temp; } p=n*m; while(m!=0) { r=n%m; n=m; m=r; } printf(“它们的最大公约数为:%dn”,n); printf(“它们的最小公约数为:%dn”,p/n);} 2、函数法: void main(){int hcf(int,int); int lcd(int,int,int); int u,v,h,l; scanf(“%d,%d”,&u,&v); h=hcf(u,v); printf(“H.C.F=%dn”,h); l=lcd(u,v,h); printf(“L.C.D=%dn”,l);} int hcf(int u,int v){int t,r;if(v>u) {t=u;u=v;v=t;} while((r=u%v)!=0) {u=v; v=r;} return(v);} int lcd(int u,int v,int h) { return(u*v/h); } 五、有关指针的实验题: 1、实验9-1(输入3个整数,由小到大的顺序排列)(1)#include void swap(int *p1,int *p2) {int p; p=*p1;*p1=*p2;*p2=p; }(2)#include void swap(char *p1,char *p2){char p[20]; strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);} 2、实验9_2(将n个数,输入时顺序的逆序排列)#include scanf(“%d”,&num[i]);p=&num[0];sort(p,n);printf(“Now,the sequence is:n”);for(i=0;i printf(“%d ”,num[i]);printf(“n”);} void sort(char *p,int m){int i;char temp, *p1,*p2;for(i=0;i {p1=p+i; p2=p+(m-1-i); temp=*p1; *p1=*p2; *p2=temp; } } 3、实验9_3(写一函数,求一个字符长度)#include int length(char *p) {int n;n=0;while(*p!=') {n++; p++; 关键词:C语言,程序,算法,教学 1 教学对象分析 根据多年教学经历, 发现高职的学生存在如下几个特点: 1) 学习目的基本明确但不清晰、不具体; 2) 学习缺乏主动性、探究性、联系性; 3) 学习兴趣不高; 4) 学习方法欠缺; 5) 英语等基础普遍较差。 有压力才有动力, 为了让学生明确学习目标, 针对高职学生的如上特点, 我对学生提出如下几点要求: 1) 积极参加计算机二级等级考试 (C语言) ; 2) 鼓励C语言学得较好的学生参加程序员、软件分析师等各种相关考证; 3) 鼓励C语言学得较好的学生参加自考本科计算机专业。 2 注重培养学生的学习兴趣 大家都知道“兴趣是最好的老师”[1], 然而C语言这门课程本身有一定的难度, 再加上高职学生自身的特点, 要让学生对这门课程感兴趣就特别重要。 首先让学生明确这门课程的重要性。让学生明确C语言的基础地位显著, 实用前景广阔。让学生明确该课程是一门专业基础课程, 为后续的系列课程 (例如:如数据结构、JAVA等) 奠定良好的基础。另外从实用角度讲告诉学生C语言程序设计功能强大:目前大部分的操作系统、计算机控制系统、嵌入式系统及工业控制的软件都可以用C语言来完成。让学生感受到C语言程序设计的魅力。 其次是趣味性实例教学。为了极大的调动学生的学习兴趣, 让学生对C语言不再觉得枯燥无谓, 我为学生准备了一些趣味编程实例, 如:“抓肇事司机”、“破译密码”、“体重测量仪”等, 培养学生的学习兴趣, 让大家积极主动、自觉独立地获取知识, 打好学习程序设计语言的基础。 再次我们可以巧妙的运用CAI。C语言有些知识比较抽象, 可能仅仅通过讲解的方式学生还是难以理解, 借助CAI可以帮助学生对知识点的理解。比如在讲递归的时候, 我们可以准备一个汉诺塔的游戏, 让学生上台来玩这个游戏, 让学生在玩游戏的过程中体会到递归的神奇之处, 进而掌握递归的思想和算法, 从而让学生理解C语言之妙。再如我们还可以在教学过程中编写一些小的实用程序, 让学生知道C语言可以学以致用。比如我用Visual C++编写了一个小小的摇奖程序, 操作者可以设置参加摇奖的人数, 然后通过单击“开始”按钮, 就可以进行通过摇奖来挑选学生上台演示了, 结果发现, 学生们兴趣高涨, 而且他们积极都要求用这种“公正”的方法。小小的摇奖程序除了可以活跃课堂气氛, 更重要的是也可以鼓励学生自己编辑一些类似的小程序。 3 注重培养良好的代码风格 笔者认为培养学生的代码风格十分重要, 但是往往被很多老师忽略。代码风格就好比是程序员的书法, 但是又比书法好学得多。培养良好的代码风格对于以后参加工作, 培养团队合作精神都大有帮助。我们得从一开始就告诉学生培养良好的代码风格的重要性, 重视对学生代码风格的培养, 因为坏习惯一旦养成以后就很难以改变, 而且会对以后的学习和工作都会带来很大的不便和障碍。那么如何才能培养良好的代码风格?首先在教材的选择上就得把好关。我们得选择代码风格好的教材, 否则后患无穷。其次在教学过程中, 得确保教师自己的代码风格的良好性。再着我们在教学过程中还得不断地提醒和修改学生的不良代码风格, 直到都养成良好的代码风格为止。相信在我们不断的练习和坚持下, 每位学生都能养成较好的程序代码风格。 4 抓住重点, 循序渐进 C语言有很多的定义、概念、语法规则等。笔者在教学过程中, 发现学生们普遍感到C语言的概念和语法规则太多, 太细, 不大容易掌握, 而且比较容易混淆。但是C语言的教学重点不在于此, 而在于算法和程序设计方法。因此如何把这些语法规则等讲透, 让学生以尽快的速度掌握这些知识点, 并有效地抓住教学重点是我们应该值得思考的问题。我于是进行了一定的教学探索。在重点抓住讲解算法的过程中, 把语法规则融入到其中。我一般先提出一个具体的应用问题, 要求学生分析用C语言解决这个问题的算法, 并在其中渗透讲解一些相关的语法规则。不要求学生死记语法规则, 而是要求他们能把各个孤立的语句组织成一个有机的程序, 理解并灵活运用这些语法规则。在选择例题的时候也要注意由简到难, 循序渐进, 逐步呈现给学生。[2]让学生在编制程序过程中不断总结、巩固, 达到学会方法、记住语法规则, 提高设计技巧的目的。以讲解逻辑运算为例, 可以提出如何用逻辑表达式来表达闰年 (能被4整除, 但是不能被100整除, 或则可以被400整除的年份) 的问题, 使得学生在解决问题的过程中掌握逻辑表达式。再例如在讲解循环结构的时候, 我们可以通过解决同一问题来比较讲解while, do…while, 和for循环的3种结构的异同。 5 抓好上机实践 “纸上谈兵”学不出程序设计本领, 只有大量上机、编程、调试, 才能掌握C语言。为了突出实践教学, 培养学生的知识应用能力, 笔者对实验内容进行了改革。 一方面在实践内容上进行调整。首先保留基础性实验, 例如:三角形周长、面积计算, 求一元二次方程的根等基础编程实验, 使学生能够较顺利地通过实验, 从而让学生获得一定的成就感, 进一步得到提高学习热情。同时自编增加一些应用性强的、难度略大的实验。例如让学生解决一个数据加密的问题。 另一方面在方式上也进行一定的调整。对于一些相对有点难度的实际问题, 学生们可能一开始无从下手, 我们可以采取分组的方式, 选出一位学生担Team Leader, 模仿公司小团队的工作方式。以数据加密为例:某个公司采用公用电话传递数据信息, 数据是小于8位的整数, 为了确保安全, 在传递过程中需要加密, 加密规则如下:首先将数据倒序, 然后将每位数字都加上5, 再用和除以10的余数代替该数字, 最后将第一位和最后一位数字交换。为了解决这个问题, 我们可以先让学生们分组讨论, 对问题进行分析。然后给一定时间进行编写代码。当大部分同学都碰到相同问题时, 教师可以进行统一引导。从而最终把问题解决。这样一来, 一方面有利于培养学生对知识的应用能力与问题的分析能力, 更主要的也培养了他们团结协作能力。 6 有选择地运用多媒体教学 在C语言程序教学过程中, 运用多媒体技术辅助教学, 有利也有弊。其积极作用:1) 形象直观, 激发兴趣, 调动学生主观能动性;2) 信息量大, 节省时间, 优化教学过程等。不利之处:1) 可能会分散学生注意力;2) 限制学生的想象力, 不利于能力拓展;3) 影响师生之间的情感交流等。在C语言程序设计课程教学过程中, 我们应该考虑到课程的特点, 将传统教学与多媒体教学进行有机的结合, 即要有选择地运用多媒体教学。例如:在讲解一些概念较多, 学生又比较容易理解和接受的知识点的时候, 我们可以采用多媒体教学。[3]这样的多媒体教学, 能够收到将抽象问题形象化、枯燥问题生动化的效果。而在讲解一些算法和程序的编写过程的时候, 我们可以发挥传统教学的优势, 进行板书讲解。总之将传统的教学方法与多媒体教学相结合, 大大提高了学生的综合思维能力。 如何帮助学生在有限的教学时间内, 在最容易理解、最容易接受地方式下, 快速并扎实地掌握C语言, 并能灵活地运用, 是很值得我们探索和研究的问题。以上只是我个人几年来的一点教学探索, 希望能够起到抛砖引玉的作用。 参考文献 [1]《C语言程序设计》教学的几点体会[EB/OL]. (2007-11-15) .http://www.pcdog.com/a/06/12/f286831.html. [2]C语言程序设计》教学的几点体会[EB/OL]. (2006-08-06) .http://www.xker.com/page/e2007/0104/4390.htmlhttp://www.xker.com/page/e2007/0104/4390.html. 关键词 C语言 程序设计 教学方法 中图分类号:G648.2文献标识码:A文章编号:1002-7661(2011)09-0028-02 C语言是计算机专业和相关专业一门很重要的专业基础课,学好C语言为数据结构等后继课程有很大帮助。但是对于高职学生,数学、英语等基础知识较差,而C语言又作为他们面临的第一门语言类课程,因而学习C语言具有很大的难度。本文结合本人几年来的教学经验,对怎样提高C语言教学质量,如何让学生掌握好C语言基础知识点提出几点看法。 一、创设情境,激发学生学习兴趣 大多数学生对新课程都很感兴趣,都很想学好这门课,所以上好第一节C语言课是一个很好的开始。C语言有很多语法和知识点需要掌握,但是如果第一节课就开始介绍C语言的知识点,不但得不到好的收效,还会让学生因为知识枯燥,不易理解而失去学习本课程的兴趣。上第一节课,先讲授C语言这门课程的重要性以及在计算机课程中的地位,然后给学生演示几个简单的游戏,比如:小型运算器,俄罗斯方块,贪吃蛇等,告诉他们这些都可以用C语言来编写。通过这些实例的引入,可以让学生了解到C语言的实用性,激起学生学习的兴趣。 二、注重教学过程,采用多种教学手段 在教学过程中,把知识点融合在实例中,加强学生对知识点的理解,本人在教学过程中采用以下相应方法: 1.深入浅出 C语言主要包括C语言语法、结构化程序设计、数组、函数、指针、文件等。教材一般都会归纳,但是如果把每一块放在一起讲,难点就比较多。比如,C语言的数据类型很丰富,如果全部放一起讲,学生肯定很难记住,所以可以先讲3种基本数据类型、运算符及相关表达式,再通过一个简单程序,输入输出数据。这样子,学生就逐渐掌握了基本数据类型、定义变量,以及输入输出函数的基本使用。对于一些比较难以理解的概念,可以借用比喻来解释,比如在讲到变量的时候,包括变量的地址、变量名、变量值,在课堂上借用教室打个比方:10网构班(变量名)在实验楼302(变量地址)有45个学生(变量值)。这样学生在定义变量的时候就不会那么抽象了。 2.画出流程图 做任何事情都有一定的步骤,这些步骤是按一定的顺序进行的,缺一不可,如果你对一个问题没有任何思路的话,那肯定编不出程序。在解题的时候,可以先画出流程图,再编程序。如:将50名学生中成绩高于80分的成绩打印出来,可画出流程图如下: 3.先复习旧知识,再导入新课 新内容的导入方法很重要,新课前先回顾复习学过的知识点,从旧知识的某一个点出发,提出和新内容相关的问题,让学生思考,并可适当提问,这样可激发学生思考的积极性。在课堂气氛活跃的情况下,教师适当引导,导入新的知识,这样的讲法可以激发学生的兴趣,使学生更容易接受和理解新知识。 4.任务驱动 每节课开始的时候,可以根据需要布置一些问题,让学生带着相关的问题听课,也可让学生自己思考、归纳,或者互相讨论,这样学生会更有目的性和方向性地听讲。 如:在循环结构for语句中,可以设置三个驱动任务:(1)for语句的一般形式;(2)for语句的执行过程;(3)for语句三个表达式代表的含义,三个表达式能否省略? 5.讲解实例,举一反三 对于C语言程序设计这门课来说,精心设计一些实例,用实例来使概念形象化,深化理解 ,通过教师的分析讲解,使学生更容易入手。然后我们可以对这个简单实例提出新的问题、新的改善方案,引导学生参与对现有程序的修改中来。对于学生的改进方案,教师可引导全体学生来评价优劣,找出其优点,修改其错误,逐步完善,不断优化。这样可以调动学生自主学习积极性,用实例教学加强师生互动。 比如可以在平常写的实例中设置一些待解决的错误,如:故意将赋值符号“=”和等号“= =”互换,漏写分号“;”和大括号“{ }”,引导学生在编程和调试过程中逐一发现并解决这些问题,不仅能够巩固理论知识、养成编程的好习惯,更能调动学生思考问题和解决问题的积极性。同时在解决问题的过程中使学生有一种成就感,这对学习能力的提高和积极性的培养有很好的作用。 6.总结知识点 在课堂讲解过程中,知识点是比较零散的,学生对每个知识点理解了,但对各个知识点之间的联系并不一定理解,缺少一种知识的连贯性,不利于理解和记忆。所以,在每次课结束之前,用几分钟的时间把本次课内容所涉及的知识点回顾一遍,这种回顾既以复习知识点为主,又要讲解其间的联系。当课堂教学内容以一个整体的形式被串联起来后,学生的理解就会加深。如:在讲运算符的时候,每类运算符都有自己的优先级和结合方向,一个一个比较零散,所以在讲完运算符后,可以归纳所有运算符间的优先级和结合方向。 三、引导学生自主学习,培养学生实践能力 程序设计是一门实践性很强的课程,既要掌握概念,又要动手编程,还要上机调试运行。对于学生来说,一定要重视实践环节,包括编程和上机。对于教师来说,一定要引导学生自主学习,做好课程设计。 1.上机准备 教师要事先设计好实验内容,内容要尽量引用之前所讲的知识点,避免涉及后续章节的知识,难易适中,由浅入深。课前可先给学生演示一下实验的最终效果,概括本实验包括的知识点,提醒学生对每一个操作的结果仔细观察和详细记录。学生在操作中遇到问题,教师应启发学生独立思考,引导学生去发现问题、分析问题和解决问题,培养学生的动手能力,让学生亲自观察和体验程序设计的成功感受,加深对知识的理解。最后,学生要书写实验报告。上机结束后,教师要督促学生及时总结实践经验,将实验中碰到的问题及解决的方法记录在实验报告上。教师根据每一次上机的整体情况,对学生中出现的共性问题进行讲解。 2.课程设计 可以让学生分组实现一个具体课程设计,在本课程结束的前几周完成课程设计,加深学生对本课程的总体理解。本人认为,在学校中学习程序设计的目的是进行程序设计及基本训练,而不是要求学生立即编写大型程序,或今后一辈子只用这门语言。所以,布置课程设计时,要把精力放在本课程最基本、最常用的内容上,开始时,不要在每个细节上死背死抠,在有一定基础后,再通过实践熟练掌握。 教好C语言是一项艰巨的任务,在教学过程中,要深入浅出,以学生为主体,以教促学,学以致用,引导学生在学习过程中掌握编程技巧,调动学生学习的主动性和积极性。 参考文献: [1]唐淑玲.高职C语言程序设计教学效果探析[J].中国校园导刊,2011,(1). [2]由杨.高校计算机C语言实验教学方法初探[J].中国期刊,2009,(1). void main { int t,i,j,n; for(t=0;t<10;t++) { clock(t); sound(590); for(n=0;n<4;n++) { delay(100000000); } nosound(); for(n=0;n<6;n++) { delay(100000000); } for(j=8;j<=18;j++) { for(i=1;i<=80;i++) { gotoxy(i,j); putchar(0); } } } } void clock(int t) { int i,j; textcolor(11); if(t==0) { for(i=0;i<11;i++) { gotoxy(60,8+i); cprintf(”%c“,14); } for(i=0;i<11;i++) { gotoxy(51,8+i); cprintf(”%c“,14); } for(j=0;j<11;j+=10) { for(i=0;i<8;i++) { gotoxy(59-i,8+j); cprintf(”%c“,14); } } } if(t==1) { for(i=0;i<11;i++) { gotoxy(60,8+i); cprintf(”%c“,14); } } if(t==2) { for(j=0;j<2;j++) { for(i=0;i<6;i++) { gotoxy(60-j*8,8+i+j*5); cprintf(”%c“,14); } } for(j=0;j<11;j+=5) { for(i=0;i<9;i++) { gotoxy(60-i,8+j); cprintf(”%c“,14); } } } if(t==3) { for(i=0;i<11;i++) { gotoxy(60,8+i); cprintf(”%c“,14); } for(j=0;j<11;j+=5) { for(i=0;i<8;i++) { gotoxy(59-i,8+j); cprintf(”%c“,14); } } } if(t==4) { for(i=0;i<11;i++) { gotoxy(60,8+i); cprintf(”%c“,14); } for(i=0;i<6;i++) { gotoxy(52,8+i); cprintf(”%c“,14); } for(i=0;i<8;i++) { gotoxy(59-i,13); cprintf(”%c“,14); } } if(t==5) { for(j=0;j<2;j++) { for(i=0;i<6;i++) { gotoxy(52+j*8,8+i+j*5); cprintf(”%c“,14); } } for(j=0;j<11;j+=5) { for(i=0;i<9;i++) { gotoxy(60-i,8+j); cprintf(”%c“,14); } } } if(t==6) { for(j=0;j<2;j++) { for(i=0;i<6;i++) { gotoxy(52+j*8,8+i+j*5); cprintf(”%c“,14); } } for(i=0;i<6;i++) { gotoxy(52,13+i); cprintf(”%c“,14); } for(j=0;j<11;j+=5) { for(i=0;i<9;i++) { gotoxy(60-i,8+j); cprintf(”%c“,14); } } } if(t==7) { for(i=0;i<11;i++) { gotoxy(60,8+i); cprintf(”%c“,14); } for(i=0;i<8;i++) { gotoxy(59-i,8); cprintf(”%c“,14); } } if(t==8) { for(i=0;i<11;i++) { gotoxy(60,8+i); cprintf(”%c“,14); } for(i=0;i<11;i++) { gotoxy(52,8+i); cprintf(”%c“,14); } for(j=0;j<11;j+=5) { for(i=0;i<8;i++) { gotoxy(59-i,8+j); cprintf(”%c“,14); } } } if(t==9) { for(i=0;i<11;i++) { gotoxy(60,8+i); cprintf(”%c“,14); } for(i=0;i<6;i++) { gotoxy(52,8+i); cprintf(”%c“,14); } for(j=0;j<2;j++) { for(i=0;i<8;i++) { gotoxy(59-i,8+j*5); 【c语言模拟迷宫程序】推荐阅读: c语言程序设计实例06-19 c语言源程序结构08-03 C语言程序稳定性08-20 c语言程序设计试题库07-01 c语言程序设计第10章07-07 c语言程序设计第五章09-15 c语言程序设计夏宽理10-20 C语言程序设计综合实训10-30 C语言程序设计实验指导及报告07-26 C语言程序设计教学大纲72du09-296.c语言程序分类总结 篇六
7.《C语言程序设计》高职教学初探 篇七
8.C语言程序设计教学方法探讨 篇八
9.C语言数字钟程序 篇九