您的位置  > 互联网

C语言订定了一套完整的国际标准,你知道吗?

20世纪80年代,为了避免各个开发者使用的C语言语法存在差异,美国国家标准局制定了一套完整的C语言国际标准语法,称为ANSI C,作为C语言的原始标准。 。 C语言继续发展。 1982年,许多有识之士和美国国家标准学会决定成立C标准委员会,为C语言制定标准,以保证该语言的健康发展。

c语言学习方法1

1)函数要小

尝试使函数尽可能通用,并减少代码行数。 一个函数仅仅完成一个简单的功能。 一眼就能看出这个函数有没有代码错误。 如果每个函数都是健壮的,那么你的程序也会健壮。 。

2)代码要少

完成一个功能时,逻辑清晰的话,代码越少越好。 永远不要将自己与编写代码的人进行比较。

3)算法应该更好

在完成一项功能时,必须考虑效率。 目前,计算机拥有大量内存,因此内存不再是首要考虑的因素。 不过在一些特殊的地方,效率仍然很重要。如果你有高效的算法,就不需要低效的算法。 看看这篇文章。 有一篇关于删除字符两侧空格(修剪)的精彩文章。 很多人提出了算法,但是一种算法是最好的、最高效的、最少的代码,是更好算法的最好体现

4)命名要明确

命名要明确,最好使用中文的谓语-宾语结构,如()

5)应该有更多的文件

尽量将大型程序安全功能分成多个文件,一个文件中尽量不要超过1000行。 这样,你就可以清楚地知道哪些文件代码是健壮的,哪些文件可能存在隐患。 您可以在代码检查期间将其作为目标。 全面检查某些文件。

c语言学习方法2

1. 基础知识

我们先从“词”开始。 在英语中,它们由26个英文字母和26个英文字母组成。 学习语言首先要记住的是“单词”,26个英文字母A、B、C……,然后就是令人头疼的英语单词。 记住它们的过程是痛苦的。 至少对我来说学英语时最烦人的事情就是不断地背那些我总是忘记的单词。 与C语言类似,我们可以做这样的类比。 C语言的单词是由26个英文字母、数字(0、1、2...9)、运算符和其他特殊符号组成的,所以相比之下,学习C语言真是一件幸事。 英语中的“语法”是指常见的构词法、时态、常见句型、特殊用法、固定用法等(哈哈,如果你不是语言专家,有兴趣可以参考英语语法书籍)。 就以构词法为例,动词er后加成为名词(work-),名词后加y成为形容词(wind-windy)等十余种变换。 你还需要记住一些特殊的转换,这些转换既复杂又麻烦。 如果包括时态、句型等的话就比较复杂了。 C语言中也有语法,如标识符、常量、表达式、数据定义、函数定义、变量初始化、语句组成、预处理命令等,语法大致有8种类型。 例如,标识符[2]可以由字母组成,由数字和下划线组成,并且必须以字母或下划线开头。 它区分大小写。 另外,不同的编译器对字符数有不同的规定,一般为7个字符。 然而,这里可能会忽略的是写作格式。 C语言的书写格式也需要注意,因为格式也可以看作是C语言的语法项。 例如,语句以分号“;”结尾英语不是用换行符作为结束标志,其实是有要求的,比如什么时候用句号,什么时候用逗号等等。不过日常的要求我们不关注,也能看懂,所以我们不认真对待它。 综上所述,如果我们想学好一门编程语言,首先要像学英语一样,记住它。 至少我们必须熟悉这种语言的“单词”和“语法”,然后才能谈论使用它。 俗话说“高楼大厦拔地而起”。 “学好C语言的必要前提是首先要打牢C语言的基础。因此,谭老师的书是一本非常好的教材。我建议大家不要扔掉,反复阅读,在至少刚开始学习的时候,使用计算机的机会不多,只是反复阅读理解这本书,有一些东西是应该记住的,尤其是一些重要的语法比如标识符、数据类型、特征等。语句、函数的栈结构、指针的含义等等,最后,永远记住这一点,在实践之前,先打好理论基础,毕竟理论是实践的先导,理论才能更好地指导实践。如果要求低一点,至少也要先熟悉一下理论,毕竟“摸着石头过河”还是感觉盲目和痛苦。

2. 要点

