在实际编程中几乎不可能出现,因此并无研究的必要。再如,printf函数中各种格式说明符的详尽用法、整型数据的内存表示形式及相互转化、扩展的逻辑运算量及逻辑运算的短路for语句的各种变式、通过指针引用二维数组的元素、行指针变量、指向函数的指针、链表等,这些内容初学者最好暂时不要深究。当然,并不是说这些非常规语法就完全不进行研究,而是要选择恰当的学习方式和时机。正确的学习方式是在编程实践中研究语法,包括在阅读其他人写好的程序时发现的语法知识点,以及在自已编写程序、调试程序的过程中查阅并掌握需要用到的语法知识。这种方式具有更好的针对性,因而能够获得更好的学习效果。而正确的学习时机,则是在比较熟练地掌握常规语法并能够编写一般难度的程序之后,再来研究这些非常规语法。采取这种策略相当于降低了知识之间的跨度,从而能够更好地理解和掌握知识。2.如何培养基本的编程能力编程能力的培养需要一个长期积累的过程。那么,如何才能逐步地积累编程经验呢?首先是要尽量多地阅读其他人写好的程序,能够看懂程序实现的功能,分析出每条语向的作用,即如何一步步实现程序功能,然后上机调试阅读过的程序,从最简单的程序入手,将程序代码一条一条地录人、编辑、编译、运行。在调试程序的过程中,能够发现在书面上静态分析程序时所不能发现的问题,然后经过查阅资料、主动思考、改正错误的过程,即可获取新的知识和技能。而这种收获是仅仅通过书面学习方式所不能得到的。因此,可以说不厌其烦地反复调试程序是学好程序设计的制胜法宝,这种说法一点都不为过。在不断阅读已有程序的同时,还要经常自已编写程序。从模仿已有的程序人手,尝试编写简单的程序。编写程序的过程最好在计算机上完成,边编写、边调试运行,然后根据调试中发现的问题及时地修正程序。在不断地改正错误的过程中,编程能力将会得到有效提高。对于具有一定复杂度的程序,可以首先尝试实现其中的一部分功能,待现有的程序调试运行成功之后,再在此基础上扩展另一部分功能,然后如此循环往复,直至最终获得功能完善的程序。3.如何让编程水平更上一层楼在具备基本的编程能力之后,如何才能使自己的编程水平更上一层楼呢?将程序设计应用于解决现实问题是提高编程能力行之有效的方法,而面向项目的学习就是一种体现这种思路的卓有成效的培养学生综合分析问题、解决问题能力的教学模式。项目是指来源于c现实中、具有一定复杂度的问题,通常需要学生运用多方面的知识综合分析、统筹规划、语才能解决。言面向项目的学习,需要学生自行查阅资料,准备与项目相关的知识。通过这种方式所程获得的是最牢固、“有机”的知识,更重要的是这种学习方式能够提高学生自主学习的能力。序来自现实中的项目,往往是错综复杂的,在分析问题的过程中需要舍弃非本质的内容,提设取出本质的核心问题,从而培养学生综合分析问题、统筹规划和解决复杂问题的能力。计新思作者路2019年9月iv
目录5.3for循环前言595.4do-while循环62如何学好C语言5.5循环的嵌套-65第1章引论·15.6循环辅助语句和while(1)1.1 程序与程序设计语言循环,691.2C语言的发展及特点135.7循环结构应用举例1.3C语言程序的构成72..45.8拓展:逗号表达式与for语1.4C语言程序的运行句变形:.976第2章基本的数据与运算2.19第6章数组··79标识符、变量与常量6.1一维数组:2.2.·79整型、实型与字符型数据.·116.2维数组,2.3算术运算符和算术表达式·17-92指针第7章·99第3章顺序结构程序设计·217.1变量的指针与指针变量993.1C语言的语句类型21:变量的间接引用…3.2变量的赋值和初始化+·227.2-100指针与一维数组·3.3数据的格式输出与格式7.3:1037.4拓展:指针与二维数组…107输入....233.4字符型数据的输出与输入及7.5拓展:指针数组与二重指针:109混合运算..·303.5顺序结构程序举例·32第8章字符串处理:: 1123.6拓展:赋值运算中的类型8.1字符串的存储与引用·.. 112转换..8.2字符串的输和输出115·33选择结构程序设计8.3字符处理函数与字符串第4章.35处理函数关系表达式与逻辑表达式35:1184.1字符串处理应用举例125算法及其表示8.44.2..384.3if语句.·39第9章函数:1319.1用户函数的定义与调用·1314.4混合运算与强制类型转换···459.2函数的参数和返回值1384.5switch语句·469.3函数的调用方式与函数4.6选择结构程序举例...·50原型的声明·4.7拓展:条件表达式与goto.142语句…9.4.51变量的作用域和生存期1459.5拓展多文件程序.循环结构程序设计...152第5章.·54第10章5.1while循环.....··55函数进阶..15710.1指针作函数参数....1575.2自增自减运算符与复合赋值运算符10.2数组名作函数参数.160.58
10.3拓展:指针型函数和指向12.7拓展:枚举类型202函数的指针·16912.8拓展:内存的动态分配20410.4函数的递归调用·17312.9拓展:链表206..位运算第11 章编译预处理命令:177第13章.214宏定义命令·位运算符11.1 -17713.1*214文件包含命令.17913.2位运算程序举例11.2*+21911.3拓展:条件编译-180文件第14章·22114.1文件概述.221第12章结构体与共用体:18412.1结构体变量与结构体14.2文件的打开与关闭...222类型·18414.3文件的读写22512.2结构体变量的初始化和拓展:文件的读写定位与14.4引用-187随机读写+:238结构体数组:191附录A12.3ASCII码字符表·:24212.4结构体指针194附录BC语言的关键字·24512.5结构体变量的跨函数附录C运算符的优先级和结合性·246引用·197附录D常用的C语言库函数24812.6共用体199参考文献252科学出c语言程序设计新思路vi
第1章引论计算机解决五花八门的问题,主要是通过软件实现的。这是因为一种计算机的硬件系统一经设计完成,就是基本固定不变的。而如何充分发挥硬件系统的功能,则要完全依赖软件。软件是程序、数据及相关文档的集合,其中,程序是软件的主体。1.1程序与程序设计语言程序,就是用于完成特定任务的一组指令的序列。从广义上来说,一篇菜谱、一段操作指令都是程序。而狭义的程序则特指计算机程序。编写计算机程序需要有专门的程序设计语言。程序设计语言的发展经历了机器语言、汇编语言和高级语言三个时代,机器语言的指令都是二进制代码,非常不便于编程者使用,而且其程序难以在具有不同指令系统的计算机之间移植。汇编语言有所改进,其指令采用助记符表示,使用起来直观一些。不过,汇编语言指令与机器语言指令本质上是相同的,其程序仍然难以在具有不同指令系统的计算机之间移植。因而,机器语言与汇编语言统称为低级语言。为了克服低级语言的缺点,从20世纪50年代开始,计算机专家着手研究设计一种更加通用、与具体计算机硬件无关,表达方式接近人类自然语言和数学语言的程序设计语言,这种语言称为高级语言。从那时起,计算机专家陆续研究开发了数以千计的程序设计语言。就目前而言,常用的程序设计语言也有数十种之多。各种程序设计语言的使用排名情况,可以查看TIOBE网站(https://www.tiobe.com/tiobe-index)的程序设计语言社区排行榜。1.2C语言的发展及特点1.2.1C语言的发展在程序设计语言的发展历程中,从来没有一种语言像C语言一样具有如此广泛而长久的影响力。这主要体现在如下三个方面(1)C语言是编写操作系统的第一选择,也是编写其他系统软件的优先选择。(2)C语言在嵌人式系统程序设计方面具有独特的地位,C语言是除了汇编语言之外使用最多的单片机编程语言。(3)鉴于C语言获得了巨大的成功,人们相继开发了许许多多的“C-like”程序设计语言,从而构成了庞大的C家族,包括C++、C#、Objective-C、Java、PHP、Swift等。C语言的诞生颇为有趣,C语言实际上是UNIX操作系统的一个副产品。1972年,美
国贝尔实验室的DennisRitchie为了开发UNIX操作系统,专门设计出一种新的程序设计语言一C语言。由于C语言具有强大的功能、很高的运行效率,兼具高级语言的直观性与低级语言的硬件访问能力,因而它很快从贝尔实验室走入了广大程序员的编程世界。1.2.2C语言的标准化1.传统C语言早期的C语言没有统一的标准和规范,直到1978年BrainW.Kernighan和DennisM.Ritchie合著的TheCProgrammingLanguage一书出版,才使这种状况得以改变。这本书中定义的语法很快就成为当时事实上的C语言规范,通常将这种规范称为传统C语言。2.C89标准在C语言的发展过程中,出现了很多C语言的“方言”版本,C语言的标准化成为一个紧迫的问题。1983年,美国国家标准化协会(AmericanNationalStandardsInstitute,ANSI)着手进行C语言的标准化工作,直到1989年12月颁布实施。1990年,国际标准化组织(InternationalOrganizationforStandardization,ISO)接受了这一标准,并将其颁布为国际标准。通常将这一标准称为C89标准。目前,几乎所有的C语言编译器都能够支持C89标准。3.C99标准1999年,国际标准化组织再次颁布了新的C语言标准,通常称其为C99标准。目前大部分C语言编译器都能够支持C99标准。4.C11标准2011年,国际标准化组织再次颁布了迄今最新的C语言标准,通常称其为C11标准。目前,几种主流的C语言编译器能够部分地支持C11标准。本书内容主要依据C89标准讲解,部分内容同时兼顾C99标准。1.2.3C语言的特点C语言具有如此强大持久的生命力,成为经久不衰、最受欢迎的程序设计语言之一,是由C语言自身所具有的如下显著特点所决定的。(1)简洁。C语言的关键字与保留标识符特别简短,并采用一对花括号定义程序块,从而使得C语言的程序异常简洁。c(2)灵活。C语言定义了若干功能独特的运算符,加之赋值运算可以嵌入其他表达式语中,导致C语言语句的表达形式灵活多变。当然,过于灵活多变的语法表示也会给学习者書程带来诸多的陷阱与困惑。序(3)功能强大。C语言具有丰富而独特的数据类型与运算符,使得C语言具有强大的设数据表达能力与数据处理能力,计(4)效率高。这主要得益于灵活强大的指针功能,使得C语言程序具有仅次于汇编语新言程序的执行效率。思路2