C语言学习方法

2024-05-24|版权声明|我要投稿

C语言学习方法(精选12篇)

C语言学习方法 篇1

现阶段, C语言已经成为计算机、自动化学科、电子专业等多个专业学习的重要内容。学生要想掌握和学习C语言, 就必须要清楚地认识到C语言的重要性。C语言的发展离不开生活, 只有从生活实际出发, 寻找C语言使用的根源, 才能完善C语言学习方法, 使其更具灵活性。

1 C语言概述

语言作为人类的重要交际手段, 在整个人类的发展过程中起到了不可替代的积极作用。它作为人与人之间正常沟通和交流的桥梁, 无形中加强了人与人之间的关系。C语言和语言类似, 是维持计算机运用的重要语言形式, 在众多形式的语言编程过程中占有十分重要的作用。它是高级计算机编程语言和低级计算机编程语言的集合体, 具有二者的共同优势。因此, 掌握C语言学习方法尤为重要, 也只有这样才能提高C语言的灵活性和可靠性[1]。

2学习C语言的重要性

C语言已经成为学校教学最重要的组成部分。它具有使用简单、操作方便、功能强大、可实用性强等诸多优点。不仅如此, C语言还汇集了高级编程语言的诸多优势, 能够直接编写各种系统性软件, 同时也能编写应用型软件。现阶段, 市场上的很多软件编程中运用的都是C语言。由此可见, 学习C语言对人们日常的生产生活有着十分重要的作用[2]。

3语言的学习方法路径

3.1 C语言的运算学习

运算是学生学习C语言的基础和前提。通过运算方法能够有效地学习语言。俗语“书读百遍, 其义自见”说的就是这个道理。因此, 要想熟练掌握C语言学习方法, 提高C语言运用的能力和水平, 就要在平时的学习中重视运算方法的重要性[3]。运算方法不仅是学校教学的重要组成内容, 同时也是提高C语言学习的有效路径。初步学习运算的学生只要能够大致掌握运算的符号和顺序即可, 然后进行深入运算, 将运算过程中不懂符号和难点用笔标记下来, 当进行再次运算的时候, 就不用将所有的程度都运算一遍, 只要将不懂的地方和运算难点相结合即可。最后, 在运算结束的时候, 学生要进行实际操作, 看C语言是否能够正确运行。值得注意是, 学生在C语言学习过程中要注重实践, 单独进行操作, 确定每一步骤都正确无误后才能应用。可见, 要做到与时俱进、开拓创新, 在实践的基础上创新, 在创新的基础上实践, 才能使学生真正掌握运算方法这种C语言学习方法, 进而提高学生的自主学习能力和动脑能力[4]。

3.2 C语言的背诵学习

学生如果能将C语言操作的相关程序从头到尾流利背诵下来, 那么即使没有进行深入的学习和分析, 也能够正确地运行C语言所编辑的程序。背诵C语言操作程序不仅是提高学生语言能力的有效方法, 同时也是培养学生思维形式的重要手段, 从而领悟C语言的编程方法和奥秘, 掌握C语言学习的真谛, 使学生真正爱上C语言。例如, 在进行货物操作和计算的时候, 可以将操作语言和程序准确背诵, 并在实际考试中加以运用, 做到活学活用。在背诵的基础上加以理解和强化, 适当的死记硬背也未尝不可。可见, 提高学生的C语言能力和理解能力, 可让学生能够通过背诵的方法消化C语言学习方法。

3.3 C语言的编程学习

无论是运输还是背诵, 其终极目的都是为编程服务的。 因此, C语言编程才是掌握语言学习方法的根本。学生只有扩大学习途径, 增强学习能力, 丰富地进行各种C语言实际编程操作, 通过阅读课本和编程操作强化能力, 才能不断积累和学习C语言。C语言编程不是注重数量的积累而是质量的提高。有些学生做了10多道C语言的编程题, 还不如质量高的同学做1道编程题。由此可见, 学生提高编程速度的同时, 也要注重质量的提高。只有建立健全C语言阅读学习体系, 创新C语言阅读方法, 注重理论与实践二者有机结合, 才能从根本上提高C语言编程的质量和水平。因此, 在C语言教学过程中, 只有做好编程准备, 才能在编程的基础上进行学习, 从而养成良好的编程习惯[3]。另外, 编程内容的选择也十分重要, 应该选择具有代表性的经典例题进行分析和学习, 通过提高编程方法加强编程能力的锻炼, 从而明确C语言学习的重要性, 提高学习能力和水平。

3.4 C语言的指针学习

指针概念是整个C语言学习中的重要概念, 同时也是C语言学习的根本所在。它是一个不断变化的数量, 是C语言编程中的变量。因此, 在实际编程过程中, 需要给这个C语言安排不同的地址, 这是根据题目的具体要求而设定的。指针学习的难点就在于它的灵活性很强, 没有固定的值, 因此很难把握。学生只有将其知识做到融会贯通, 才能提高编程理解能力和记忆能力。因此, 学生要通过指针学习方法, 对C语言内容和形式上做出更为深刻的理解, 将C语言理论知识与实践能力二者有机结合在一起, 从而提高C语言的综合运用能力, 真正做到与时俱进、开拓创新, 在实践的基础上创新, 在创新的基础上实践[5]。

3.5 C语言的修改学习

C语言书写比较灵活、自由, 而且没有严格的语法约束。 这既是C语言的优势所在, 同时也给C语言的修改学习带来了一定的难度和问题。例如:当计算机提示第40行发生错误时, 如果在第40行没有找到错误, 就需要从第40行往前开始寻找错误。这无形增加了查找错误的范围, 因此修改难度加大。在C语言修改学习过程中还需要注意, 一条错误的C语言编程语句很容易引发多条错误信息的提示, 因此只有找到一条错误信息并且能够准确修改, 其他的错误信息才能随之消失不见。一般情况下, 都是通过第一条错误信息来进行提示。当修改后必须进行运行时, 如果正确则无需修改其他信息;反之, 如果错误, 则需要逐条修改并且逐条运行, 一直到错误信息全部修改正确为止。C语言修改学习并非纸上谈兵, 重点不在于能否找出错误, 而是如何才能进行正确科学的修改。实践证明, 将理论知识与实践教学二者有机结合, 才能在实践的基础上积累丰富的经验。

4结语

综上所述, C语言既是计算机编程教学的重要组成部分, 同时也是人们进行日常交流和学习的重要工具, 对计算机语言产生了十分重要的影响。C语言来源于生活, 同时又服务于人类生活。因此, 只有掌握C语言的学习方法, 才能提高C语言学习的质量、水平以及语言学习的效率。总之, C学习语言是一项漫长而艰巨的任务, 需要学校、教师以及学生三者的共同努力, 只有这样, 才能真正掌握C语言学习的本质, 从而发现C语言学习的价值。

参考文献

[1]汤可宗.舒云.浅谈C语言的学习方法和技巧[J].科技信息, 2013 (9) :183.

[2]田美艳.计算机中C语言的应用特点分析[J].电子制作, 2015 (8) .

[3]余勍, 王捷.浅谈C语言编程技巧在C语言学习中的应用[J].信息通信, 2013 (7) :108.

[4]池云.高职C语言程序设计教学改革的研究[J].辽宁行政学院学报, 2011 (4) :122.

[5]秦鹏.浅谈C语言及C语言学习方法[J].青春岁月, 2013 (6) :277.

C语言学习方法 篇2

学习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语言,你还要具体情况具体分析。

C语言教学方法创新研究 篇3

关键词:C语言 教学方法 创新

中图分类号:G710 文献标识码:A 文章编号:1674-098X(2014)08(b)-0134-01

C语言课程是高校计算机和核心课程之一,从这门课程的实际内容上看,学生只有在上机操作中才能真正掌握所学理论知识,只有通过长时间的上机操作,学生才会学会一些编制程序和调试程序的基本技巧,也只有通过实践操作才能让学生发现自己哪部分知识比较欠缺,进而进行有针对性的学习和实践。然而,在大多数高校内,一些老师还是应用理论讲授为主的传统教学方法,这种方法已经不太适应时代发展的需求,因此,高校要与时俱进地实施教学方法改革,培养学生的操作能力。