“语义”是指句子的意义和意义。 和人类语言一样,编程语言最重要的目的就是“交流”,所以写出一段没有效果的代码就像说一句没有意义的句子。 在这一点上,两者是共通的。 至于其他一些方面,两者也有惊人的相似之处。 让我举一个例子。 例如,可以有不同的表达方式来表达相同的意思。 例如,微型计算机和个人计算机意味着相同的东西。 以C语言为例,让变量i加1,可以是i=i+1或者i+=1等等。 然而,与人类语言相比,编程语言毕竟是与计算机进行通信的。 计算机和人类的差异也决定了编程语言和人类语言还是有区别的。 甚至可以说,存在着巨大的“差距”。 这也是学习编程语言的重点。 计算机与人类最大的区别在于,它们没有“自己的”“思维”,没有人类那样丰富的情感。 因此,它们无法理解人类在交流过程中的跳跃式思维和人类的“幽默”。 连半点兴趣都没有。 例如,同一句话“Do it”,在不同的场景下用不同的语气,10个人就会有10个不同的答案。 有些人可能认为这是一个合理的要求,而有些人可能认为这是一个合理的要求。 有些人可能会认为这可能是个玩笑而忽略它,而有些人可能会认为语气要求有点过分并感到很生气......,但它是对所有计算机严格执行的。

然而,正是因为计算机的“机械”和“笨拙”可爱,才受到人们的喜爱并被广泛使用,因为对于我们来说,计算机就像是执行我们命令、充当指挥员的忠诚士兵。 当然,我们希望计算机在正确的时间做正确的事情。 要达到这个目的,正好类似于社会上的“权利与义务”的规律。 我们也有自己的义务,就是发出明确、正确的“命令”。 首先明确一点,我们与计算机通信时的“语义”一定要明确,否则计算机就会不知所措。 因此,作为通信工具的编程语言的“语义”也必须是清晰、无歧义的。 当然,编程语言的设计者已经注意到了这一点,在设计时就避免了这个问题,所以我们这些编程语言的使用者、程序员不需要太关注这一点,也就是说,用什么编程语言(C、Basic等)不是我们的重点。 其次正确,包括正确的输入和正确的逻辑。 因为电脑太“忠诚”了,有点“盲目”,对事物的对错没有判断力,就像一把枪,到了警察手中是正义的化身,却成了恶魔在强盗手中。 发言人,我们要时刻记住,计算机没有错,而“错误”是在我们自己手中,这决定了我们是否应该投入更多的精力来纠正我们在编程时所犯的错误。 来? 另外,程序,我们智慧的结晶,对于我们的上帝,对于客户,对于程序的使用者来说就像一个黑匣子。 他们只是输入错误的输入,但仍然期望得到正确的结果。 除了祈祷和希望之外,我们对上帝还有什么选择呢? 因此,我们是否应该花更多的时间来处理输入的不可预知的程序源数据呢? 综上所述,由于我们在编程时需要花费更多的时间来输入不可预知的程序源数据以及提高自己的逻辑正确性,所以这才是我们编程训练的重点,而不是关注实际的编程语言是什么。 为了加深印象,我们举一个实际的例子来说明这一点。

我们先看题目要求:“输入一行字符串(全字母或空格),统计其中的单词数,单词之间用空格分隔。” 应该说,这是一个简单的问题。 有的人看到这个问题可能会第一时间尝试一下。 给出了自己的答案。 如果有人认为单词之间是用空格分隔的,我们统计空格数加上最后一个单词就得到了单词数,所以我们很快就会给出下面的答案。 /**/#(){ 字符[81]; int i, 数字 = 0; 字符c; 获取(); for (i = 0; (c=[i])!=; i++) if (c == ) num++; ("There are %d Words in the line.", num+1);} 编译运行,然后输入“I am a”即可得到正确答案“There are 4 Words in the line”。 输入几个单词后经过类似的测试用例,得到了正确的答案。 最后,我确信自己答对了,放心地交出了答卷。 应该说,只要输入正确,毫无疑问这个程序就能正确运行,但这种正确性是非常脆弱的。 你不能指望用户像你一样聪明,不犯错误,更何况神也有午睡的时候。 。

如果用户输入“我是一个”、“我是一个”、“我是一个”……这种情况下,你是不是应该修正一下自己的想法呢? 现在我认为一个单词后面应该跟一个空格或结束符号,所以我将程序重写如下。 /* 2*/#(){ 字符[81]; int i, 数字 = 0; 字符c; 获取(); for (i = 0; (c = [i])!=; i++) if (c!= && ([i+1] == || [i+1]== )) num++; ("该行有%d个单词。", num);} 再运行一下,发现结果是正确的,单词之间不管有多少个空格,是两个还是三个,都能正确运行,但是我们回头看看这个程序还有什么可以改进的地方吗? 我们再看下面的程序 /* 3[3]*/#(){ char [81]; int i,数字= 0,字= 0; /*字标志*/ char c; 获取(); for( i = 0; (c = [i])!=; i++) if (c == ) word = 0; 否则如果(字== 0){字= 1; 数++; } (“该行有 %d 个单词。

