c语言读后感(共12篇)
1.c语言读后感 篇一
第12讲C语言的常用语法小结
1、标识符
由字母、数字和下划线组成。标识符必须以字母或下划线开头。大、小写的字母分别认为是两个不同的字符。不同的系统对标识符的字符数有不同的规定,一般允许7个字符。
2、注释
“/*”和“*/”必须成对出现; 注释不能嵌套;
注释可出现在程序的任何位置。
3、常量
整型常量十进制常数(八进制常数、十六进制常数、长整型常数); 字符常量(用单引号括起来的字符); 字符串常量(用双引号括起来的字符序列); 浮点型常量(小数形式、指数形式)。
4、表达式
算术表达式(整型表达式、实型表达式);
逻辑表达式(用逻辑运算符连接的整型量,结果为一个整数0或1,逻辑表达式可以认为是整型表达式的一种特殊形式); 字位表达式;
强制类型转换表达式(用“类型”运算符使表达式的类型进行强制转换); 逗号表达式;
赋值表达式(将赋值号“=”右侧表达式的值赋给赋值号左边的变量); 条件表达式;
指针表达式(对指针类型的数据进行运算)。
5、数据定义
对程序中用到的所有变量都需要进行定义。对数据定义其类型,需要时要指定其存储类别。类型标识符可用:int、short、long、unsigned、char、float、double、struct 结构体名、union 共用体名等;存储类别可用:auto、static、register、extern(如不指定存储类别,作auto处理)。注意:外部数据定义只能用extern或static,而不能用auto或register。
6、函数定义
形式为:存储类别 数据类型 函数名(形参表列);形参说明;函数体。
函数的存储类别只能用extern或static。函数体是用花括弧括起来的,可包括数据定义和语句。
7、变量的初始化
可以在定义时对变量或数组指定初始值;静态变量或外部变量如未初始化,系统自动使其初值为零(对数值型变量)或空(对字符型数据);对自动变量或寄存器变量,若未初始化,则其初值为一不可预测的数据;只有静态或外部数组才能初始化。
2.c语言读后感 篇二
关键词:高校,C语言编程,改善对策
1 C语言及其优势
C语言作为目前世界上使用最广泛、最流行的计算机编程语言,要想学习起来得心应手,对其的了解也是必不可少的,C语言起源于上世纪60年代,成型于70年代,在近50年的使用过程中表现出了以下特点:C语言简介紧凑、灵活方便,语法限制不严格,程序的书写比较自由,将高级编程语言的结构性和低级编程语言的实用性有效的结合起来,形成了新的功能强大的编程语言;应用广泛,可植性强,C语言适用于多种操作系统;C语言中各种运算符丰富,在C语言编程过程中灵活的使用各种运算符,可以实现其他很多高级语言无法实现的功能;数据结构丰富:多种的数据结构类型的使用使C语言除了可以完成各种复杂的数据运算外还具有强大的图形功能;结构式的语言特点使代码和数据分割,程序层次清晰,便于使用、维护、调试;用C语言可以直接对物理地址进行访问,由此可见C语言的强大功能,所以在信息技术的世界中C语言的地位是很高的。
2 学习C语言枯燥原因分析
C语言的强大功能决定了它的“江湖地位”,所以社会重视、企业重视、学校重视使得学习C语言、想掌握C语言技术的人也越来越多,但是大部分人在学习过程中却表示:C语言的学习是非常难,非常枯燥的,经常是一个学期下来感觉毫无所获,还是处于云里雾里,对学科没有整体清晰的概念。为什么会出现这样的状况呢,为什么越重视效果越不行?笔者认为C语言属于高级语言,是跟面向对象的语言有很大的区别的面向过程的编程语言,它不能直接看到很华丽的画面效果,编写过程稍有不慎就会出错,而且C语言中的很多算法和数据结构如果不加以理解而只是死记硬背的话是会非常枯燥且容易出错的。在运行过程中不能很直接的看到出错的地方,需要自己投入其中进行深入分析,还应该积极的研究算法,因为只有充分地了解算法才能够在C语言的学习上游刃有余,将C语言知识融会贯通,教师在教学过程中也不能一味的讲解,而不考虑学生的接收情况,想当然学生都应该懂。笔者认为C语言编程的学习中,C语言编程技巧可以帮助C语言的学习。
3 C语言编程技巧
现在的C语言学习过程中,学生普遍感觉枯燥无味,其实笔者认为初学C语言觉得比较复杂是人之常情,但是只要你具备了一定的编程经验,再掌握一些编程技巧,其实C语言也不是很难,而且可以更加有效地提高编程的效率和编程能力。在此介绍几种在实践中比较有用的编程技巧:
首先熟练掌握指针,指针的重要性是学习过C语言的人都知道的,指针为什么重要,因为其可以大大提高运算的速度,并且使用的语句简单,但是可以达到意想不到的效果,当然指针也有缺点,就是占用了大量的内存,但是获得了程序执行的高效率。如果系统的实时性要求很高,内存还有一些可以使用指针操作会达到良好的效果。其次运用数学方法解决问题,在C语言的学习过程中,一般有大量的算法和数据结构需要去了解,通常这个阶段是最难熬的阶段,因为对于初学者来说显得比较复杂和枯燥,IT界有一句比较实在的话“数学是计算机之母”,由此可见数学在计算机学习中的重要地位,同理,在C语言的学习过程中,数学思想的应用会让人有豁然开朗之感,一般而言程序的编写都是要解决问题,而简单的运算问题的解决其实就是在数学领域的,编写程序是为了让计算机可以代替人操作运算过程,从而减少人力。从这个角度上来说,在编程前应该用数学的思维寻找规律,用数学的威力来提高编程效率,拓展编程人员的思维。最后要用高效的C语言编程,可以使用位操作,在所有的计算机程序中,可以说位是最小的数据单位,一般而言所有的运算和操作都可以通过“位运算”来解决,足见“位”在编程语言中的重要性,在C语言编程过程中使用位操作可以使代码更简洁,效率更高,当然使用任何技巧都应该视情况而定,如位操作的使用有时可能导致程序的安全隐患。
上面介绍的几种提高编程效率的编程技巧总体来说对于学习C语言指明了方向,让人们在C语言的学习中有重点和方向可寻,必定能使得人们学习C语言的积极性提高,将C语言应用地更加广泛。
4 结语
C语言的强大功能和可植入性一直是其他编程语言望尘莫及的,所以C语言在IT界广受追捧,熟悉C语言的人都被人称为“电脑高手”,所以这些年来,C语言在高校中也有原来的计算机专业课程发展到现在的理工类公共课程,自然,这对于C语言的发展来说是一件好事。与面向对象的编程语言不同,C语言是一门面向过程的编程语言,这就决定了其对算法和数据结构的要求比较高,而算法和数据结构恰恰是编程语言中比较难的部分,正因如此,现在在C语言的学习过程中,大部分人都表示这是一门很重要却很难学的课程,要让C语言更好地服务,必须打破这种现状。笔者认为在C语言的编程教学中加入C语言编程技巧的教学可以很好地改善现状。因为C语言编程技巧可以让人们提高学习兴趣、学习起来也比较有目的性,可以很好地提高C语言的学习效果。
参考文献
[1]李利国,王磊.C语言编程风格之六大章法[J].成才之路,2007,(20).
[2]王展运.C语言编程中常见错误及解决办法[J].长江职工大学学报,2002,(03).
[3]李自清.浅谈C语言编程中的常见错误和解决方法[J].科技信息(科学教研),2007,(33).
[4]王彤,张小志,王大鹏.C语言编程的技巧探讨[J].科技信息(学术研究),2007,(09).
3.高职C语言教学浅析 篇三
【关键词】C语言;学生兴趣;教学方法
现在计算机已普及到各行各业,深入到各级层次。在我国高职院校教育中,C语言不但成为计算机专业的必修课,而且也成为非计算机专业的学习课程。做好该门课程的教学具有非常重要而深远的社会意义,现将我在C语言程序设计课程中教学内容、教学手段、教学方法等方面的改革与取得的教学效果与大家做一探讨
一、努力培养学生的学习兴趣及正确的思维摸式
兴趣是学习的关键,兴趣决定了教学效果的好坏。初学C语言时,很多学生感到新奇、好玩,这不能说是兴趣,只是一种好奇。随着课程的不断深入,大量的规则、定义、要求和机械的格式出现,很容易使一部分学生产生枯燥无味的感觉。为了把学生的好奇转化为学习兴趣,授课时我改变过去先给出定义和规则的讲授办法,而是演示一些由前几届学生自己编写的、有趣的程序,从而吸引学生,并告诉他们学习了C语言程序设计的内容后,大家都能够编出这些小程序。努力把枯燥无味的“语言”讲的生动、活泼。
二、循序渐进
高职学生第一次接触计算机语言,“通俗性、可接受性”的教学原则同样适合于这门课的教学。在课程讲授过程中,我没有把重点放在语法规则的叙述上,而是放在算法和程序设计方法上,通常由几个例题引出一种语法规则,通过一些求解具体问题的程序来分析算法,介绍程序设计的基本方法和技巧,既注重教材的系统性、科学性,又注意易读性和启发性。从最简单的问题入手,一开始就介绍程序,要求学生编写程序,通过反复编写、运行程序来掌握语言的规定和程序设计的方法。同一个语法规则、同一种算法,在选择例题时也是由简到难,逐步呈现给学生。在学习上不要求学生死记语法规则,而是要求学生能把各个孤立的语句组织成一个有机的、好的程序。注意培养学生良好的编程风格,让学生在编制程序过程中不断总结、巩固,达到学会方法、记住语法规则,提高设计技巧的目的。
三、改进授课方法、实现教学相长
(一)采用启发、引导的教学方法
(1)教师在教学过程中,应当注意设置疑难问题,引导学生思考和探索,让他们的思想活跃起来。我教学时发现,学生问不出问题的原因往往在于没有真正学好。实际上,问题是最好的老师,是学生学习的引导者,没有问题便没有深入。在教学过程中,引导学生在问题解决中学习,即提出问题,给时间让学生思考、讨论、解决问题,从而更深入地展开学习。实践证明,这种教学方法充分调动了学生学习的积极性和主动性。例如 ,在讲数组的概念时,我先设置问题:编程计算10个人的英语平均成绩。根据以前所学,学生会想到:需要说明10个类型相同的变量用于存放10个人的英语成绩。进一步要求:计`算50个人的英语平均成绩,这时候如再说明50个变量,则会将问题麻烦化,学生此刻需要讨论该如何合理说明变量。再深入一步:求100个人的英语平均成绩。此时,当教师引出数组的概念、分析数组的性质时,学生不仅能够记住数组的性质,还能够知道在什么情况下使用数组类型,达到事半功倍的效果。
(2)教给学生正确的学习方法,引导学生掌握程序设计的思想和方法。经验丰富的软件设计者都知道程序设计的关键在于找到解决问题的方法,即算法。根据软件工程的思想,当拿到一个任务时,首先应将这个问题自顶向下逐步细化,逐层向下分解,直到满足每一个要求。实现时,可以先用流程图描述出算法,进而写出合理的算法,再将之转化成程序。
(二)采用目标教学法,使学生明确目的,确立主题
学生是认知主体,是信息的主动接受者,但也并不能否定教师的指导作用,教师作为知识的先知者,自然清楚所学内容哪些是重点及难点,哪些是只需一般掌握的,如果脱离了这一点,学生有可能会不加区分地对所学内容完成认知,进而导致其知识主结构的无法确定,所以教师在进行教学设计的第一步还是要进行目标分析,指导学生确立主题。
四、校企结合,加强实践教学环节
高职教育着重培养具有实际工作能力的技术型和应用型人才。为了使学生学习到的知识与社会接轨,可以创建校企结合的课程建设方法。听取企业家对C语言程序设计教学改革的意见、由企业向学校提供实验(实习)条件、以企业作为学生的校外实习基地,通过这些方法使学生熟悉公司内的编程环境。学校还可以邀请企业家为学生开讲座,派遣青年教师到企业去实习,使教学的内容与企业的实际更为贴近。高职院校作为企业的人才培育基地,发挥技术和设备的优势,为企业提供支持,向企业输送合格毕业生,校企结合实现双赢。
4.学习单片机c语言还是语言 篇四
汇编语言的缺点:
(1)编写的代码非常难懂,不好维护
(2)很容易产生bug,难于调试
(3)只能针对特定的体系结构和处理器进行优化
(4)开发效率很低,时间长且单调
汇编语言的特点
1.面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的2.保持了机器语言的优点,具有直接和简捷的特点
3.可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等
4.目标代码简短,占用内存少,执行速度快,是高效的程序设计语言
5.经常与高级语言配合使用,应用十分广泛
对于不同型号的计算机,有着不同的结构的汇编语言,学习难度大。
C语言是一种结构化的高级语言。其优点是可读性好,移植容易,易学易用,是普遍使用的一种计算机语言。
c语言优点:
1、语言简洁,使用方便灵活,可大幅度提高开发速度,系统越复杂,开发效率越高。
2、无须深入了解单片机内部结构,和复杂的单片机汇编语言指令集
3、可进行模块化开发,软件逻辑结构清晰,有条理,易于分工合作
4、可移植性好,写好的一个c语言算法,可方便地移植到其他单片机上,而汇编语言相对要复杂的多。
5、可直接操作硬件
随着单片机的内部资源越来越多,存储空间越来越大,资源已经不是考虑的首要问题,c语言可以大大提高开发的效率,c 语言是初学者的首选语言。汇编语言在实时性,执行效率上有不可替代的优势。大部分情况下c语言就可以满足要求,在实时性要求高的某些场合中,可用c语言和汇编语言混合编程的方式,兼顾开发效率和实时性。了解汇编语言对于学习单片机的内部结构,执行过程非常有帮助,是成为单片机高手需要掌握的语言。c语言进行单片机程序设计是单片机开放与应用的必然趋势。
小企鹅diy科学探究学习网
5.C语言1 篇五
参考答案: #include
if(prime(n)){
a[count]=n;
count++;
}
n++;} for(int i=0;i<100;i++)
printf(“%dt”,a[i]);} bool prime(int i){ int j;for(j=i/2;j>=2;j--){
if(i%j==0)
return false;} return true;}
2、编函数,把整数数组中值相同的元素删除得只剩一个;并把剩余元素全部串到前边。参考答案:
//返回数组中所剩的元素数 int DelSimEle(int arr[10]){ int i,j,k;for(i=0;i<=9;i++)
for(j=i+1;j<=9;j++)
{
if(arr[i]==arr[j])
arr[j]=0;
} int copyofarr[10];int t=0;for(k=0;k<=9;k++){
if(arr[k]!=0)
{
copyofarr[t]=arr[k];
t++;
6.C语言总结 篇六
--------13软件工程一班郭笑笑
------------老师:
徐
静
经过一学期的对c语言这门课程学习,我对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,因为私下练习的时间太短了。
上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间,为此,结合课堂讲授的内容和进度,老师为我们安排了多次上机实验。课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,还可以有以下几方面的好处:
1.加深对课堂讲授内容的理解。
2.熟悉程序开发环境、学习计算机系统的操作方法。
3.学习上机调试程序等等。我对程序调试还没有完全掌握,不能很快找出程序的错误。
因为课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,死记硬背也不容易记住。还有一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,不能很好地利用学到的知识编写c语言程序,解决实际问题。总的来说在这半年的时间里,我学到了许多,但是也有很多内容是不会的。我觉得我在这一学期中掌握的内容有(收获):
1.printf(“%*sn”,M,“字符串”+N)的用法说明 2.scanf函数的用法和说明
3.自增自减:n++、n--、++n、--n 4.进制的转换:二进制、八进制、十进制、十六进制
5.变量在内在中的存放与转换.6.3.字符-----‘’的作用:与一些字母组成转义字符,与数字组成代表八进制数.另外说明一下r,其作用是将当前位置移到本行开头,后面再输入字符时,原有的字符将会被覆盖。
7.5.逗号运算符.8..局部变量.全局变量 9..预编译处理命令
10.#define:宏定义只是在编译前对代码作简单的字符串替换,不会考虑任何错误.宏定义不是语句,后面不要加“;”.似懂非懂(不能很好地应用): 1.退出过程.(1)continue :用于结束某次循环继续下一循环.(2)break: 用于结束循环或结束switch语句.(3)return: 用于结束某函数.(4)exit: 用于结束某一程 2.void的说明.Void代表空类型,在定义指针变量或函数时可以定义为void型,定义指针变量后可以在用的时候通过强制类型转换使其指向任何类型的数据.定义函数时,只是说明不能有返回值.如果函数中出现return就会报错.3.指针:(1).指针的加减法:指针的加减法不是作简单的加减,而是以指针变量所占的字节数为单位进行加减.(2).数组名是指针常量,不能改变其值,比如数组a[ ],如果进行a++;就会报错
(3).虽然指针变量中存放的地址是整型数据,但不能将整型数据直接赋值给指针变量,应该这样(假如p为int *型),p=(int *)1000;但禁用些法,因为你不知道1000这个单元有没有被其它单元占用,后果不可预料,同样也不能将一个指针变量的值直接赋给整形变量,也要进行强制类型转换.(4)定义指针后,在使用之前一定要先给它赋初值,切记
(5).二维数组中指针问题(int a[3] [4]),数组名a是一个指向行的指针(指向数组),而在其前面加一个 * ,*a就是指向列的指针(指向无素).a与*都是指向a[0][0];但a+1(行指针)指向a[1][0];而*a+1(列指针,和*(a+0)+1一样)却指向a[0][1];同样在a+1前加一个*就又变成列指针了,*(a+1)+2就指向a[1][2].(6),复杂类型的说明:从变量名处起,根据运算符优先级结合,一步一步分析,下面以一个比较复杂的类型(int *(*p(int))[ ])为例: 第一步,p先与()结合,说明是一个函数,第二步,()内有一个int,说明函数有一个形参为int型,第三步与*结合,说明返回的是一个指针变量,第四步与[ ]结合,说明该指针变量指向数组,第五步再与*结合,说明数组中的元素为指针型,第六步说明数组中的指针元素的类型为int型,完毕,所以这是一个返回一个由整型指针变量组成的数组的指针变量的函数。4.结构体的应用。完全不会的:
7.C语言教学探讨 篇七
一、明确课程目标
C语言课程一般是为应用性教学而设置的, 强调实践性是计算机语言课程教学中特别要注意的问题。C语言的内容繁多, 在有限的课时内不可能也没必要面面俱到, 所以必须突出重点, 突出实用性, 关键在于教会学生正确运用C语言编写程序, 一些细节、具体规则和进一步的知识可以让学生在今后的应用中查阅有关书籍。教师应始终坚持以应用为中心, 以算法为基础, 以培养学生的实践能力为核心, 突出技术实用性和再学习能力的培养。
二、实施教学改革
1、培养学生正确的思维模式
《C语言程序设计》注重由设计算法到书写程序并进行调试的整个过程, 在整个教学过程中应该把“解题思路、方法和步骤”当作授课的重点, 从而让学生明白如何分析、解决实际问题, 逐渐培养学生进行程序设计的正确思维模式。
在讲课中, 应集中精力对章节的知识结构进行详细阐述、对所要解决的实际问题进行深入剖析, 不应花太多的时间放在对语句语法的过多讲解。当遇到实际编程时, 需积极引导学生把“要想干什么”的问题, 直接转化为“要解决什么”的问题。当问题确定以后, 选择正确的算法。
2、“项目驱动”教学
在理论教学中采用“项目驱动”教学法, 整个课程教学围绕一个“工程项目”进行, 通过逐步拓展的实训项目和设计, 将每一阶段的学习进行小结性的贯穿与能力提高。将C的知识点都溶化到一个个实训项目的程序编写中。在课程初期, 主要是进行单项的编程练习, 重在掌握C语言的基本语句、数据类型与程序结构等。在进入数组、函数、结构、指针和文件内容教学时, 开始实训项目的编程实践, 逐步组建“学生信息管理系统”, 并且添加文本菜单, 整合扩展记录添加、排序、查询、统计和记录浏览等内容形成课程设计。
3、授课过程中始终把握五个要点
突出特点:在实际授课中, 要一直向学生强调, C语言是一种函数式语言, 这种函数式的特点正是结构化程序设计思想的很好体现, 讲课时多使用函数, 要求大家也多用函数来编程实现。
侧重分析:分析是解决的第一步。把典型问题从不同角度分析, 再比较各种方法的优劣, 取得最佳方法, 这个过程强化了学生分析问题的能力。
抓住重点、化解难点:讲授重点内容时, 应放慢速度、加重语气, 从而吸引学生的注意力。遇到难点时, 善于化解, 把问题逐渐细化, 所有小问题解决了, 难点自然就解决了。
强化实践:计算机语言的实践就是上机编程, 是培养学生综合运用相关知识解决问题的重要途径, 也是我们掌握教学反馈信息的主要渠道。只有亲自动手、亲自实践, 才能真正体会到语言编程的乐趣。通过上机练习也可以进一步加深对理论知识的掌握, 有利于培养学生的创造思维、独立分析问题和解决问题的能力。
注重反馈:教学过程实际上是一个教师与学生互动的过程。为了获得良好的教学效果, 教师应注重及时从每一个环节获得有关学生掌握所学知识的情况、存在问题的反馈信息, 进行有针对性的辅导。
4、在例题上下功夫
一题多解, 注重算法是程序设计的灵魂, 是教学重点, 也是教学难点, 而语言只是表示形式。没有正确的算法, 计算机将解决不了任何问题。对于C语言所涉及到的算法, 应进行部分精讲多练。
对说明语法规则和语法现象的例子追求尽量简单, 对说明算法的例子追求尽量典型, 除了综合演练外, 所有例子都不要太过复杂;不但要举正面的例子, 而且要特别注意举反例;一个程序例材用后不要轻易抛弃, 可尽量变化使用, 例如每次改一点, 看看情况会如何变化, 加深学生对程序中各项参数和要素的理解;一个题目原型, 可采用多种办法来实现, 讲解时不一定要一次操作完, 例材可以重复使用, 这样可节省背景介绍, 加深学生的印象;对一些典型算法 (如排序) 要注意提取其轮廓框架, 进一步浓缩其算法要点;对使用频度高、容易掌握的算法或程序结构可多讲, 反之, 可少讲;对非结构化的语言来说, 结构化的手段和例子要多讲, 非结构化的可少讲或不讲。
5、一题多解 (分组讨论) 刺激学习积极性
为了调动学生编程的积极性, 我们可以采取分组比较方式, 培养他们合作和竞争意识, 从而达到提高学习兴趣的目的。比如求“素数”数这个例子, 先介绍一种常见算法, 其他方法把全班同学分组自主去解决, 最后比较哪组使用方法最多, 最巧, 同时把这些好方法介绍给大家, 鼓励大家去发现新思路、新方法, 培养他们创造性思维。实践证明这种分组讨论方式不但可以帮助学生掌握多种语句的使用方法, 还能培养他们多种角度分析问题的能力以及集体协作能力。
6、课程考核方式改革
(1) 平时上机训练时给学生留一些编程习题, 每次根据学生编写情况进行测评并占据期末总成绩30%。
(2) 期末前, 给学生留一个综合实训题考核学生综合解决问题的能力, 要求同学们在一定时间内完成, 占据期末总成绩30%。
(3) 期末进行理论考试, 占期末总成绩的40%。
以上是本人在C语言教学中的一些体会, 希望能对大家有所帮助。
参考文献
[1]郭琴:对高职高专计算机专业程序设计教学的思考中国科技信息2008[1]
8.高职院校C语言教学探讨 篇八
关键词:C语言;教学改革;教学方法
一、引 言
《C语言程序设计》是计算机专业的必修课和其他理工科学生的重要基础课程,由于覆盖面广、应用广泛,对于学生的基本编程素质的培养有较大的影响而备受重视。如何更好地完成教学目标,让学生真正掌握C语言,深入了解其精髓,值得每个C语言教学工作者不断探索。
当前,在高职高专院校,《C语言程序设计》课程一般都设置在一年级,学生从高中的基础教育转向学习全新的编程性的语言,学习难度比较大。主要有以下几个原因:一是学生的英文底子普遍薄弱,而C语言英文运行环境,对于运行过程和提示错误根本看不懂,导致上机调试困难重重;再加上对程序主观上认识过难,无形中挫伤了学习的积极性。二是学生的数学基础也比较差,一些编程算法都需要数学思想来支撑。诸多原因造成了C语言教学效果不佳,而对其掌握的程度如何,直接影响到后继相关课程的学习和掌握,甚至是整个专业的后继发展。
笔者根据多年的程序设计课程的教学实践,对《C语言程序设计》课程从教学内容、教学手段、教学方法等方面行了一些改革,并取得较好的教学效果。
二、教学改革措施
1.精简内容,培养兴趣
C语言语法繁多,学生初步接触容易有惧难情绪,因此第一堂课的教学显得尤为重要,它是能否激起学生学习热情的关键因素。一般建议在第一堂课介绍一些应用C语言的小项目,比如嵌入式开发驱动程序的编写、学生注册信息系统的管理。向学生演示运行一些信息管理系统及遥控电风扇运转的一些代码,让学生了解这门语言的一些基本功能,激发他们的学习兴趣。同时用每年获得大赛的学生的事迹激励他们,讲讲学好这门课的方式方法,帮助他们树立学好这门课的信心。
2.案例引导,项目驱动
以谭浩强主编的教材《C程序设计为例》为例,教学内容主要包括C语言语法基础、程序控制结构、数据类型、数组、指针、函数、文件以及它们的应用等。教材在内容组织上,虽然依逻辑思维方式进行了归类,但难点还是较为集中,跨度大;概念讲得多,分析少。再加上高职高专院校的学生,有相当一部分入校时,分数低,数学基础较差,逻辑思维能力不是很强,如果按照书本章节一步步讲下来,学生会产生畏难情绪,学习兴趣开始降低,以往一些学生在第三章节数据类型及表达式还没有完全上完心底就已经开始放弃这门课了。所以在上这门课的时候,建议采用“案例引导、项目驱动”[1],把课程学习内容联系真实环境,提出各种问题并形成主题任务,进行任务驱动式教学;将学生置于发现问题、提出问题、思考问题、探究问提、解决问题的动态过程中学习。比如第二次授课,就可以提出做一个管理信息系统,先和学生进行基本的功能分析,然后逐步地以实现每一个功能将各个章节的知识点融入进去讲解,以任务驱动教学[2],让学生真正了解语法为编程服务,而不是单纯的死记硬背一些语法知识。
3.建立良好的网络资源平台,促进师生互动
教学中涉及到的很多知识较抽象和难于理解,因此需要学生课下对课程的重点难点进行进一步消化和理解。因此,应该采用行之有效的办法来帮助学生解决在自主学习中可能遇到的一些问题,比如学生需要进行自主学习的一些教学资源,需要一个进行问题探讨交流的空间,以及教师需要及时地掌握学生自主学习的情况等等。为此,需要建立关于这门课程的学习网站,分别设置课程学习模块、在线练习及在线测试、学习资源建设、参考文献资料、教学论坛等。笔者在完成一个院级项目的过程中建立了一个关于C语言的重点课程建设网站:重难点动画演示课程中涉及的比较难理解的算法以及知识;常见问题解答以章为单位,由课程老师共同建设,不断的加以充实,逐年积累;利用留言板功能建立课程的论坛,教师可以根据自己的教学内容在其中创建话题(发帖),学生也可以在上面对自己的疑问发帖,针对这些话题学生被允许在课题后面发表自己的看法并与教师或其他同学交流,这一功能消除了传统教学中教师只能当面答疑的时空限制,学生能在讨论板上提出自己的问题,而教师可以对具有代表性的问题做出统一解答,避免重复解答,从而提高了教学效率及学习的主动性,同时教师可通过总结学生提出的问题对教学内容做出适时调整。
4.重视上机实践,注重综合考核。
C语言是一门实践性很强的学科,除课堂上的理论讲解外,实验教学也是至关重要的。由于学生是第一次接触程序设计,许多概念都是很抽象的,因此,要求在课程内容的安排上循序渐进,由浅入深,逐步引导。实践课除了需要携带教材以外,另外还需要与之相配套的实验指导书和实验报告册,对于实验指导书可以选择与课本相配套的,教师也可以根据自己的教学需要和学生的实际情况编写合适的实验指导书。对于这门课程学习结果如何,不是一张试卷就能给出答复。我们追求的不是学生懂了多少语法,而是能做出什么,所以对于这门课程,对学生学习成绩的评定,建议采用综合考核法,将平时的实践成绩与期末卷面成绩进行综合,得出本课程综合考评分。这样才能更加客观地反映学生的学习情况,同时也能更好地促进学生平时的学习。
三、结 语
C语言的教学需要不断探讨,我们应在教学过程中不断模索,化繁为简,多钻研教材教法,使学生将所学知识转化为实际工作的能力,提高学生的实际工作水平、综合素质和就业竞争能力,为企业提供适用型的人才。
参考文献:
[1] 邓云洲.案例教学在教学基本要素上与传统教学的区别.教育发展研究,2001,(12).
9.C语言总结 篇九
一个学期的C语言课已经告一个段落了。现在是该回去总结的时候了。下面的是我一个学期的总结。包含了我对各个章节的理解和自己所学到得知识的总结。
第一章 计算机程序设计介绍
1.1 历史和硬件
开始介绍我们的计算机的程序设计的发展。及首次的课编写程序的计算机在1822年有英国的 Charles Babbage进行的还有后面的一些在计算机的领域有贡献的人。本章主要就是介绍 介绍了计算机的硬件。硬件的用途。还列举了数字126的存储问题!介绍了位和字节。位是计算机中的最基本的数据项。
byte=8bit
介绍计算机部件,还有计算机的的CPU及计算机的输入和输出单元还有计算机的主要储存和二级存储及最常用的储存设备。比如说可移动软盘„„还有计算机的价格的变化。
1.2 编程语言
开始用一个汽车与人的关系来比喻人和计算机的关系。介绍了什么是计算机的编程语言机当前的计算机语言。
机器语言就是机器能够识别的语言。就是一个程序按二进制数字的序列编写的计算机内部的预言。
汇编语言:使用一类象征符号的编程语言。
低级语言和高级语言及其的种类的列举。比如C++ C Java„„
过程语言和面向对象语言。举例就是C就是过程语言而C++还有Java就是面向对象语言。系统软件与系统软件的定义及一些例子的介绍。C语言的发展 1.3 算法
产生结果所选择的步骤称为算法。举例了从1加到100的例子。来阐述一个问题有不同的做法。并且讲到了伪代码和流程图。及流程图的用法 1.4 软件的开发过程
阶段1 确定程序的要求 阶段2 设计和开发
步骤1 分析问题
步骤2 选择一个完整的解决方案算法 步骤3 编写程序 步骤4 测试和修正程序
阶段3 文档编制 阶段4 维护 及各个阶段的要求
分析问题的算法及怎样去分析一个问题最后一个问题就是备份。这样方便以后的维护 1.5 案例研究:设计和开发
用一个关于圆的周长的程序来讲述一个程序的开发过程给前面的内容一个升华。1.6 常见编程错误 1.7 本章小结
第二章 在C语言编程中开始
2.1 C语言编程介绍
讲了一个函数是怎样的去工作。还有用了一个特别形象的图来阐释这个乘法函数及他们包含在什
样的头文件里。
标识符有三种:保留字,标准标识符,程序员建立的标识符,每种都有自己的要求。分别说明Main()函数的应用。通过一个特别形象的图形来阐释他的操作顺序。
Printf()函数的应用。列举了一个hello world.的例子并用程序写出了一个程序。介绍了预处理命了各个的要求。通过表1和表2分别列举了关键字和标准标识符后面还给出了程序员建立的标识符的要求。
令是以一个#开始的。还讲到了了字符串的定义。用程序写了一个测试程序。介绍了换行转义序列符
2.2 编程风格
第一个介绍的是缩排。就是要用书里的标准的编程风格这样方便我们的读取。
第二个介绍的是注释。就是在每段程序的开头和每个语句的后面加上我们的注释。这样来检查程序的时候就会方便一些。
2.3 数据类型
数据类型的定义。首先数据类型常用的有int数据类型,char数据类型,浮点数据类型。
特别介绍了转义序列符及其作用。
介绍了指数计数法的应用 2.4 算术运算
一元的运算有自加自减。二元的运算有+ _ * / %.但是浮点数不可以求余。
Printf怎样显示一个运算式的数字值,其中用到的序列符有%c %d %f等 表达式的类型1:如果两个操作数都是整数,运算结果是一个整数。
2:如果一个操作数十实数,运算结果是一个双精度浮点数值。
整数除法及求反时要注意数据的类型。
运算的优先权和结合权,这个和数学上学的差不多。但是就是先执行求反运算。
在计算机中值可以改变的就是变量。而在一个程序要用到这个变量的时候就是要我们去声明这2.5 变量和声明
个变量。每个存储器位置都有唯一的地址。最好变量取的名字就是我们容易识别的。尽量少用什么某一个字母来代表我们要用的变量名。
一个函数的声明语句要求紧接在函数开始的大括号之后,其中最简单的声明语句就死前面是数因为你声明的变量时随机的所以就存在。你的变量名的就必须进行初始化不然后面用的变量的据类型后面是变量名。在声明的时候就是给计算机要求自己的存储空间。
开始值是多少就不知道了!所以有些变量在用之前就是最好进行初始化。
2.6 案例研究:温度转换
再次回顾了软件的开发过程。最后就是把程序用程序写出来。2.7 常见编程错误和编译错器误 2.8 本章小结
2.9 本章补充:存储器分配 整型数据类型在我们常用的环境里是占4个字节。而字符类型是占1一个字节,短整型的类型是占2个字节,长整型的是占4个字节„„这些数据类型的占用空间可以通过sizeof()来测试。这个测试函数包含在stdio.h这个头文件中。还可以用limits.h这个头文件中的函数来测试这些数据类型的所需空间。介绍到变量的地址就是用于存储这个变量存储器字节的第一个字节的地址。
第三章 数据处理和交互式输入
3.1 赋值
赋值就是把一个数值赋给变量。语法就是:变量=操作数;例子:length = 25,但是要区别于数学中的=号。在这里如果要用等于符号就要用两个= 这样才算是等于。
隐式类型转换就是前面已经声明了类型。如果后面还用浮点数表示则小数点后面的数就会被计算机忽略。比如answer=2.34;如果前面已经说明是整型则answer用的时候就是2。
显示类型转换(强制类型转换类型)就是在要转换的数据类型前面加上期望获得的数据类型;如sum是个双精度的浮点型变量则表达式(int)sum的小数部分就被截去了
复合赋值例如:sum=sum+10这样就是复合赋值。就是第二的sum的值是第一个sum+10;常用的复合赋值符号有+=-= *= /=。其中第一个就是累加。第二个是累减。第三个就是累乘。第四个就是累除。其中累加可以用于计数。累减也可以用于计数。
3.2 数学库函数 就是包含在math.h的头文件中的。有sqrt(x)pow(x,y)exp(x)log(x)log10(x)fabs(x)abs(x)前面的都要求是返回一个浮点型只有最后一个要求返回int数据类型。
3.3 交互式输入
前面我们做的程序都是预先把数据写在了程序里面。非常不灵活。在这节中介绍了scanf()
Scanf的用法前面就是你要输入的数据类型。特别是后面的要输入的变量要在前面的加上地特别注意在数入的时候的幻影换行符。
由于没个程序员的所做的程序最后都是自己来输入校验。所以在把这个程序较给用户的时最好就是有个数据输入的校验。
就是我们在输出的时候要有一定的规格。有一定的格式其中在格式化输出的时候要确定一还有格式修饰符,就是字段的左右对齐和前面的符号要明确。还有十进制八进制和十六进制的之间的转换及表示方法。这个函数我们就可以直接从键盘上得到我们想要的到的数据。
址运算符&一个scanf可以接受很多个数据。
候可能会导致一个不正确的数据的输入。
3.4 格式化输出
下输出的宽度,和左右对齐。
3.5 符号常量
就是我们在写一些程序的时候要用到一些常量的时候我们如果每次都这样输入有可能会出错或者是非常的麻烦。所以就是字程序的开头就用定义一个符号常量,这样就是直接用定义的符号常量。举例:#define pai 3.1416这样就不用经常输入3.1416.3.6 案例研究:交互式输入
计算的是一个圆圈的面积。就是用的是同一个公式但是就是用交互式输入就是可以算很多这样类似的问题啊!
3.7 常见编程错误和编译器错误 3.8本章小结
3.9 本章补充:抽象入门
就是介绍我们在做程序的时候的抽象思维及一些数据的抽象。
第四章 选择控制
4.1关系表达式
① 首先介绍的是if条件句
If(条件)条件为真时执行的语句;
括号中可以用关系表达式和常量;
还有就是ASII编码中的字符的排列顺序。
② 逻辑运算符有&&,||,!第一个就是当两个表达式都成立的时候才会执行下面的语句,第4.2 if语句和if-else语句
① if(表达式)——没有分号 语句; 二个就是只要有一个成立就会立即执行下面的语句,第三个是一元运算符。
② 复合语句
If(表达式)执行语句;
else(表达式)
语句;
就是满足第一条件就执行第一个。否则就是执行第二个。
4.3 if-else链
① if(表达式)
语句;
else if(表达式)
语句;
else if(表达式)
语句;
只要满足其中一个就执行这个条件下的语句。并且这里的关系与缩排无关,只与括号有关。① 语法
switch(整型表达式)
{
case数值1: 语句; break: case数值2: 语句; break: case 数值3: break: default: 语句; 4.4 switch语句
其实这个if和if-else还有swich语句之间是可以转换的.这个程序就是用于数据验证的程序,这样的程序就是可以检验用户输入的是否正确。就可4.5 案例研究:数据验证
以避免一个错误的输入。导致一系列的问题出现。
4.6 常见编程错误和编译器错误 4.7 本章小结
4.8 本章补充:错误,测试和调试
错误检测的时期可分为: ① 在程序被编译前 ② 在程序正在编译时 ③ 在程序正在运行时 ④ 在程序已经执行时,输出被检查后
其中讲了一个例子的分析。
第五章 循环控制
好。
值。
5.5 案例研究:循环编程技术 同样也列出了做一个软件的基本步骤,分别列出了技术1:循环内的选择;技术2:输入数
括号中的中间项目(被测表达式)是一个有效地C语言表达式;for语句和while语句使用即使for语句里面只有一个。也要加如两个分号;
同样使用for循环计算总数和平均值和用while时几乎类似的就是用循环来计数和求平均
5.1 基本循环结构
①C语言提供三个循环语句有while语句for语句do-while语句 ②其中前两个事后测语句最后一个事前测语句 While(表达式)
语句;
当满足里面的条件就执行下面的语句; 5.2 while语句
5.3 利用while循环求和与平均值主要就是利用while的条件来计数这样就可以来求和及平均值。
学会标记还有就是用EOF来结束一个输入。区分break和continue语句
当一个条件后面没有可执行的语句的时候就用空语句来放在后面。就是直接用“;”
5.4 for语句
for(初始化列表;被测表达式;改变列表)语句;
特别注意括号里面用的是分号而不是逗号。
上面的三个结构是可以互相替换的。但是据不同的程序员有不同的风格。所以就有的不同的喜这个表达式的方法没有什么区别。
据验证:技术3交互式循环控制.技术4:计算方程式;这些分别用不同的程序来表示出来啊!
5.6 嵌套循环 最基本的用法就是用几个for来互相包含着这样就就是可以构成几个嵌套循环。并且循环是从外面开始的。具体的例子见书上。
5.7 do-while语句 这个语句一般就是用于对数据的输入验证。它是以后测循环。就是先执行do后面的语句然后再去判断里面的语句的条件是否满足。
5.8 常见编译错误和编译器错误 5.9 本章小结:分别列出了各个语法; 一段重复的代码就是一个循环。并且只要循环里面的语句值不为0那么就是执行这个条件后面的语句。本章介绍的几个循环式可以互相转换的。但是各个的方便之处是不相同的。对于不同的语句就是用不同的语句。并且都是计数控制。前一章讲的就是用条件来控制的。
第六章 使用函数的模块:第一部分
6.1 函数声明和参数声明 被调用函数能够接受被执行这个调用函数传递给它的数据。只有在被调用的函数成功地接受数据之后,数据才能通过处理产生一个有用的结果。① 函数原型
函数的声明语句称为函数原型。函数原型声明将被这个函数直接返回的数值的数据类型及语法
返回数据类型
函数名(参数数据类型列表);
例子:int fmax(int,int);这个就是返回个整型的调用返回整型数。并且接受的是两个整型的② 调用函数
包含在圆括号中的项目就是函数的参数。③ 函数首部行
其用途就是确定函数返回得得数值的类型,提供函数的名称,指定函数期望的数值的个数,注意函数的声明是在函数体内进行的按照惯例直接放在函数开始的大括号“{”后。④ 语句的放置
最好就是遵循标准的格式
预处理命令
符号常量
函数原型可以放置在这里
Int main(){ 函数原型能够放这里
变量声明;
其他可执行语句;
return 数值;
} 被调用函数必须提供以下两项:
返回数值的数据类型,这在函数首部行中指定。返回的实际数值,这通过返回语句指定 为返回一个数值,必须使用一个return语句,return(表达式);上面的括号可以有和没有。① 占位函数
这个只是作用起来正确的函数就是一个假冒的接受参数的适当个数和类型,切喂这个函数占位函数的最小要求就是它能与调用模块一起编译和连接。②带空参数的函数
一个带空参数的函数通过它的函数名与被要求的跟随在函数名后的圆括号内不写任何内容
当他被调用时需要传递给他的数值的数据类型。
参数。
任何表达式都可以作参数。
次序和类型。函数体就是操作传递来的数据,并且最多直接返回一个值给调用函数
6.2 返回一个数值
调用返回一个适当类型的数值都是我们测试所需要的。就是假冒函数。的方式调用。
6.3 案例研究:计算正常年龄标准 我们就是从中学习它的分析问题的方式。6.4 ① 标准库函数 所有C语言程序都需要访问一个标准的,预先编程的,用于处理输入和输出数据,计算数学量和操作字符串的函数集,其中一些事数学函数。
符。
② 存储地址
能够存储地址的变量叫做指针变量。指针只是拥有存储其他变量的地址的变量。为了使用已存储的地址,C语言给我们提供了一个间接运输符,*。
当使用指针变量时,所获得的数值总是通过一个地址首先到达的指针而得到。③ 声明和使用指针
指针在使用之前必须要进行声明。
我们不但可以使用指针的地址传递的地址来进行传值。还可以通过这个地址改变变量的值。一个指针的声明必须包含正被指向的变量的类型。④ 传地址给函数
我们常用的传地址的函数就是newval(),示例见程序7.7。
使用系统库函数中可用到的函数之前,你必须知道: 可用到的函数名 函数所要求的参数
函数返回的结果的数据类型(如果有的话)函数功能的描述
如何包含含有期望的函数的库函数
所有的库函数的原型至少包含在一个形成标准C语言库函数的标准头文件之中。② 数学库函数
就是包含在math.h这个头文件中的一些函数 ③ rand()和srand()函数
这两个函数就是建立一个伪随机数字。
具体用法通过例子程序6.8而且具体用到缩放这个用法 ④ 输入输出库函数
包含常见的printf和scanf还有putchar和getchar等一些函数 ⑤ 字符处理函数
包含在ctype.h里的一些函数见表6.2都是用来处理字符的函数。⑥ 转换函数
包含在stdlib.h中的三个函数见表6.3 什么时候使用全局声明及全局变量的误用。
变量的作用域定义了能够使用该变量的程序内的位置。
其中有四种存储类分别是auto,static,exrern,register.分别是自动,静态,外部,寄存器这四种本节还介绍了怎么用一个外部变量来调取另一个里面来用。
被调用函数从他的调用函数接受数值,把所有的数值存储到它自己的局部参数中,适当地① 传地址给函数
传递一个变量的地址给函数要求把地址运算符&放置在变量明的前面。
编写一个函数接受和存储及使用一个被传递的地址的要求俩个新的元素:指针和间接运算7.2 变量存储类
类型其中auto,static,register.是局部变量。剩下的一个是用于全局的变量类型。
7.3 引用传递
操作这些参数且直接返回最多一个数值。
7.4案例研究:交换数值 7.5递归
用一个阶乘来说明了一个递归的用法。
比较递归和迭代两个不同的地方的不同的用法。在不同的地方用的是不同的方式。如果遇到高级的程序就要用递归来做。如果来用迭代就没有递归方便些。
7.6常见的编译错误和编译器错误 7.7 本章小结
第八章 数组
一般的变量只可以存储一个值。在本章就引进数据结构,最简单的数据结构就是数组用于存储和处理一组数组,它们具有相同的数据类型,形成一个逻辑组合。
8.1 一维数组
一维数组也叫单维数组。
存取相同数据类型的一组数据一般的声明就是:数据类型,叔叔名称和数组中项目的个数。在C语言中,所有数组的开始索引值都是从0开始。下标就是用于偏移的量的确定。
例子就是:grade[10]就是grade这个数组里的第11个数组。任何一个计算整数的表达式都可以做下标。例子:grade[2*i] 数组值的输入和输出可以用scanf然后输出用printf.在处理字符的时候就可以用getchar和有关存储数据到一个数组的注意事项应该提及。C语言并不检查正在被使用的索引数值(称putchar两个函数来处理。为边界检查)。
8.2 数组初始化
在函数内声明的数组称为局部数组,在函数外声明的数组称为全局数组。所有全局数组和静态数组的单独元素默认在编译时被设置为0。初始化可以跨越多行。
注意一个字符串是包含在双引号中的字符序列。#define ARRAYSIZE 7 double length[ARRAYSIZE]={8.8,6.4,4.9,11.2};只有length[0],length[1],length[2]和length[3]用列表中的数值初始化,其他的数组元素将被注意字符串是包含在双引号里面的字符序列。单独的数组元素可传递到一个函数。
传递一个完整的数组到一个函数在许多方面是比传递单个元素更容易的操作。被调用的函初始化0,8.3 数组作为函数参数
数接受对实际数组的访问,而不是这个数组的数值的复制品。
声明数组int nums[5] 调用函数findmax(nums)函数首部int findmax(int vals[5])这里的vals和nums是是同一个数组。
就是运用数组来存数字然后来求几个数的平均值和标准偏差。二维数组有事也称为一个表 8.4 案例研究:计算平均值和标准偏差 8.5 二维数组
二维数组中的元素通过它在数组中的位置被标识。
与一维数组变量相同,二维数组能够用于任何标量变量是有效的位置。二维数组能够在它在声明语句中把初始化值分开为不需要的,一个二维数组的初始化是按行的次序进行的。二维数组的初始化和一维是一样的,就是函数在调用时候也是一样的做法。内部元素定位算法
数组元素i的地址=数组开始地址+偏移量 数组名就是元素的地址。多维数组
虽然多余二维数组时不怎么用但是C语言是允许任意维数的数组被声明,方法就是列出这被声明的时候初始化,方法是把初始值列表子在大括号中并用逗号分开它们。首先是第一行。
个数组的所有维数的最大数值。
8.6 常见编程错误和编译器错误 8.7 本章小结
8.9 补充查找排序的方法
第九章 字符数组
9.1 字符 基础知识
字符串文字是用双引号包含的字符序列。
主要介绍什么是字符及字符怎么存储。给出了一个列表。
字符串的输入和输出用到了gets()scanf()gerchar()puts()pintf()putchar()前面是三个输入而且scanf输入字符串时候不用&符号
字符串处理能够使使用标准库函数或标准数组处理字符串。Null字符本身就是有一个为0的数值,这里讲的都是包含在string.h中的一些处理字符串的一些函数。
其中还得注意ASCII中的字母是由A到Z这样一次排的。空格小于所有的字母和数字。字符函数就是包含在ctype.h中的一些处理字符的函数。转换函数就是包含在stdlib.h中的三个函数和易转换的函数 输入的数据必须遵循下面的条件。数据至少包含一位字符
如果第一字符时+或-符号,这个数据至少包含一位数字。跟随第一个字符之后,只有数字0到9是可以接收的。
建立个人函数库就是把自己编好的一些函数储存起来到时候就可以在自己的程序里面可以#include
9.3 输入数据验证
用其中语法是这样的
9.4 格式化字符串
内存中的字符串转换就是介绍一些函数scanf()spintf这两个函数可以适当的转换为指定的格式化字符串 用这种方式储存和使用控制字符串的技术。对于清楚地把格式字符串与其他数据类型。
变量声明一起列在一个函数开始出是非常有用的。
9.5 案例研究:字符和单词数 9.6 常见编程错误和编译器错误 9.7 本章小结
第十章 数据文件
10.1 声明,打开和关闭文件流
首先介绍文件和文件流的概念 声明文件 FILE *inFile 这个就是声明一个叫inFIile的文件
每个文件流的名字前面必须有一个星号打开文件流 Infile=fopen(“princes.bnd”,“w”);就是打开名字叫这个的一个文件流 关闭文件流
Infile=fclose(infile);
写入一个文件用到了三个函数fputc fputs fprintf;从文件中读取用到了fgetc fgets fscanf 这三个函数
标注设备文件就是我们常用的显示器打印机还有键盘这些就是标准设备文件 随机访问文件就是我们可以根据自己的需要来在不同的地方来选择怎样的读取 用到了rewind fseek ftell 这三个函数
就是在我们检测到一个文件如果没有打开的时候就要返回一个文件名 就是创建我们一些要用到的表格日期之类的表 给出了一个标准的软件的过程 10.6 写入和读取二进制文件
和打开一般的文件时一样的做法就是在打开的方式后面加上了一个b字母而已 10.7 常见的编程错误和编译器错误 10.8 本章小结 10.9 本章补充 控制码
就是介绍了怎样制怎见写入或输出的一些格式的控制码 10.2 读取和写入文本文件
10.4 传递和返回文件名
10.5 案例研究:创建和使用常量表
第十一章 数组 地址和指针
素
11.2指针操作
指针进行运算是可以用来做一些常见的运算。例如累加和递减啊!都可以的。指针在用之前也要初始化
11.1 数组名和指针 本小节就是回顾以前的知识把指针数组联系起来。就是运用指针来调用一个数组里面的元
11.3 传递和使用数组地址
介绍我们在调用函数的时候是把数组的地址传递给函数。并且在函数里面使用。高级指针符号就是在我们以前学指针的基础上用的指针的指针。
以前我们就是用数组来处理字符串而现在我们可以用字符来处理字符串。也可以用一些我11.4 使用指针处理字符串
们以前用的字符串来处理。
11.5 只用指针创建字符串
Char message[81] = “this is a string”;Char *message[81] = “this is a string”;这两个是等价的具有相同的作用所以就可以用指针来处理字符串。指针数组
11.6 常见编程错误和编译器错误 11.7 本章小结
第十二章 结构
12.1 单一的结构
Struct { int month;int day;int year;}birth 这个就是单一的结构结构在使用之之前也是要声明的。
就像试验中的要存五个学生的三门成绩一样。用结构数组就会方便了很多的。
一旦声明了一个结构的数组,一个特定的数据项就可以通过给出这个跟随一个句点和一个12.2 结构的数组
合适的结构成员的数组中期望的结构的位置进行访问,12.3 传递结构和返回结构
就是把一个结构传递个一个函数然后在这个函数用完之后就返回这个结构。在return的括号里面加上你调用的结构的名称。
联合是一种保留两个或多个变量在相同的区域的数据类型,这些变量可以是不同的数据类型。
单独的联合成员使用语结构成员相同的符号访问
12.5 常见的编程错误和编译器错误 12.6 本章小结 12.4 联合
第十三章 动态数据结构
13.1 链表简介
链表是一组每个结构至少包含一个成员的结构,这个成员的值是这个列表下一个逻辑上有就是上一个得后面存的下一个结构的地址。这样通过地址把这几个结构串起来的。这节介绍的就是我们曾经用个数组来做事的时候。有时候要的空间会有很大的浪费。这样序的结构的地址。
13.2 动态存储分配 我们在这节中介绍的是动态存储分配。我们可以给自己需要的数据类型要空间这样就不会导致一些空间的浪费。
1334栈
栈是一种特殊的链表类型。特点是一个先进后出的列表; 栈的实现是要四个组成部分: 一个结构定义
一个指定当前栈顶结构的方法
一个放置一个新结构在这个栈上的操作 一个从这个栈中移去一个结构的操作。队列是先进后出的结构。
先是要入队然后用的时候就是出队。这个也是要用指针来操作的。
本节介绍的就是在这些链表中的一些结构是随时可以被调换位置的。
但是调换的时候是要把前一个的地址存下来。这样我们在换的时候就可以方便的换了。还可以插入和删除。只要有这个列表的前一个地址和后一个地址。这样就是可以的。13.4 队列
13.5 动态链表
13.6 常见编程错误和编译器错误 13.7 本章小结
第十四章 新增的能力
14.1 新增的特征
就是我们可以用typedef这个来定义一类数据。比以前的方便了。不是增加了麻烦而是为我枚举长量 条件表达式
表达式1?表达式2;j表达式3 意思是表达式1成立的话就是执行表达式2否则就是执行表达式3 是个三元运算符 goto语句
就是个跳转语句。
在我们平常的编程中我们尽量就不要用这个语句。这是一个不好程序的标志。
按位运算也可以给我们节省很多的空间。按位与运算 按位或运算 异或运算 补码运算
不同大小的数据项 位移运算符
这节介绍的宏就是我们可以定义一个字符替代一个东西 们以后写程序提供了更快捷的方式。
14.2按位运算
14.3 宏
#define FORMAT “the answer is %fn” Printf(FORMAT,15.2)FORMAT就是替代the answer is %fn” 这个就是宏的用法
14.4 命令行参数
就是我们在main函数里面传入数字就可以进行一些命令的操作。实例见14.3这个程序。
14.5 常见编程错误和编译器错误 14.6 本章小结
通过学习这个课程我觉得自己还有很多的知识是不懂得。所以希望以后自己在这个方面还要加强。毕竟我们是第一次接触这个C语言所以。刚学的时候还是有很多的困难。但是我是不会放弃的。回家我还会继续去了解这个东西的。一定把自己不懂的地方给搞懂。
10.C语言概念题 篇十
(B)一个C函数可以单独作为一个C程序文件存在(C)C程序可以由一个或多个函数组成(D)C程序可以由多个程序文件组成
4、以下叙述中错误的是_____________。(标准答案:A)
(A)C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令(B)C语言源程序经编译后生成后缀为.obj的目标程序
(C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中(D)C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
13、以下叙述中错误的是A(A)使用三种基本结构构成的程序只能解决简单问题(B)C语言是一种结构化程序设计语言(C)结构化程序由顺序、分支、循环三种基本结构组成(D)结构化程序设计提倡模块化的设计方法
18、以下关于结构化程序设计的叙述中正确的是
(A)一个结构化程序必须同时由顺序、分支、循环三种结构组成(B)有三种基本结构构成的程序只能解决小规模的问题(C)在C语言中,程序的模块化是利用函数实现的(D)结构化程序使用goto语句会很便捷 标准答案:C
19、对于一个正常运行的C程序,以下叙述中正确的是C(A)程序的执行总是从main函数开始,在程序的最后一个函数中结束(B)程序的执行总是从程序的第一个函数开始,在main函数结束(C)程序的执行总是从main函数开始
(D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
33、以下选项中关于程序模块化的叙述错误的是
(A)把程序分成若干相对独立的模块,可便于编码和测试
(B)可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序(C)把采用分成若干相对独立、功能单一的模块,可便于重复使用这些模块
(D)可采用自顶向上、逐步细化的设计方法把若干独立模块组装成所要求的程序 标准答案:D
34、以下叙述中正确的是
(A)C程序中的注释只能出现在程序的开始位置和语句的后面(B)C程序书写格式严格,要求一行内只能写一个语句(C)用C语言编写的程序只能放在一个程序文件中(D)C程序书写格式自由,一个语句可以写在多行上 标准答案:D
36、以下关于C语言数据类型使用的叙述中错误的是(A)若只处理“真”和“假”两种逻辑值,应使用逻辑类型(B)若要保存带有多位小数的数据,可使用双精度类型(C)整数类型表示的自然数是准确无误差的
(D)若要处理“人员信息”等含有不同类型的相关数据,应自定义结构体类型
38、以下叙述中错误的是
(A)C程序在运行过程中所有计算都以二进制方式进行(B)C程序在运行过程中所有计算都以十进制方式进行
11.C语言实验教学方法探讨 篇十一
关键词:C语言;实验;教学方法
中图分类号:G642文献标识码:A文章编号:1009-3044(2007)12-21728-02
Discussion of the Experiment Teaching Method in C-programming
LIU Han-ying
(Department of Electronic and Computer, Guilin University of Technology, Guilin 541004, China)
Abstract:C-programming experiment is important part of C-programming teaching. As the result of each kind of reason, there are some disadvantages in the experiment teaching of C-programming: the experiment passing rate of national examination is low; the teacher can't instruct because of so many students; the students written down the programs without preparation. The students don't know how to do with the errors. With some teaching examples of the C-programming experiment, this paper propose some teaching methods, The experiences show that the proposals stimulated the students' enthusiasms of studying, and improved the quality of experiment teaching.
Key words:C language; experiment; teaching method
《C语言程序设计》(以下称C语言)是计算机及相关专业的一门专业基础课,是学习其他专业课程如《C++与面向对象程序设计》、《JAVA》、《数据结构》、《数据压缩》、《计算机图形学》的基础,C语言实验是C语言教学中的一个重要环节,常常占总学时的2/5以上。C语言实验教学有利于增加学生对理论知识的理解,调动学生的学习主动性,提高学生思维能力和动手能力。然而,由于各方面的原因,C语言实验教学中存在一些问题:全国等级考试实验通过率不是很高;C语言实验往往是大班上课,学生人数较多,老师指导不过来;学生课前没有预习,上机时直接输入参考程序,实验成了打字练习;英语水平不高,对错误提示无从下手;部分学生以为编译通过就是调试成功,不会使用调试工具。笔者近年来多次承担C语言实验教学任务,总结了一些教学方法和经验,下面是笔
者对C语言实验教学方法的探讨。
1 思想上重視实验环节,提高学习兴趣
由于C语言教学往往是大班教学,在考核方式上常常采用的是理论考试,部分学生不重视实验课,课前不预习,上机时就直接输入指导书上的参考程序,实验效果很差。因此,为了提高实验教学的效果,应将上机考核作为C语言考核的重要组成部分,让学生从思想上重视实验环节,做好课前预习。同时,笔者把一些用C语言程序实现的小游戏或画的图形图像演示给学生看,激发学生的学习兴趣,取得了较好的效果。
2 编写适宜的实验指导书
目前,有许多与C语言课程配套的实验指导书,这些指导书常常配有答案[1]。学生拿到指导书后,看有答案,常常不自己思考就将书上的程序录入进去,编译出错时不是根据错误提示查找错误原因,而是从头到尾地与书上程序比对,改正录入错误,遇到书上有错,就无从下手。整个上机练习成了打字练习。笔者认为,一本适宜的实验指导书应具备以下几点:
(1)实验指导书要与理论知识配套
C语言实验教学的目的是通过实验,让学生增强对理论知识的理解,学会自己编写、调试程序。因此,实验指导书的内容要与理论教学配套,有针对性地设置实验内容,且实验时间安排要合理(略晚于理论教学),参考程序与实验指导书分离。
(2)实验内容难度适宜
由于种种原因,学生能力上有很大差异,为此,在编写实验指导书时要兼顾各个能力层次的学生,设置基础题、中等难度题和较难题多个层次。笔者从历年的考试题中抽取一些具有代表性的改错题作为基础题练习;在此基础上,设置一些程序设计题让学生编写、调试;对学有余力的学生,可设置一些难度较大的题目,组成小组讨论。
3 养成良好的编程习惯
3.1 注意编程思想
算法是程序设计的精髓,语言只是表示形式,没有正确的计算机算法,就无法用计算机正确地解决问题。对于每一道题目,首先找出解决问题的算法,画出盒图,最后才是编写程序,这样可以减少出错的可能性。
3.2 使用有意义的标识符
C语言教材常常使用i,j,k,a,b,c几个字符作为标识符,很多学生在学习C++时觉得很难,其中一点就是C++中教材中的标识符较长。笔者建议学生,在编写程序时尽量使用一些有意义的字符串作为标识符,尽量不要用l作为标识符,提高程序的可读性,如输入一系列学生成绩时使用的是score1,score2……,而不是a1,a2……。
3.3 养成良好的程序录入习惯
有的学生在录入程序时不注意书写格式,在遇到错误时常常不易查找。笔者要求学生使用锯齿形的书写格式,在录入大括号、小括号、引号等时都要做到成对录入,有较地提高了程序录入的准确率。
4 改革实验辅导方法
4.1 网络教学软件的使用
传统的实验课是老师先布置实验习题,学生练习,遇到问题举手,老师解答。然而,C语言实验往往是大班教学,学生人数较多,许多问题十分相似,老师常常为同一问题解释多次,指导不过来。针对这一问题,笔者使用了红蜘蛛软件[3],这个软件可以在局域网上实现多媒体信息的教学广播,是一款实现在电子教室、多媒体网络教室或者电脑教室中进行多媒体网络教学的非常好的软件产品,集电脑教室的同步教学、控制、管理、音视频广播、网络考试等功能于一体,并同时实现屏幕监视和远程控制等网络管理的目的。该软件是专门针对电脑教学和培训网络开发,可以非常方便地完成电脑教学任务,包括教师演示、学生示范、屏幕监视、遥控辅导、屏幕录制、屏幕回放、网络考试、网上语音广播、两人对讲和多方讨论、联机讨论、同步文件传输、提交作业、远程命令、获取远端信息、电子教鞭、电子黑板与白板、网上消息、电子举手、锁定学生机的键盘和鼠标、网络唤醒、远程关机和重启、学生机同步升级服务、远程安装、倒计时、班级和学生管理等。笔者通过文件传输功能,将实验题目(如基础改错题)发放给学生,让学生练习,然后通过提交作业功能抽一名学生的作业来讲解。
4.2 总结错误
针对一些学生英语水平不高,对错误提示无从下手的现状,笔者总结了上机时经常遇到的错误,如语法错误、逻辑错误等,罗列给学生,并从一些试题中挑选一些适宜的改错题传给学生练习,学生不用从头到尾地录入程序,提高了实验效率。
4.3 调试方法的使用
調试的目标是寻找软件错误的原因并改正错误[2],一般有以下几种调试途径:
4.3.1 蛮干法
上机时指导学生查找错误,学习使用程序调试工具,跟踪程序的执行过程,发现较隐蔽的错误,提高学生动手解决问题的能力。如学生编写如下程序计算 (用公式 )时,发现结果不对,笔者指导学生使用调试工具观察变量pi和t的值,很快找到了错误原因,同时学生也练习了调试工具的使用方法。
#include
#include
void main()
{float s,n,t,pi;
t=1;pi=0;n=1;s=1;
while(fabs(t)<1e-6)
{pi=pi+t;
n=n+2;
s=-s;
t=s/n;}
pi=pi*4;
printf("pi=%fn",pi);}
4.3.2 回溯法
从发现症状的地方开始,人工沿程序的控制流往回追踪分析源程序代码,直到找出错误原因为止。如上例中,用go to cursor执行到pi=pi*4,发现pi的值不对,则往回分析代码,很快可以查出是循环条件不对。
4.3.3 对分查找法
对分查找法的基本思路是,如果已经知道每个变量在程序中若干个关键点的正确值,可以用赋值语句或输入语句在程序中关键点附近“注入”这些变量的正确值,然后运行程序,并检查所得到的输出。如果输出结果是正确的,则错误原因在程序的前半部分;反之,错误原因在程序的后半部分。
4.4 让学生自己调试程序
由于学生多,问题多,为了快速地解决问题,有时老师会帮学生调试程序来提高效率。笔者认为,老师应指导学生调试程序,而不是帮学生调试程序,学生只有自己动手,动脑,才能真正学会调试方法。同时笔者鼓励学生之间互相帮助和交流,培养团结协作的精神,学生在帮助同学的同时自己也得到学习。
5 结束语
以上是笔者对《C语言程序设计》实验教学方法进行的探讨,通过实践发现,这些方法有助于激发学生学习自觉性和主动性,提高学生分析问题和解决问题的能力,达到提高教学质量的目的。
参考文献:
[1]谭浩强.C语言程序设计题解与上机指导[M].北京:清华大学出版社,2005.
[2]张海藩.软件工程导论[M].北京:清华大学出版社,2003.168.
[3]http://www.forclass.com/.
12.C语言指针应用 篇十二
一、理解指针
在C语言中任何数据只要定义了, 在内存中就是有一定的存储单元的。存储单元就是变量在计算机中的存储地址, 指针就是用来表示这些地址的变量。所以简单地说, 指针就是地址, 变量的指针就是变量的地址, 这里还涉及一个概念就是指针变量, 所谓指针变量就是用来存放指针 (地址) 的变量。例如:int a;假设a的地址是2000, 而2000又存储在变量point中, 那么变量point就是指针的变量简称指针变量, a就是指针变量所指向的变量。很多初学者都存在这样的误区:既然指针放的是地址, 而2000正好是变量a的地址, 那么对于指针point就可以这样赋值:point=2000, 这是错误的, 这里的2000表示的不是地址是一个整型数据。所以对于指针变量的赋值只能用取地址运算符“&”进行赋值即:point=&a;&a即为a的地址。
二、指针与函数
指针作为C语言的精华有很多用途, 除具有一般的功能外, 其中具体特殊功能的应用总结起来有三个方面:一是用于在函数中可以返回多个值;二是可以实现动态调用函数;三是实现数组的动态定义。其中, 普通变量作为函数的参数, 传递的是变量的值, 因此只能带回一个返回值, 但在有些场合需要返回多个值, 这就必须用到指针做函数的参数, 因为指针作为参数传递的是地址, 让实参和形参指向同一个变量的地址, N个形参所指向的变量的值改变了, N个实参的值也自然改变了, 从而实现了带回多个返回值。这里举个例子, 编写一个函数实现两个数从小到大输出。这个程序需要子函数实现两个数的交换, 把交换后的两个值通过指针传回主函数输出, 传回来的是两个值。所以普通变量做函数的参数是无法实现的, 只能用指针作为函数的参数。具体实现:
子函数实现交换:
由此可见, 要通过函数调用得到N个返回值可以通过以下三步实现: (1) 主调函数中设N个变量, 用N个指针指向他们; (2) 将指针变量作实参 , 将N个变量的地址传给形参 ; (3) 通过形参指针变量指向的改变, 改变N个变量的值。最后主调函数中就可以得到N个变量的返回值。
三、指针与数组
前面提到任何数据都有存储单元, 都有指针。所以, 从这个角度出发可以将指针分为:指向变量的指针、数组指针、字符指针、指向指针的指针、函数指针、结构变量的指针及文件指针, 等等。其中, 指向变量的指针就是存储变量的地址的, 这是指针最简单的一种类型。那么一个变量有地址, 一个数组有若干个元素, 每个元素都有一个地址, 所谓数组的指针, 就是指数组的名称, 实际上是指向整个数组空间的起始地址。数组元素的指针是数组元素的地址。例如:int a[10];int*p;这里的数组名a就是数组的首地址, 本质上是一个指针。a[2]表示距离a指向空间向后2个位置所在空间中的存放的值, 所以a[2]=* (a+2) 。那么如果让p=a, p就是指向数组的指针 , 对于a我们可以做加减整数运算, 利用它表示数组中任何数据的值。那么对于指针也可以通过加减整数运算来表示数组中的任何数据。指针变量加上或减区一个整数n表示把指针指向的当前位置向前或向后移动n个位置。具体移动的字节数和指针数组的类型在内存所占的字节数有关系, 如果指针数组类型为整型, 在内存中占2个字节, 那么, 指针p+1, 实际上的地址值就是原址加2, 对于数组元素来说就是指针向后移动一个元素。如int a[10], *p, *s;p=a;s=p+2;其中s的值表示数组中首地址向后移动2个数组元素的位置 , 表示a[2]对应的地址 , 而具体移动的字节数则为4个字节。为了表示两个地址间存在的距离, 可以通过指针间的减法实现。指针之间是不能有加法操作的, 指针的加减运算只能对数组指针变量进行, 对指向其他类型的变量的指针变量做加减运算是毫无意义的。而且两个指针变量之间的运算只有指向同一数组时它们之间才能进行运算, 否则运算将失去意义。
四、结语
C语言是到目前为止学习最多的程序设计语言之一 , 也是国外大学计算机专业唯一的必修课程。在整个C语言教学中, 指针是一个十分重要的部分, 也是最难掌握的部分之一。本文从对指针概念的理解、指针在函数和数组的使用等方面系统论述了指针, 目的是让大家清晰地了解指针、掌握指针, 从而高效地应用指针。只有掌握好指针, 才能充分发挥C语言的优势。
摘要:“指针”是C语言的精髓, 是C语言区独有的功能, 在C语言的程序设计过程中起着不可或缺的作用。只有学好了指针才算掌握了C语言, 同时指针也是C语言最危险的特性, 如果使用不当, 则很容易指到意想不到的地方, 产生错误很难发现。应该特别注意指针教学, 高效应用指针, 发挥C语言的优势。
关键词:C语言,指针,函数,数组
参考文献
[1]谭浩强.C程序设计教程.北京:清华大学出版社, 2008, 11.
[2]陈刚.C语言程序设计.清华大学出版社, 2010, 2.
[3]魏海新, 李燕.C语言程序设计实用教程.机械工业出版社, 2007, 7.