1 C语言课程的重要性

C语言是计算机专业学生进行深入学习计算机知识的基础课程,只有系统掌握了这门课程的基础知识,在后续学习时才会得心应手。

1.1 C语言课程是学习程序设计的入门课程

计算机专业最主要的目的就是教学学生进行程序设计,程序设计领域中应用的最广泛的语言就是C语言。这种语言满足高级程序设计语言的需要,还具备对计算机的底层硬件进行方便、直接地控制的优点,是程序员深入系统底层进行编程的入门课程。

1.2 C语言是学习其他编程语言的基础

C语言具备了功能强大、效率高、简洁灵活和可移植性强的特点,编程人员在从事软件开发工作时最喜欢使用这种语言,在学校中学生系统地学习完这种语言,就可以掌握编程的基本思想,为学习其他编程语言奠定基础。

1.3 C语言是学生深入学习计算机知识的基础

在语法表述上,C语言具有简洁精妙的优势,注定了这门课程很方便进行描述算法,比如计算机专业另外一门核心课程《数据结构》,在其算法上,绝大多数都是采用C语言或C++语言来描述的,可见,加强对C语言的学习,是计算机专业的学生进行深入学习计算机知识的基础。

2 目前C语言课程的通行授课方式

一些高校的计算机授课教师仍然按照传统的教学方式来从事这种教学,严重影响了教学效果,也影响了学生的学习兴趣。

2.1 授课方式上,一些老师还采用理论讲授为主

在一些高校内,讲授这门课程的计算机老师,喜欢采用传统灌输式的教学模式,教学重点不是培养学生的动手能力,而是讲授程序设计语言的基本语法, 要求学生通过课堂学习来掌握一些理论知识,当然,这种教学方式有一定的优点,可以保证所讲授知识的系统性与完整性,但更大的缺点是轻视了对程序设计能力与思维的培养,因而造成学生学习的积极性不高,没有起到预期的教学效果。在学习内容上,一些老师很少讲授比较流行的程序开发语言如ava和C#,这就与学生的学习需求差别较大,导致学生对学习该门课程没有明确的学习目的与兴趣。

2.2 在实验操作方式上,实验的内容比较陈旧

C语言程序设计的实践性很强,这门课程教学效果的实现,离不开学生长时间进行独立的实践操作,科学、系统的实验内容是必不可缺的。然而,现实教学中,一些老师忽视教学实践环节,有的学校是教学老师和实验老师各自独立,导致了实验课环节效果较差,甚至使教学内容和实验内容相脱节相分离,根本起不到巩固所学的理论知识的效果。具体实验环节中,老师布置的任务相对简单,导致了学生在上机操作过程中,参照教科书的案例就可以完成实验任务,这种实验课是有名无实,导致了学生缺乏独立编写程序的有效训练。

2.3 考试方式上,仍然重视卷面成绩

当前高校对课程结课考核中,最常用的方法还是按照书面考试的成绩来决定,而没有充分考虑各门课程的实际情况,C语言也不例外,老师只能按照学校的要求,出一张书面书卷来让学生答题,根据成绩是否及格来判定学生能否过关,这种应试教育阶段的考试方式,对C语言进行考核时,存在大量的弊端,导致了对在对这门实用编程语言的考试时,动手能力考的少,理论知识考得多,而且理论知识中的测试内容过多拘泥于繁琐语法细节,这种陈旧的考试方式使得学生不得不通过做题、背题等方法来应对试卷,动手能力的高低、好坏程度几乎没法衡量。

3 C语言教学方式的创新途径

社会上对毕业生动手能力的要求也越来越高,如不加强对计算机专业学生动手能力的培养,势必影响这类学生的顺利就业。因此,教育部门和相关高校对C语言课程传统授课方式进行改革、创新教学方式已经势在必行。

3.1 加大授课方式的创新力度

高等院校应根据计算机专业课程的实际需要,建设一些多媒体教室,把多媒体网络机房设为主要学习场所,不再单纯依赖课堂教学,改变理论学习和上机实践相脱节的教学模式,在学生实践操作时教师再进行适当的理论指导,弱化教师教学的主体性地位,把课堂的主动性交给学生,使得学生能及时上机,及时验证,及时理解本节所学的基本理论和基本方法。在时间分配上,应适当增加操作时间,压缩授课时间,保证每个学期学生有2/3的时间学习掌握基础知识,另外1/3的时间完成一个实用性的C语言程序,在学生的实践操作中锻炼应用所学知识来解决现实问题的能力,进而培养学生动手能力。

3.2 鼓励改革结课的考核方式

目前,一些高校对C语言课程的结课考核方式,应采用传统的笔试考试方式,这张方式存在很大弊端,一张试卷并不能完全反应出学生的真实水平。因此,高校应把考核的主动权交给老师,鼓励老师应用综合、系统的考核方式。有些院校尝试运用了平时考核、期末理论考试、上机考试、课程设计、项目考察多种手段相结合考核方式,在实践中这种方式效果还不错,挺受学生的欢迎,教育部门可以适当推广这种考核方式,使这种方式更加完善,更能全面反映出学生的真实能力。

3.3 加大教材的改革力度

目前一些高校内计算机专业采用的主流教材都是传统的编排模式,先是入门总体介绍,然后是基础语法知识、程序结构、数据类型、文件的读写,这种教材过于强调各个知识点和语法细节,对程序的重要性表述的不到位,使得学生在学完了 C 语言后,却不能完整地解决一个具体编程问题。因此,高校应加大教材的改革力度,组织一些经验丰富的教师组成教材编制小组,编制出一本以程序设计为主线、兼顾基本理论基础的阐述、结合实际教学和学科竞赛的实际情况、能充分激发学生的学习兴趣的教材。

总之,改革目前C语言课程进行教学方法,不是一件简单的事情,需要教育部门、高等院校、各授课和实验教师、学生的共同努力,只要方法得当,各个部门和教师勇于创新,新式C语言的教学方式肯定会得以广泛运用。

参考文献

[1]何元惠,高占国,杨静.C程序设计语言教学方法探讨[J].中国科技信息,2007(3).

C语言学习方法 篇4

关键词:C语言,编程技巧,学习,应用

随着计算机技术不断发展, 计算机编程显得愈加重要。C语言作为计算机编程中使用最为广泛的语言之一, 同样也是语言编程领域中的重要代表。其主要特点分为两点:一是高级语言;二是低级语言, 即能够通过系统软件进行编写, 同时也能够通过应用软件进行编写, 可以说C语言的应用范围极为广泛, 是计算机编程中的主流语言之一。但C语言在学习过程中存在一些难度, 需要学生对C语言有一定理解, 这样才能够更好地学习C语言、掌握C语言。

一、C语言学习困难的主要因素

由于C语言的优势非常明显, 在计算机长期发展中, 对C语言编程的重视程度越来越高, 并且职业学校与高校都开设了C语言编程专业, 学习C语言的学生也不断增加。但是, 在C语言的实践学习中, 很多学生认为C语言学习非常枯燥、乏味, 使学习效率低下, 对C语言的基本内涵与技术没有一个明确的认识, 即使学习一段时间后也很难独立进行简单的编程。究其根本原因, 是由于C语言是一种高级语言, 并且与其他语言有着较大的差异性, 在日常学习中无法直观地感受到相应的知识画面, 只有通过C语言编程之后, 再进行一定的调试, 才能够直观看到编程效果。如果学生在编程过程中稍有一丝纰漏, 就会致使编程错误, C语言编程可以说是“牵一发而动全身”。

与此同时, C语言中存在诸多数据结构与算法结构, 这些知识点只能通过机械式记忆, 至今也无法找出很好的记忆方法, 使学生在背诵繁杂的算法过程中会容易遇到障碍或产生混淆。正因如此, 才会让学生感到C语言非常枯燥、乏味, 极大地降低学生学习兴趣, 使学生在学习过程中对C语言的学习逐渐丧失主观愿望, C语言学习质量与效率止步不前, 无法很好地完成教学目标。

二、C语言编程技巧在C语言学习中的应用