", num);} 输入的测试用例也可以是完全正确的,看一下源程序,增加了一个标志位,考虑到了所有的情况。与前面的程序相比,程序2是一个简单的描述。题目思路,虽然程序3看起来很难理解,但是似乎更能满足我们作为“天才程序员”的愿望。这些都是编程中用到的一些技巧。总体比较这三个程序,可以说,程序都是类似的错误1——逻辑错误对于我们程序员来说比较容易犯,也是在编程和调试过程中最耗时的,至于语法错误,编译器可以很快找出错误在哪里。错误是。程序2在逻辑上是正确的,但是相比程序1的思想更加难以思考。程序3的思想不仅正确,而且在编程中运用了一些编程技巧所有这些宽泛的逻辑思想(解决问题)、快速的调试方法和过程(发现错误)、积累的编程技巧(让程序变得“好看”)都需要通过编程实践来获得。 这是宝贵的经验,对于我们作为程序员来说是最宝贵的,而且最重要的是,这些经验是我们自己的、独一无二的。

3、两者的关系

基于上面的描述,我们把编程看作编程语言的四个部分:“单词”、“语法”、“清晰的语义”和“正确的语义”。 可以看出,前三部分是几乎所有编程语言的特点。 是的,不同的编程语言中的“单词”和“语法”是不同的,但是如果你仔细观察所有的编程语言,它们可以分为几类,并且它们之间有很多相似之处,有点像一刀切- 适合所有人的方法。 ,这也是为什么很多有经验的程序员能够在短时间内熟悉其他语言的原因。 至于“显式语义”,这是所有编程语言都应该具备的。 只是由于编程的“词语”和“语法”不同,表达的方式有所不同,但让计算机明白要做什么的意义是一样的。 最后,“正确的语义”包括广泛的、正确的逻辑思维以及发现和纠正错误的能力。 这就是我们与其他人的区别。 这些都需要通过经常的编程实践来积累。 要开放,所以这是我们应该重视的重中之重。 和很多前辈一样,我建议初学者首先要精通一门语言。 至于如何学习,我认为书本是指导。 我们首先要熟悉一门语言的大概细节,以免在编程过程中不断地阅读它。 书上查的是一种语言的基本语法,比如函数的传递方法以及函数调用的一些特点。 这不仅浪费时间,而且总是受到语法的困扰,让我像《庐山》中一样感到很困惑。 。 就像建筑一样,你可能没有图纸来建造一间小屋,你也许可以抱着边看边建的态度完成它(其实你心里至少有一个大概的想法),但当它到来时在没有图纸的情况下建造一座建筑物,你可以想象这是多么困难。 并且知道。 当然,仅有图纸是不够的。 我们在施工过程中可能会发现一些问题。 这样我们就会慢慢修改原来的方案或者原来描述的有些地方不清楚,通过具体的搭建来确认我们的想法。 因此,编程实践也是必不可少的。 编程实践不仅可以“得语义正”,即拓宽编程思路、发现错误(调试)、积累编程技巧,还可以让你在编程过程中熟悉语言以及语言的细节。 但还要记住,这些细节虽然重要,但也只是细节。 当然,仅仅阅读书籍和理论是不够的。 有“纲领”而没有“章程”是没有用的,有“纲领”而没有实施也是没有用的。 毕竟,实践是检验真理的唯一标准。 在实践过程中,给出了修剪和剪叶的理论。 一般来说,熟悉一门编程语言的语法是编程实践的第一步,而编程实践可以更好地促进对一门编程语言的基本语法知识的理解和熟悉,积累的宝贵的编程经验是我们最宝贵的。地方,最独特的地方,并不是所有编程语言都具备的。

4.写在最后的话

写完这篇文章,我想是时候回答第一个问题了。 有人说我学了这么久的C语言,还是没有写出漂亮花哨的程序。 我编写的程序很丑陋,看起来也不怎么样。 如果你对自己的程序没有自豪感,你就会失去对编程的兴趣。 为什么我总是强调丰富的语言编程经验是你最宝贵的东西? 原因是编程并不足以仅仅用编程语言写下我们的想法。 要投入实际使用,还需要网络、底层硬件、图形学、开发环境等其他计算机知识,甚至还有自动控制、通信等其他学科知识的组合,而这些知识在以后的学习过程中需要学习的,比如一些后续课程,数据结构与算法,操作系统,数据库,计算机网络,软件工程等,如果有兴趣,还可以专门学习窗口程序在以后的课程中编程,或者你也可以学习制作自己的网站。 然后你就会真正感到自豪和真诚。 当然,当时你可能有其他的想法,比如成为一名嵌入式程序员,一名网络程序员,甚至做算法研究等等。无论你选择做什么,书本知识都是大家共享的,是人的财富。全人类,但你自己的知识,尤其是经验,确实是你自己的。 最后,我想再次强调,这是我们最珍贵的地方。 所以在这之前,我知道打基础是一个痛苦的过程,没有太多成就感,但在化蛹、化蝶之前,我们还是要继续我们所做的事情,认真对待我们的毛毛虫,因为我们知道我们将成为美丽蝴蝶的日子。

c语言学习方法3

一、学好C语言的运算符和运算顺序

这是学好《C程序设计》的基础。 C语言的计算非常灵活,功能非常丰富,计算的种类也远远多于其他编程语言。 就表达式而言,它比其他编程语言更简单。 例如,自动加、自动减、逗号运算和三元运算使表达式更简单。 然而,初学者常常会发现这样的表达式难以阅读。 主要原因是它们难以阅读。 运算符和运算顺序尚未完全理解。 当多个不同的运算组成一个运算表达式时,即一个运算表达式中出现多个运算符时,运算的优先顺序和组合规则就非常重要。

在学习中,只要我们合理分类,找出它们与我们在数学中学过的运算的区别,记住这些运算并不困难。 有些操作员了解后会更好。 请牢记在心,以便以后使用起来方便。 有的可以暂时抛弃,用的时候又想起。

首先需要明确的是,运营商按照不同的优先级进行分类。 《C编程》运算符可分为15个优先级,从高到低,优先级范围从1到15,除2、3、14级外,除从右到左组合外,其他组合均从左开始-to-right,决定同级算子的运算顺序。

二、学好C语言的四种程序结构

(1) 顺序结构

使用顺序结构编程是最简单的。 只需按照解决问题的顺序写出相应的陈述即可。 其执行顺序是自上而下,依次执行。

例如; a = 3,b = 5,现在交换a和b的值。 这个问题就像交换两杯水一样。 这当然需要用到第三个杯子。 如果第三个杯子是c,则正确的程序为:

c = a; a = b; b = c;

执行结果为a=5,b=c=3

如果顺序改变的话,则写为:

a = b; c = a; b = c;

那么执行结果就变成a=b=c=5,无法达到预期的目的。 初学者最容易犯这个错误。 顺序结构可以独立使用,组成简单的完整程序。 常见的输入、计算、输出三步程序是顺序结构。 例如计算圆的面积,程序的语句顺序是输入圆的半径r,计算s = 3 .14159*r*r,输出圆的面积s。 但大多数情况下,顺序结构作为程序的一部分,与其他结构一起构成复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。

(二)分支机构结构

顺序结构的程序虽然可以解决计算、输出等问题,但无法做出判断、做出选择。 对于先判断后选择的问题,应采用分支结构。 分支结构的执行是根据一定的条件选择执行路径,而不是严格遵循语句出现的物理顺序。 分支结构编程方法的关键是构造适当的分支条件并分析程序流程,根据不同的程序流程选择适当的分支语句。

分支结构适用于逻辑或关系比较等带有条件判断的计算。 在设计这样的程序时,往往需要先画出程序流程图,然后根据程序流程编写源程序。 这将程序设计分析与语言分开。 让问题简单易懂。 程序流程图是根据问题解决分析而绘制的程序执行流程图。

在学习分支结构时,不要被分支嵌套所迷惑。 只要正确画出流程图,并了解各个分支要执行的功能,嵌套结构并不难。 嵌套只是一个包含分支语句的分支。 这不是新知识。 只要对双分支有清晰的认识,分支嵌套并不难。 下面我介绍几种基本的分支结构。

①如果(条件)

{分支}

该分支结构中的分支体可以是一条语句,此时可以省略“{ }”,也可以是多条语句,即复合语句。 它有两条分支路径可供选择。 一种是当条件为真时执行该分支,否则将跳过该分支,不执行该分支。 例如:计算x的绝对值,根据绝对值的定义,我们知道,当x>=0时,其绝对值不变,x

②如果(条件)

{分支1}

别的

{分支2}

这是典型的分支结构。 如果条件为真,则执行分支1,否则执行分支2。 分支1和分支2都可以由一个或多个语句组成。例如:求ax^2+bx+c=0的根