(一) 指针掌握

在C语言编程学习过程中, 学生要充分掌握指针知识, 这也是实现C语言编程的重要环节。正确应用指针能够帮助学生有效地解决一些相对比较复杂的C语言编程问题。在C语言学习中, 指针是一种特殊变量, 其主要包含三大要素, 即指针名称、指针类型、指针数值。在通常情况下, 指针名称与变量名称是相同的, 两者的主要区别在于数值与指针类别层面上。除此之外, 指针不仅能够表示数组, 同时也能够作为函数的残数返回值。

(二) C语言特有函数

C语言作为一种高级语言, 其内部构成也是非常复杂的, 需要学生能够正确掌握C语言特有函数, 也可以说C语言特有功能。可以说在一般情况下, 每一个C语言函数都能够代表、实现一定的C语言功能, 同时每个函数的名称也能够反映出其功能。在给函数进行定义的过程中, 应该包含函数的名字、参数、类型、返回值类型等。其中, 在编程过程中, 函数数据库会给予函数一个系统名称, 在正式应用过程中, 只需要将指令 (#include) 把相关的头文件包含在本文件中即可。

(三) 算法技巧

在C语言学习过程中, 学生必须要掌握一定的算法技巧, 同时算法也是C语言编程的重要组成部分。通常情况下, 算法可以通过自然语言的形态表示, 也可以采用流程图的形式来表示。在应用流程图的过程中, 要求学生能够灵活、熟练地掌握一些常用流程符号。学生想要更好地掌握算法技巧, 一些基础的数学知识是非常重要的, 同时也比数学基础较差的学生要掌握得更快。所以, 在算法教学过程中, 教师可以适当融入一些数学知识, 从而提高C语言编程效率与质量。

(四) 位运算与文件

位运算可以说是C语言编程中的一大特色, 位运算在其他语言编程中是不具备的。二进制是位运算的主要针对对象, 之后再通过输入数值进行一系列的运算。例如按位、位与、取反等算法, 都是位运算中的基本算法。除此之外, 文件在C语言编程时也是十分重要的, 同样也是必不可少的。文件主要包含数据文件以及程序文件, 通过文件能够让数据查询更为便捷, 能够有效提高查询效率。可以说C语言编程的效率性, 是学习计算机编程的重要目标之一。所以, 学生必须要掌握好位运算相关的技巧与方法, 以及对文件知识更加得心应手, 在实践操作中不断自我反省、自我发现, 不断挖掘行之有效的编程方法, 从而提高学生的C语言编程技能。

C语言作为当代主流编程的代表语言之一, 在C语言应用范围非常广泛的同时, 也带来较为困难的学习难度。但是在实际学习过程中, 仍然可以挖掘一些学习方法与技巧, 来降低C语言的学习难度, 从而提高学习效率, 为社会提供更多的C语言编程人才。

参考文献

[1]段煅.C语言编程技巧在C语言学习中的应用[J].电脑编程技巧与维护, 2012, 7 (20) :97-104.

学习C语言 心得 篇5

刚开始学C语言的时候,很迷茫,在此之前从没有接触过C语言,有点摸不着头脑。可是在上机过后,我觉得编程是很有趣的一件事。我知道要学好C语言不容易,可是我决定

=完成这件不容易的事。

要学好C语言就要先懂得最基本的语法知识,看课本是必需的。我觉得看不懂也没关系,尽力去理解就好了,在对知识有了一个大致的了解过后,就要上机实践。学习C语言一定要动手,只看不做,眼高手低是不行的。

最开始可以打书上的例题,熟悉程序,慢慢的开始试着编程。在编程时要理清自己的思路,然后再转换成C语言中的语言,这个时候就更要动手了,只有通过上机操作才能验证自己程序的正确性。执行程序,不要害怕错误,其实,我觉得错误是好的,知道了自己所学知识的不足,并根据提示改

正程序中发生的错误,一种成就感油然而生,觉得自己的付出都是值得的。

良好的编程习惯是学好C语言的重要因素,只有勤动手,多动脑才能学好C语言,光说不练是不行的。

在学习的时候,不会的一定要问明白,可以求助于老师,同学,不要自己一个人钻牛角尖,浪费时间又学不到东西。

上课的时候一定要认真听,老师讲的肯定是最重要的,错过了就是一大笔损失,认真听讲才可以提高学习效率。

我觉得在编程之前,要把自己的想法写在纸上,如果是简单一点的程序不需要这样,如果程序比较复杂,就写下来,这样可以让思路更加清晰。

输入程序时一定要认真,不要把“,”与“;”混淆,用

scanf的时候不要忘记“&”,用“switch”要记得“break”,用if,while的时候注意不要加“;”,“{}”“()”一定要配对,不要多也不要少一半,“=”与“==”的区别要清楚,要勤查优先级,要记住一些基本的,例如两个值之间的调换怎么写等等。

在编程时除了要认真谨慎之外,更重要的是掌握基本的知识,例如if语句与switch语句的区别,它们都是条件语句,用来执行判断功能,但是什么时候用if什么时侯用switch应该弄清楚:若条件分支多但是条件的值是一个确定的值时就用switch。反之,在大多数情况下就用if。又如各种循环的应用,及循环之间的嵌套都要能灵活应用。还要注意一些细小的琐碎的知识,如C语言规定的标识符,大小写字母间的ASCII代码值相差32,强制类型转换符,自增自减运算符,符合运算符,逗号运算符等。

C语言程序设计教学方法探讨 篇6

关键词:C语言程序设计 课程教学 实验教学

0 引言

C语言是当今最为流行的程序设计语言之一,C语言程序设计不但成为高等院校计算机相关专业学生的专业必修课,而且也已经被非计算机专业学生学习的课程[1]。课程开设的主要目的是使学生掌握一种基本的程序设计语言,通过对C语言的数据类型、结构化程序设计方法、数组及函数的使用、指针结构体以及文件等相关内容的学习,能够解决和处理与本专业有关的大量实际问题,培养学生熟练使用C语言进行编程分析和解决问题的能力。

C语言程序设计作为学生入学后系统地学习程序设计语言的第一门课程,由于其涉及的概念比较复杂、规则繁多、容易出错,因此在C语言程序设计教学过程中,初学者比较不容易适应程序设计的思路,会遇到很多语言学习上的困难[2]。为了提高学生学习程序设计的兴趣和信心,取得较好的教学效果,教师应该积极探索教学和上机实践方法,进一步提高教学质量。本文在作者近几年C语言程序设计的教学和自己程序设计语言学习过程中积累的教学和实践经验,对C语言程序设计课程中的几种教学方法进行初步的探讨。

2 C语言程序设计教学方式探讨

2.1 从第一个程序开始提起学生学习的兴趣 在所有程序设计语言的学习中,第一个接触的程序几乎都是Hello World程序,C语言程序设计也不例外。Hello World程序的C语言内容具体如下:

首先为了使得显示屏幕中出现的内容不会枯燥,我们可以在printf("Hello, world!");的下一行添加一句printf("%c",2)。由于ASCII码值为2对应的是一个笑脸,因此在最终的程序输出结果中会显示Hello, world!再加上个笑脸的内容,这样既增加了趣味性,又增加了学生学习C语言的兴趣。

通过这个例子吸引起学生之后,他们就会在自己的脑子里问为什么会这样。此时,就需要老师讲这几行语句的主要功能要跟学生讲一下,这些内容也是C语言程序语句的主体。讲授的内容可以这样安排:#include的作用是要包含城中所用到语句的头文件,因为我们用到了pringf输出语句,所以要将标准输入输出头文件stdio.h包含进来;main()是主函数名,函数体要用{ }包含进来,并且强调上面程序的编写方式({单独一行,}单独一行)会有利于同学们后续程序的编写,语句更加清晰;pringf语句是输出语句,将" "对应的内容输出在屏幕上,此时可以强调" "中可以添加中文,并且对于输出笑脸的语句,解释为是有格式的输出(这个会在以后的章节中具体讲到);最后一条语句是return语句,将0值返回。由于主函数被定义成整型(int),因此在函数的结尾需要返回一个整数。

2.2 实例教学培养学生思维能力 在C语言程序设计的学习开始阶段,首先要重视语法规则和基础知识的掌握,然后才是程序的阅读和编写。随后在学生学习的过程中,从学会看懂程序开始,到能够编写简单的程序,然后逐步的深入,这样也为下一步进行实例教学打好基础。

C语言初学者首先遇到的问题是毫无头绪,不知从何处下手。在C语言的教学中,如果一味地先讲语法格式,逐步讲解语法要点,最后给出例子,这样很容易造成程序设计学习的思维定势。我们希望通过实例教学,培养学生自己分析问题和解决问题的能力,最后达到能够使用程序设计语言来描述和解决这个问题的结果。这里以一个常见的数学问题为例,自然数求和1+2+3+…+50。首先让学生观察求和的公式,然后寻找规律。第一个规律是,在公式中,加数都是递增的并且步长值为1。第二个规律是,在从左到右求和过程中,我们总是将前面求完的和跟下一个加数相加。因此从分析的规律可知,这个过程一直重复下去直到加到最后一个加数50为止。分析完这个问题之后,就可以对循环结构语句进行介绍,并给出具体的使用方法,并以简单的例子对该知识进行巩固。随后,对自然数求和问题进行C语言程序设计。首先,C语言程序是由函数构成的。一个C语言程序至少包含一个main主函数。一个完整的函数由函数的首部与函数体两个部分组成。其次,帮助学生回顾C语言的数据类型,数据的基本表现形式,C语言中的运算符和表达式。这里,根据前面分析,定义两个整型int变量k和total,k表示加数,变量total用来存储前面加数的和,并对其赋初值为0。然后,考虑应该使用何种C语言基本结构,使用结构中的那些语句及其格式要求,这里使用的是循环结构中的for语句。在for循环语句中,首先需要对循环变量赋初值,k=1;然后给定循环停止条件k<=50,最后是循环变量最后,补全完善程序段,为了便于与用户进行交互,应在C语言程序中加入输入和输出语句,由于需要使用输入和输出语句,因此在使用时要先调用头文件stdio.h。将上述分析整个联系起来,可以完成上述问题的C语言的程序编写,具体为:

编完上述程序之后,教师还需提醒学生注意融汇贯通,例如如果是求1+2+3+…+n该怎么办,n为用户指定的,如果是求应该如何解决等等诸多类似的问题,教师都可以拿出来跟学生一起分析,并让他们在上级实验时加以练习,达到信手拈来的程度。因此课程上机实验环节在C语言程序设计教学环节中也是非常重要的,能够帮助学生有效地巩固基础知识和增加程序设计的经验。

2.3 实验教学进一步提高学生程序设计能力 C语言程序设计是一门实践性很强的课程,既要掌握基本语法知识,又要动手编程并上机调试运行[3,4]。实验教学是通过学生编写和调试程序发现和暴露编程过程中出现的问题,通过解决问题进一步获得更多的知识。在上机实验环节,需要对学生的以下能力进行培养:对编程题目的阅读能力,构思算法步骤,编写程序、运行程序并分析所得的结果,根据结果对程序进行调试,最终完成程序的设计。具体的实验教学可以从以下几个方面来设计,一方面为学生设计基础性的实验,例如:求一元二次方程的根、简单的排序算法等编程实验,使学生能够通过实验及时掌握和消化课堂的教学内容,进一步提高学生的学习热情。另一方面,增加一些难度性大和实用性强的实验,并对学生进行分组,通过组内讨论得出算法解决思路和算法流程,然后上机编程调试并撰写报告。通过组内成员对实验题目的讨论,可以使得不同水平的学生之间能够相互交流并借鉴各自掌握的程序设计知识以及解决问题的思路,最终起到共同学习共同进步的目的。实验内容可以是设计简单的管理系统对班级成员进行存储,并根据条件查询人员信息,或者是利用数组与指针,将多个人的姓名进行排序,规则为按照姓名拼音的字母顺序进行排序。通过这些上机实验,一方面培养了学生对知识的应用能力与问题的分析能力,有利于学生加深对所学知识的理解,让学生真正体会到C语言的灵活性,激发学生的求知欲;另一方面也培养了学生之间的协作能力,有助于提高他们工作后的分工协作能力。

2.4 其他教学方式 除了以上主要的教学形式,我们还会在这些教学内容中辅以趣味性的内容提高学生的学习兴趣。为了活跃课堂气氛,我曾在课堂上通过设计一个随机学号产生器,通过产生随机学号对对应学号的学生进行提问,这样既增加学生的学习兴趣,又能提高学生上课的注意力。此外,将上机实验的好坏作为学生成绩考核的一部分,让学生在平时保持紧张状态,提高他们的学习主动性,认真完成每一阶段的学习。

3 结论

C语言程序设计的主要目的就是培养学生的程序设计能力,本文根据作者实际教学过程中学生存在的问题,从课堂教学和实验教学等几个方面进行了探讨。希望这些教学方式有助于改善C语言程序设计教学中的诸多问题,加强师生间的互动交流,提高学生学习的兴趣和主动性。当然,同样的教学内容面对不同的学生,不一定产生同样的效果,在使用这些教学方法的同时,还要适时地根据学生的课堂以及上机实验反应加以调整,最终完成教与学的有机统一。作者将继续努力探索,使《C语言程序设计》课程教学日趋完善。希望本文能对大学本科生程序设计语言的教学有一定的借鉴作用。

参考文献:

[1]严桂兰.C语言程序设计与应用教程[M].福建:厦门大学出版社,2001.

[2]刘桂玲.C语言程序设计教学改革与实践[J].软件导刊,2012,11(3):194-195.

[3]谭浩强.C语言程序设计.北京:清华大学出版社,2000.

[4]谭浩强.C程序设计题解与上机指导[M].北京:清华大学出版社,1992.

C语言学习方法 篇7

1 C语言概述及其具有的特征

当前时期, C语言已经成为全球范围中的计算机软件开发以及编写领域中的运用最为普遍的一种编程语言, 其传播速度以及发展速度均是极为迅速的[1]。C语言开发于20世纪60年代, 其在20世纪70年代不断发展完善, 经过50多年的发展, 目前C语言已经发展得较为成熟, 当前C语言拥有着以下一些基本特征。第一, C语言自身拥有着极为普遍的应用范围, 具有非常显著的可移植性, 可以在众多形态操作系统实现良好的适用。第二, C语言从外在形制方面来说, 其拥有着十分明显的简洁和紧凑等性能, 在进行实际使用过程中, 拥有着显著的灵活性和方便性。由于其自身语法欠缺一定的严格性, 为编程人员在进行程序编写过程中打下了较为自由的基础条件, 能够将高级编程语言与地基编程语言进行很好地衔接。第三, C语言拥有着非常多的数据结构。第四, C语言对于进行语句表意方面, 其拥有着多种多样而且数量众多运算符号, 利用这些运算符号能够完成其他高级语言不能很好实现的功能。第五, C语言拥有着典型与鲜明的应用和建设特点, 可以使数据对象和编程代码间可以进行有效的分割, 在软件编写过程中能够拥有着非常显著的清晰性, 给技术员进行使用、调试以及维护等工作带来极大的便利性[2]。第六, C语言可以对物理地址进行最为直接的访问。第七, 运用诸多的数据结构能够让C语言在实现数据运算的前提下, 还拥有着较为显著的图形元素处理以及引入方面的功能。

2 C语言学习过程中存在的问题

C语言因其具有强大以及丰富的使用功能, 使其得到了现代人们普遍的关注以及普遍的使用, 这便要对C语言使用技巧和基础知识加以有效地掌握与学习。然而, 事实上存在诸多的因素造成大量的C语言初学者常常在学习过程中感觉枯燥。虽然位过一定时间的学习以及实践, 但是无法对C语言的基础知识以及操作能力有显著的提升, 而且对于C语言整体认知也存在较大的缺陷[3]。这一学习问题主要可以从如下几点原因进行分析。

一方面, C语言对于目前大多数编程语言而言, 其处于高级语言范畴之内, C语言和以往的面向对象型的编程语言有着较为显著的差异, 这就造成C语言在进行学习过程中无法对编写的语言进行直观查看, 并且只能在编写完成并进行调试过程中才能对所编写的程序进行真实的感知, 此外, 在进行实际编写时, 一旦某一流程存在些许偏差均会造成程序输出存在错误。另一方面, 由于C语言具有的表意元素体系内存在有大量的算法和数据结构, 这便对学习者进行基础知识和应用技巧方面的学习与理解时带来了显著的制约, 致使部分学生在学习过程中感到枯燥乏味, 最终出现厌烦心理, 而且在学习时也会不断失去学习C语言的意愿, 不能确保学生学习效果得到显著的提升。

3 C语言所需的编程技巧

即便C语言拥有着众多的技术优势, 但是在实际学习过程中依旧存在较大的难度, 采取一定的编程经验以及技巧, 不但能够有效地提升编程效率, 而且可以在很大程度上对C语言学习有着帮助。

3.1 指针

C语言所具有的特征通常是利用指针表达来实现, 指针具有更为简单的语句, 而且能够有效地提高C语言的运行时的速度, 但是也存在占用内存相对较大的不足。诸如对于字符串进行赋值方面, 其中一种代码为:#defune LEN 32;char string 1[LEN];memset (string, 0, 1LEN) ;ct rcpy (st r ing1, ”this is a example”) ;另一种方式的代码为:const char string2[LEEN]=“this is a example”;char*cp;cp=string2。从上述两个代码来看, 他们的运行效率是无法相比的, 前者一定要对两个字符函数进行调用才能实现, 而后者对指针进行运用便可实现。但是后者灵活性不如前者好, 一旦字符串出现大量变更时, 前者所具有的灵活性便会展现出来, 后者将会对内存中的字符串加以大量占用。

3.2 数学方法

数学计算对于计算机而言是不可或缺的, 学习C语言过程中, 一定会遇到处理大量数据形式的结构, 编程的目的便在于解决这一问题, 利用计算机来对人工的繁重运算进行有效的代替, 从而有效地节省人工。对于一些相对较为简单的运算能够利用数学方式加以解决, 所以在利用C语言进行编程之前, 应该将数学思维运用在其中, 能够有效地提高工作效率, 对工作人员思维有着显著的扩展作用。

3.3 使用位操作

位操作能够显著的提升C语言编程的效率, 这是由于位操作使全部计算机程序内最为基础的数据单元, 拥有着非常重要的作用, 可以使代码显得相对简洁, 从而使效率得到极大的提升, 全部的运算操作基本上都可以根据位运算来进行处理, 但是位操作也存在一定的安全隐患, 因此这一技巧在实际使用过程中要根据其实际状况进行充分的考量。

4 基于单片机的C语言编程技巧

单片机已经是产品开发今后的必然发展趋势, 单片机计算机操作愈发复杂与繁重, 使其性能也得到了很大的提升, 其内部存储器也在逐渐扩大, 在代码量以及运行速度上均是汇编语言, 并不存在显著的差异, 因此利用单片机实现编程也是一项重要的研究内容[4]。C语言虽然拥有着众多的优势, 但是其所生成出来的代码相对较长, 除非拥有着较好的编程基础, 要不然的话其效果相对较差, 对此简单介绍一些有关单片机进行编程方面的技巧。

4.1 选择数据类型

基于单片机形式的C语言编程要与程序存储器进行有效的结合, 可以提供大量的数据类型, 能够被计算机进行直接读取的语言只要有bit和char, 其所产生的代码相对较短。而浮点型与整形等形式的数据无法被计算机进行直接读取, 要利用相关程序以及函数等才能实现, 而且所产生的代码相对较长。要想降低代码长度, 在对数据类型进行选取时要与实际情况相结合。

4.2 算法优化

明确所选取的数据库类型之后, 便要对程度算法实现一定的优化, 主要是针对程序运行速度以及程序代码量。此二者一般是相互独立, 拥有着此消彼长的联系, 如果空间复杂度得到了优化, 便会使时间复杂度得到一定的增加, 所以, 对算法进行优化时, 要根据具体情况取二者的平均值。代码效率一般是指代码从发出至返回所需的时间, 对时间复杂度进行优化的话, 主要是通过代码执行时间来实现, 对于执行时间方面的计算, 可以利用计时器来实现, 令单片机所自带的计时器方式调整成为自动重载形式之后, 调用代码过程中, 要将计时器进行开启, 在程序执行完成之后, 对计时器进行及时停止, 通过对时间进行计算, 基于此对其进行适当的优化。

5 结语

总而言之, C语言由于具有诸多的技术优势以及强大的功能, 使其在诸多的领域之中得到了非常普遍的运用, 对于我国诸多高校而言, 特别是理工科, 对C语言进行了大力的推动。由于C语言是一种面向过程形式的编程语言, 其中的关键部分使算法和数据节, 这也是学习过程中的重难点内容, 为了解决初学学生学习过程中的学习困难, 可以利用C语言进行编程过程中的技巧来有效地提高学习兴趣, 而且可以对教学效果以及学习效率具有显著的提升。

参考文献

[1]刘小艮.探究C语言编程技巧在C语言学习中的应用[J].科技展望, 2016 (7) :298.

[2]胡渝苹.关于计算机C语言编辑程序技巧探究[J].信息与电脑 (理论版) , 2014 (11) :158.

[3]邢如意.Linux系统下计算机C语言的编程技巧分析[J].电脑知识与技术, 2014 (36) :8674-8675, 8690.

浅谈C语言的学习 篇8

1 C语言的背景及其优点

无论学习哪门语言首先应该了解一下所学语言的背景,也可以说它的发展史。C语言属于高级程序语言的一种,它的前身是“ALGOL 60”。其创始人是布朗?W?卡尼汉和丹尼斯·M·利奇。C语言问世时是带有很大的局限性,因为它只能用于UNIX系统上。然而随着科学技术的进步,计算机工业的发展,C语言逐渐脱离UNIX。1987年美国标准化协会制定了C语言的国际标准,简称“ANSI C”,从此以后它便成为一种广泛使用的程序语言。C语言的优点很多,主要的有如下四点:

(1)兼备高级语言与低级语言的优点,属于一种中间语言。

(2)它是一种结构化程序设计语言,非常适合结构化程序设计。

(3)有较丰富的数据类型、运算符以及函数供以选用。

(4)直接与内存打交道,使修改、编辑其他程序与文档变得轻松,简单。

2 两大语系两种不同的学习方法

高级程序语言分为两大语系。例如:C,C++(C语言的扩展),QBASIC,VB(BASIC的可视化),JAVAs cript,Js cript,VBs cript,JA-VA,ASP,FOXPRO,PERL等等。一路是以C为主的程序语言,例如:JAVAscript,JAVA等,这类语言在函数的调用,程序语句的书写,循环的控制都极为相似。另一路是以BASIC为首的程序语言,例如:FOXPRO,VBscript等,此类语言同样具有相似的函数调用,程序语句书写以及循环控制,但与C语系是不同的。因此若是您以前是从QBASIC起家的,那么在学习C语言前最好是先洗洗脑,千万不要把学习BASIC的方法以及思路用在C身上。

3 理解C语言的模块化程序结构

C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个合法的C函数,然后用主函数调用函数及函数调用函数实现一大C程序:C程序=主函(main)+若干个函数。在程序设计中,常将一些常用的功能模块写成函数,也可以将大程序段分割成若干函数,前者目的在于减少重复编写程序段的工作量,后者目的在于缩短模块长度,以便程序阅读方便。一个源程序文件由一个或多个函数组成,它是一个编译单位,而一个C程序由一个或多个源程序文件组成。对较大的程序,往往分成多个文件,这样可以分别编写、分别编译,提高高调试效率,一个源程序文件可以被多个C程序公用。

4 重视C语言中的算法

写程序的最高境界就是掌握各种解决问题的手段和方法,写底层程序主要是掌握硬件的结构。要给一个芯片写驱动程序,无非就是掌握这块芯片的寄存器及其组合,然后读写值。这只是函数的简单应用。怎样才能精通程序设计呢?在程序设计中找到解决问题的最优方法和使用手段是考验一个程序员程序设计水平的重要标志。所以掌握好数据结构和一些常用算法,是精通C语言的必然之路。

5 具体学习C语言必须从以下四点入手

5.1 输入输出

C语言的输入输出是非常严格的,或许在其他程序语言中我们可以不关心这个问题,但在C语言中,我们必须要彻底了解它。由于篇幅有限,因此笔者不能详谈,有兴趣的朋友可以参考由著名程序语言教授谭浩强先生主编,由清华大学出版社出版的《C程序设计第二版》。不过这里笔者还是有几点要简单的谈一下。

5.1.1 二维浮点数数组的输入

二维浮点数数组的输入(即:通过键盘给二维浮点数数组赋值)在很多专业书中都没有详细讲过这个问题。在给二维浮点数数组赋值时一定要先声明一个变量,接着把数值赋予这个变量,最后把变量数值赋予二维浮点数数组赋值。

5.1.2 注意输出格式中“%”后的字符

C语言的输出说复杂不复杂,因为常用的都很简单。可说不复杂也未必,如果C语言要考得很难的话,根本不用考什么指针,只要专考输出格式,百分之九十九的学生都不会及格。可以看出C语言的输出格式之复杂程度。因此大家在学习它时千万要学会辨别输出格式中“%”后的字符,每个字符都有其意义,也都有其作用。

5.2 优先级

说到优先级,有很多人都不是很了解或说很模糊。什么叫优先级?比方说,我们在公交车终点站排座队时总会遇到70岁以上的老人不需要排队就能上车的情景,这就是优先级的涵义。C程序在运行时也象排队坐车一样,首先照顾那些优先级高的运算符,若是优先级相同,那么就像遇到两位(或两位以上)70岁以上的老人那样,让他们依次上车。但是C语言中的优先级的运算并不是千篇一律的。只能说是在大多数情况下,有些运算符的优先级有其自己的特点,因此这点大家要注意。例如条件表达式:条件?结果1:结果2,这种表达式很多人都知道,它的作用与IF ELSE条件判断语句很雷同,它运算时的优先级就不是按照C语言的规则来完成的。所以说对于优先级各位编程爱好者一定灵活掌握,不要死记硬背。

5.3 函数

虽说很多程序语言都有函数这一内容,但C语言的函数是最有魅力的。如果你能完全掌握C语言的函数,那么学习C++就不成问题了(C++是一门建立在C语言上,但又不同于C语言的高级程序语言,它增添了很多函数)。学习函数的方法是比较简单的,只有两个字“牢记”,即:牢记函数的功能,牢记函数的用途以及如何输入输出。有些朋友认为,程序语言中的函数没有多大用处。其实这并不正确,函数从本质上讲是一段通用程序,用它可以帮助我们节约很多编程的时间,一个聪明的编程者在编写程序前往往总是先找自己所编写的程序中有多少是可以用函数来代替的。比如要做一个比较字符串的实验,用C语言中的strcmp()函数只要一句话,而自己编写的话30句话都写不完,可想而知函数是多么实用呀!

5.4 指针

C语言中的指针是最有特色的,当然也是最难学的。指针说穿了,其实是变量的一种表现形式,只不过这种变量记载的不是数值而是地址。就象一个人可以用姓名来表示自己,也可以用身份证号码来表示自己一样。学习指针最好是先学些计算机硬件工作的原理,例如:直接寻址,间接寻址等,只有了解了这些内容以后,你再学指针就比较容易理会,毕竟C语言是一门介于机器语言与高级语言中间的语言,没有一些硬件工作知识是很难领悟它的真谛的。然而事事并非绝对,如果你没有这些知识也不要紧,只要清楚知道以下总结的二点再加上多练习便可:

(1)指针是地址变量。它的值有两种:其一是地址,其二是内容。不同的表达方式可以取不同的值,这有点像一个家庭地址在不同的场合标识的人物也不同。例如:父母亲在他们的单位所登记的家庭地址就代表他们自己,而你在学校中登记的同样的家庭地址就代表你自己。

(2)指针是可以运算的,它的运算法则与变量是一致的。

另外,在编写一个程序时,除非万不得已,一般不要使用指针变量。因为指针是比较复杂的,用不好就“当机”。但指针又是C语言的精华,可以使程序简洁、紧凑、高效,所以建议还是要深入的学习和掌握指针。

6 结束语

C语言功能非常强大、应用广泛,一旦掌握了,以后若是再自学其他语言就显得轻而易举了。其实C语言的学习并非是太难,只要你能理清思路,掌握它的精髓,那么自学C语言是一件非常容易且又其乐无穷的事。

参考文献

[1]谭浩强.C程序设计(第二版)[M].2版.北京摘要:清华大学出版社.1999.3.

[2]全国机等级考试二级教程C语言程序设计[M].北京摘要:高等教育出版杜.

C语言学习方法 篇9

C语言是一种最基础也是计算机专业学生必修的一门计算机程序设计语言, 它既具有高级语言的特点, 又具有汇编语言的特点。1978年后, C语言已经先后被移植到大, 中, 小以及微型计算机上。它的应用范围比较广泛, 具备非常强的数据处理能力, 不仅仅是在软件开发商, 而且各类科研都需要用到C语言, 适用于编写系统软件, 三维, 二维, 图形和动画, 具体应用比如单片机以及嵌入式系统开发。汇编语言是面向机器的一门程序设计语言, 在汇编语言中, 用助记符代替机器指令的操作码, 用地址符号或标号代替指令或者操作数的地址, 如果就增强了程序的可读性和编写难度, 像这样的符号化的程序设计语言就是汇编语言, 因此亦称为符号语言。

2 汇编语言与 C 语言混合编程

C语言是一种高效且有力的语言 , 尽管他们能够产生极快而又极紧凑的目标代码, 然而他们还是不可能达到汇编语言所生成的高质量的目标码。在某些特殊应用场合中, 还需要借助于汇编语言实现一些特定的操作, 象对某种硬设备进行准确定时等, 此时用汇编语言实现就比用C语言比较方便且目标质量更高。相反, 在用汇编语言编程过程过程中, 有些过程或某些算法用汇编语言完成比较困难, 而用C语言书写可用C的现有函数, 则更为自然且更具商业价值。因此在虚拟开发中两种语言的混合使用是经常发生的。一般而言, 在高级语言中使用汇编语言有以下几个原因: 提高程序中某些关键部分的执行速度与效率; 完成高级语言难以实现或者没有的功能; 缩短程序中某些模块的目标代码以减少存储开销;使用给汇编语言的通用软件包, 利用别人已开发的较为成熟的汇编子程序。

3 需解决的问题

汇编语言与C语言进行混合编程时, 一个任务采用多个功能模块实现, 每个模块可以编写为一个子程序, 根据模块功能不同可以选用适合的编程语言, 汇编语言与C语言混合编程就是一种很好的选择, 为了实现混合编程需解决一下几个问题。

(1) 存储模式统一问题 , C语言共有6种不同的存储模式, 不同的存储模式定义了不同的数据段和代码段。而在汇编语言中使用简化段定义伪指令Model, 该指令为用户自动生成适合于用户所选的存储模式的段定义。因此混合编程时必须保持汇编语言和C语言的存储模式统一, 通常情况下尽量采用小模式进行混合编程, 如C语言中采用Small, 汇编语言中采用Model Small。

(2) 命名方式约定问题 , C源程序编译时会在变量名或函数名前面加下划线。为保证连接后的程序的一致性, 被C语言调用的汇编子程序中, 所有标识符都要加下划线, 因此汇编子程序中函数命名时要用extern伪命令予以说明, 定义的格式为extern int fun (int, int), 同时汇编语言须用public操作符定义标识符, 定义格式为: Model。

public _fun.

(3) 混合编程中参数传递问题 , 在汇编子语言程序之间通常采用寄存器作为参数传递的工具, C语言程序间的参数传递, 一般采用堆栈来传递, 即调用程序将参数依次压入堆栈中, 当被转调用程序后,再从堆栈中依次弹出参数作为操作数使用。为此, 必须了解各种语言的堆栈结构、生成方式和入栈方式等。而对于汇编语言和C语言混合编程, 对于参数个数可变的子程序, 当参数不超过4个时, 可以使用寄存器R0~R3来进行参数传递, 当参数超过4个时, 还可以使用数据栈来传递参数。在参数传递时, 将所有参数看做是存放在连续的内存单元中的字数据。然后, 依次将各名字数据传送到寄存器R0, R1, R2, R3; 如果参数多于4个, 将剩余的字数据传送到数据栈中, 入栈的顺序与参数顺序相反, 即最后一个字数据先入栈。此外混合编程中参数传递问题还涉及到返回值的返回以及汇编程序中各个寄存器中内容的保护等问题。

(4) 混合编程中的程序调试方法 , 步骤一 : 用汇编程序(MASM) 对汇编语言源程序进行汇编 , 生成二进制的汇编语言目标文件 (.OBJ文件); 步骤二: 在TURBO C集成环境下建立一个工程文件, 该文件包括生成的二进制汇编语言目标文件名 (.OBJ) 和需要编译连接的C语言编写源程序; 步骤三: 在TURBO C集成环境下, 按Ctrl+F9功能键, 生成可执行文件 (.EXE文件); 第四步: 在TURBO C集成环境下, 按Alt+F5功能键执行程序。

4 实现方法

汇编语言和C语言混合编程可以常用的方法: 一是在C语言程序设计的过程中直接嵌人汇编语言指令; 二是汇编语言程序和C语言程序都是分别编写的, 然后采用各自的编译方法编译成目标模块, 再进行目标模块的链接, 下面就这两种两种方法做以介绍。

4.1 C 程序中嵌入汇编指令

C语言程序能支持汇编语言ASM指令 , 因此可以利用这条指令直接将汇编指令嵌入到C语言程序中。这种方法要求编写汇编指令时两边加上双引号并用小括号括起来, 前面再加上ASM关键字, 其格式为: “ASM (“汇编语句”);”。需要注意的是, 汇编指令要与前一个双引号之间有空格。例如, 在汇编语言 中中断指 令INTM, 嵌入到C语言中为 “ASM(“INTM”);”。这种方式的优点是操作简单 , 但是存在很多的弊端, 汇编代码插入很有可能破坏原来的C语言环境, 从而导致无法预料的结果。因此可在程序开始的系统初始化部分少量使用, 而在C语言中嵌入实现一完整功能的大量汇编语言指令时, 不建议采用这种方式。

4.2 汇编语言程序与 C 语言程序的调用

(1) C语言中调用汇编函数

在使用C语言编写程序时候, 涉及到调用汇编 函数时 ,若汇编代码比较简洁, 则可使用C语言中直接内嵌汇编指令;若是完整的功能模块, 要将汇编语言程序以文件的形式加入到C语言的项目中。

例如: 汇编函数定义如下:

那么在C语言程序文件中调用汇编时, C中写出的汇编函数名是 _CSL_intc Ivp Set() ;

(2) 汇编语言程序中调用C函数

在汇编语言程序调用C函数时, 被调用的C函数在C语言环境中需要用extern进行定义, 在调用C函数之前程序需要按照逆向顺序将函数的参数压入当前运行任务所使用的任务堆栈中, 即函数的最后一个参数先入栈。然后执行函数调用指令去执行被调用的C语言函数。

例如: 汇编程序中调用C函数, 函数名fun_process(), 部分汇编程序如下:

5 结语

汇编语言与C语言的混合编程是介于高级语言和低级语言之间的一种中级语言, 同时具有了两种语言的优点, 是一种有效的程序设计方法, 这种方法可以发挥各自的优势, 在工业控制和科学计算中具有很强的实用性, 但在具体开发设计中, 还要综合各语言的特点, 权衡利弊, 开发设计出扩展性和移植性好的程序, 以便为其更广泛的应用打下坚实的基础。

摘要:C语言是应用广泛的面向过程的开发语言,但在一些特殊的情况下还需使用汇编语言,因此出现了C语言与汇编语言混合编程的问题。基于此从两者混合编程的原因和需要解决的问题入手,对两者混合编程的实现方法进行了详细介绍,给出了相应的编程实例。

C语言的指针学习法 篇10

关键词:指针,数组,地址,变量

凡是学习过c语言的都知道指针是c的灵魂, 它极大的丰富了c语言的功能。下面这部分内容就我个人认识做如下阐述。

1 指针的出现

我想有很多初学者学习到指针都感觉很难, 下面我就以自己的想法来解释下指针这个特殊的数据类型。基本类型变量大家可能并不难理解, 因为基本类型变量其内部存储了同类型的常量, 事实上指针也是变量, 不过呢, 这个变量和基本变量有点不一样, 不同点就在于基本类型变量内部存储了同类型的常量, 而指针变量内部存储的则是“同类型变量的首地址” (所指向的变量的地址) 。可以给你形象的来描述一下:

int a;/*声明一个基本整形的变量*/

此时, 编译器已经给a分配了连续4个字节的内存空间 (VC++6.0) , 结构如图1。

内存地址是线性编码的, 我们可以很容易的看出a的首地址就是他第一个单元的地址1001。

int*Pointer=&a;/*声明一个指向a的指针Pointer*/

编译器也同样给指针变量Pointer分配相应字节数的内存空间, 如图2

该内存空间里存放1001, 即为变量a的地址。

在程序设计中, 如果存在语句:a=10;直接给a赋值, 我们称为直接访问。

如果使用语句:*Pointer=10;即通过指针变量来赋值, 前面的*是间接运算符号, 意思是求Pointer内部存储地址所标识的内存单元, 也就是a。此时, 该赋值是通过间接访问来实现的。如图3

以上就是指针实现的基本解释, 很多优秀的程序员都说指针是C语言中的精华, 的确如此, 很多优秀的程序员写程序都非常依赖指针, 因为它很方便, 实际上指针所访问的对象是没有限制的, 他可以指向任何类型的变量, 前提是只要我们知道内存地址。因此指针也并不安全, 在开发网络程序的时候, 尽量要少使用指针。

2 指针在数组中的使用

简单的来解释下数组, 数组是“同类型变量的有限集合”。数组在内存中占用连续的内存单元 (地址连续) , 来存储数组中的每一个元素。数组是预先分配好指定长度的内存单元, 供数组元素使用。它并不支持动态内存分配。

下面以字符型数组为例来分析字符指针和一维数组之间的关系。数组名其实就是这一组内存单元的首单元, 它的地址就是整个数组的入口地址;数组名是一个指针, 它的基类型为基本数据类型, 不过在具体操作的时候不允许给数组名重新赋值, 可以把数组名理解为cons Pointer (指针常量) 。在程序中可以这样操作:

即同类型的指针, 完全可以胜任数组名的任务。一点问题没有而且可以运行的很好。当然, 我们可以进一步把代码这样来写:

改成

下面以基本整型二维数组为例来分析指针和二维数组之间的关系。二维数组名也代表二维数组的首地址, 也是一个指针常量, 只是其基类型为数组类型, 称为行指针 (a指向第0行, a+1指向第一行) 。可以把二维数组看做一个特殊的一维数组, 只是每个元素又是一个一维数组而已。在程序中可以这样操作:

/*把二维数组看做一维数组时, 每个数组元素a[0]、a[1]、a[2]又包含一个一维数组, 该一维数组又包含4个元素, 这样a[0]、a[1]、a[2]即成为相应的数组名, 也成为一个指针常量, 其基类型为基本整形;所以可以把a[0]、a[1]、a[2]分别赋给指针数组的相应元素*/

p=a;/*p为行指针, 其基类型为数组类型*/

3 总结

指针本身与指针所指向的变量不是一个单元, 一定要弄清楚指针变量的基类型。一个指针ptrold加上或减去一个整数n后, 结果是一个新的指针ptrnew, ptrnew的类型和ptrold的类型相同, ptrnew所指向的类型和ptrold所指向的类型也相同。

参考文献

[1]C语言初学者入门讲座:<http://www.gshu.cn/detail/0/337.htm>

C语言中指针链表的学习探讨 篇11

关键词:动态;链表

中图分类号:TP311.12

C语言中存储数据的结构用的最普遍的是数组,包括简单类型的数组,指针数据和结构体数组等,但是他们在实际应用中,会因为实现定义过大的数组容量而造成内存的浪费,或者因为保守的预测分配而满足不了实际使用的要求,这时就需要另一种方法来解决这个问题,这就是动态数据结构和动态分配内存技术。链表就是这样一种最简单的动态数据结构。那么如何让学生能够很好的学习并掌握它,本人就近几年的教学过程中经过探讨,采用了图示法进行教学,效果很好。

1 基本概念的理解

1.1 指针的理解

(1)指针与简单变量。通过图1所示理解指针与简单变量的关系,当把变量i的地址存入指针变量p1后,就可以说这个指针指向了该变量。

如需要指向下一个元素,只需要指针往后移动即可!

1.2 结构体的理解

(1)结构体类型。结构体类型是一种专门组织和处理复杂关系的数据结构,是一种自定义类型。同一个数据对象由于应用不同定义的类型也有所不同。比如处理学生的信息,可以有很多种方式:

结构体中的成员名可增,可减,形成新的结构体类型。

(2)结构体变量与数组。以上是结构体类型的定义,变量定义方式有三种,这里不一一举例,可根据自己的个人习惯选择不同的定义方式。比如上面两个类型,分别定义简单变量,可这样定义:

struct student s1,s2; struct stu s3,s4;

如定义数组,结合前面所学数组的知识,可这样定义:

struct student s[10]; struct stu s1[20];

2 指针链表

掌握了前面指针和结构体的知识内容,对于指针链表的理解和掌握是非常重要的。

2.1 指针链表的定义

这里主要讲解单项链表结点的结构体类型的定义,对于初学者掌握了这种定义,对于以后学习更为复杂的链表知识的理解是很有帮助的。

单项链表结点的定义:

struct node

{

int data; //存放的数据,可以定义其他更为复杂的数据结构

struct node *next; //指向struct node类型数据,用此建立链表

};

2.2 指针链表的建立

定义好类型后,再定义变量,并将链表建立起来,形成整数数据按升序建立的数据链,下面通过函数create来实现链表的建立。

struct node *create()

{

struct node *head,*p,*q,num;

head=NULL;

scanf("%d",&num;);

while(num!=0)

{

p=(struct node *)malloc(sizeof(struct node ));

if(p==NULL)

{

printf("Allocation failure\n");

exit(0);

}

p->data=num;

p->next=NULL;

if(head==NULL)

head=p;

else

q->next=p;

q=p;

}

return head;

}

2.3 指针链表的插入

链表建立完成后,最常用的操作之一就是对链表的数据进行增加,也就是插入操作,具体程序通过insert函数实现。

struct node*insert(struct node*head,sturct node*r,int*x)

{

struct nod *p,*q;

if(head==NULL)

{

head=r;

r->next=NULL;

}

else

{

p=head;

while(*x>p->data&&p-;>next!=NULL)

{

q=p;

p=p->next;

}

if(*xdata)

{

if(p==head)

head=r;

else

q->next=r;

p->next=p;

}

else

if(p==NULL)

{

p->next=r;

r->next=NULL;

}

return head;

}

2.4 指针链表的删除

对于链表中数据的删除也是链表数据中操作的重点,具体实现过程通过函数deletenode实现。

struct node*deletenode(struct node*head,int*x)

{

struct nod*p,*q;

if(head==NULL)

{

printf("This is a empty list.");

return head;

}

p=head;

while(*x!=p->data&&p-;>next!=NULL)

{

q=p;

p=p->next;

}

if(*x==p->data)

{

if(p==head)

head=p->next;

else

q->next=p->next;

free(p);

}

else

printf("NOT FOUND");

return head;

}

3总结

单向结点链表的主要操作就是建立,插入和删除数据,而且是链表当中最简单的一种形式,只有理解和掌握单向结点链表的基本操作,才有可能处理更为复杂的数据对象,在课堂上通过以上三个函数的编写与引导,学生对于链表有了初步的认识,并起到了良好的效果。

参考文献

[1]杜友福.C语言程序设计[M].北京:科学出版社,2012.

[2]龚民,朱秀兰.C语言程序设计教学探讨[J].电脑知识与技术,2009.

作者简介:刘山根(1976.8-),男,籍贯:河南新乡,职务:广东省华侨职业技术学校教务科副科长。

浅谈C语言的学习方法及应用价值 篇12

⑴C语言语法结构很简洁精妙, 写出的程序也很高效, 很便于描述算法。⑵C语言能够让学习者深入系统底层, 了解操作系统。⑶很多新型的语言都是衍生自C语言, 掌握了C语言, 也就等于说掌握了很多门语言。

2 学习C语言时遇到的问题

⑴上课能听懂, 书上的例题也能看明白, 但在自己动手做编程时, 却不知如何下手。⑵对于课本上一些抽象化算法的问题不是很理解。⑶对课本上的一些功能和定义总是记不住。

3 解决方法

3.1 明确学习目的

3.2 以算法为核心, 以规范为核心

所谓的算法, 就是指在有限不周内求解某一问题所使用的一组定义明确的规则, 凌驾于程序设计语言之上, 是程序的灵魂所在。编写程序和平常写文章有类似之处, 在动手写之前, 必须心里有个谱, 那么编写程序也是一样的, 分析完问题之后就是确定算法, 算法的好坏直接关系到最后程序的正确性和运行效率等问题。在学习过程中, 一般采用传统流程图和N-S流程图比较多。传统流程图比较直观灵活, 适用于小程序, 但是对于大型程序, 因为它对流程的顺序不加任何限制, 因此理解取来比较困难。所以对于大多数初学者来说, 一开始学习C, 总感觉是一件很困难的事情, 翻开书, 就有一点好像在看英语文章一样, 对于课本上一些抽象化的问题不是很理解。著名计算机科学家沃思提出:数据结构+算法=程序, 对于课本上的一些标示符刚开始学习并不知道它的格式, 会用就可以了, 时间长了, 你会慢慢了解它, 慢慢的掌握它对它的一些功能也就很熟悉了。同时在C语言的的开发环境中, 大多数是英语版, 汉化版的可能少很多功能, 在编译链接时, 如果程序编写失败, 它会有错误提示, 但是是英语句子, 例如下面一段程序:

运行后有英文提示:C:UsersAdministratorDesktopCpp1.cpp (28) :error C2143:syntax error:missing';'before'}'

它的意思是说在桌面上的文件cpp1的28行有错误, 错误原因是在花括号前面少一个分号, 所以在平时要努力学习英语知识, 尽可能的取得英语四级证书。

对于没有学过任何计算机语言的初学者, 最好还是先阅读教程, 学习完每一章, 都要认真体会这一章的所有概念, 然后不放过这一章中提到的所有例程, 再仔细研读程序。

摘要:针对很多初学程序设计的不能很好的认识C语言这一学科的重要性, 结合实际阐述一下它的重要性以及怎么学。在学习过程中, 尤其在学习语法的过程中, 要重视语法的学习, 不要急于求成, 要遵循一定的阶梯步骤;将理论与上级结合起来, 并尽可能多的参加实践, 只有这样你才可以熟练掌握它。

关键词:C语言程序设计,算法,实践,英语

参考文献

[1]李军民, 等.《C++程序设计语言》[M].西安:西安电子科技大学出版社2003-1-1.

[2] (美) 玛雅尔斯 (Meyers, S.) .《Effective C++》[M].北京:电子工业出版社2006-3-1.

[3]梅耶, 侯捷.《More Effective C++》中文版[M].北京:电子工业出版社2011-1.

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:iwenmi@163.com

上一篇:合理评估下一篇:加大棚改项目支持力度

付费复制
期刊天下网10年专业运营,值得您的信赖

限时特价:7.98元/篇

原价:20元
微信支付
已付款请点这里联系客服
欢迎使用微信支付
扫一扫微信支付
微信支付:
支付成功
已获得文章复制权限
确定
常见问题