分析:因为当b^2—4ac>=0时,方程有两个实根,否则(b^2—4ac

d=b*b—4*a*c; 如果 (d>=0) {x1= (—b+sqrt (d))/2a; x2= (—b—sqrt(d))/2a; (“ x1=%8.4f, x2=%8.4f",x1,x2); } else {r=—b/(2*a); i =sqrt(—d)/(2*a); ​​(“x1=%8.4f+%8.4fi”r,i); (“x2=%8.4f—%8.4fi”r,i)}

③嵌套分支语句:其语句格式为:

if (条件 1) {分支 1};

else if (条件 2) {分支 2}

else if (条件 3) {分支 3}

……

else if (条件 n) {分支 n}

否则{分支n+1}

嵌套分支语句虽然可以解决多入口、多出口的问题,但嵌套超过三层后,语句结构就变得非常复杂,对于程序的阅读和理解极为不便。 建议嵌套在三层以内,超过三层。 您可以再次使用以下语句。

④语句:该语句也是多分支选择语句。 执行哪个块取决于开关设置,即表达式的值与常量表达式匹配的路径。 它与 if...else 语句的不同之处在于它的所有分支都是并行的。 程序执行时,从第一个分支开始查找。 如果匹配,则执行后面的块,然后执行第二个分支、第三个分支……的块,直到遇到break语句; 如果不匹配,则搜索下一个分支是否匹配。 应用该语句时,要特别注意条件的合理设置和break语句的合理应用。

(3)循环结构:

循环结构可以减少源程序重复编写的工作量,用于描述重复执行某种算法的问题。 这是最能利用计算机编程专业知识的程序结构。 C语言提供了四种循环类型,分别是goto循环、while循环、do? 循环和for 循环。 可以使用四种类型的循环来处理同一问题。 一般是可以互相替换的,但是一般不建议使用goto循环,因为强行改变程序的顺序往往会给程序的运行带来不可预测的错误。 在学习中我们主要学习三种类型的循环:while、do...while、for。

学习三种常用的循环结构的重点是了解它们的异同,以便能够在不同的情况下使用。 这就需要了解三个循环的格式和执行顺序,并且透彻理解每个循环的流程图。 稍后,您将了解如何互换使用它们,例如使用 while 循环示例和使用 for 语句重写程序,以便更好地理解它们的功能。 特别要注意循环体内那些趋于结束的语句(即循环变量值的变化),否则可能会变成死循环。 这是初学者中常见的错误。

学习完这三个循环后,应该明确它们的异同:使用while和do...while循环时,循环变量初始化操作应该在循环体之前,而for循环一般在语句1中执行; while循环和for循环先判断表达式再执行循环体,而do...while循环先执行循环体再判断表达式。 也就是说,do...while循环体至少执行一次,而while循环和for甚至不能执行一次。

另外,需要注意的是,这三类循环都可以使用break语句跳出循环,并使用该语句结束循环。 但goto语句和if形成的循环不能用break和语句控制。

顺序结构、分支结构和循环结构不是相互孤立的。 循环中可以有分支和顺序结构,分支中也可以有循环和顺序结构。 事实上,无论是哪一种结构,我们都可以大体上将它们视为一种陈述。

在实际编程过程中,常常将这三种结构相互结合起来,实现各种算法并设计相应的程序。 然而,编程是一个大问题。 编写的程序往往很长,结构重复,可读性差,难度大。 了解解决这个问题的方法就是将C程序设计成模块化结构。

(4) 模块化程序结构

C语言的模块化程序结构是通过函数来​​实现的,即将复杂的C程序分成若干模块,每个模块写成一个C函数,然后主函数调用函数,函数调用函数来实现大型C程序的编写,所以常说:C程序=主函数+子函数。 因此,要特别注意函数定义、调用、值返回等的理解和应用,并通过计算机调试来巩固。

三.掌握一些简单的算法

其实编程很大一部分就是分析问题,找到问题的解决方案,然后用相应的编程语言编写代码。 这需要掌握算法。 根据我们的《C程序设计》教学大纲,我们只要求掌握一些简单的算法。 掌握了这些基本算法之后,就很容易完成问题的分析了。 比如两个数的交换、三个数的比较、选择排序和冒泡排序,这就需要我们清楚这些算法的内在含义。 我们掌握了以上几个方面之后,只要学生能够克服怕难和厌学心理,上课认真听讲,做好上机练习和调试,C语言其实并不难学。

【C语言学习方法】相关文章:

C语言心得04-24

C语言经验15篇05-17

C语言学习心得03-08

C语言学习心得11-05

C语言学习心得04-20

C语言学习心得15篇04-23

C语言学习心得(15篇)04-23

C语言实习经历12-27

C语言学习心得04-20