从零开始学习C语言本书的主要特点如下:内容全面详细。本章一共分为18章,涵盖了C语言中的所有知识,并将C语言各个知识点做一个章节进行讲解。并举出大量实例。结构清晰明了。本章18章中,每章都分若干个小节,每个小节一个小知识点。结构层次清晰可见。讲解由浅入深。向读者介绍C语言的基本理论知识、数据结构和基本的编程规则,让读者对C语言的基本知识以及结构化程序设计思想有一个初步的认识;接着对C语言一些复杂的数结构类型如数组、函数、指针操作、结构体与共用体、文件等进行详细的讲解。实例丰富多样。本书所讲的每一个知识点都运用充分的实例进行讲解说明,便于读者掌握。第1章C语言入门基础C语言作为国际上流行的计算机高级语言,能实现多种功能。为使读者能够对C语言有一个全面的认识,本章在介绍C语言之前,还简单的介绍了很多其他的相关知识。计算机语言的演变;数制、数制转换与存储;程序设计思想—算法;C语言的发展简史和特点;认识C语言程序;TurboCV2.0的运行环境及基本操作。1.1计算机语言的演变•机器语言•汇编语言到•高级语言•面向对象或面向问题的高级语言1.1.1机器语言机器语言是第一代计算机语言。计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机的语言的基础,所以也称为二进制语言。机器语言指用机器码书写程序,不易被人们识别和读写,所以使用机器语言是十分痛苦的,特别是在程序有错需要修改时,更是如此。而且,由于每台计算机的指令系统往往各不相同,所以在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。但由于计算机能够直接识别程序中的指令,故而运算效率是所有语言中最高的,这种用二进制编写的程序也叫“目标程序”。1.1.2汇编语言汇编语言又称符号语言,对机器指令进行简单的符号化,它也是利用计算机所有硬件特性并能直接控制硬件语言。人们为了减轻使用机器语言编程的痛苦,对机器语言进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“ADD”表示加法,“MOV”表示数据传递等等,因此,人们就能理解程序所进行的操作,方便用户对程序进行纠错及维护。1.1.3高级语言用高级语言编写的程序称为“源程序”,源程序不能在计算机上直接运行,必须将其翻译成二进制程序后才能执行。翻译有两种方式:解释程序和编译程序。解释程序是将一次只读一行源程序,并执行该行语言指定的操作,每次运行用户程序时,必须要用解释程序。在程序的开发过程中,运用解释的方式执行程序,便于程序员对程序进行调试。编译程序是将源程序全部翻译成目标代码即二进制程序后再执行,只读取一次,节省了大量的时间。1.1.4面向对象或面向问题的高级语言第四代语言是使用第二代第三代语言编制而成的。面向对象的语言是在面向过程的计算机语言的基础上发展面来的,如C++语言就是由C语言发展面来的。所谓面向对象,就是基于对象的概念,以对象为中心,类和继承为构造机制,认识了解刻画客观世界以及开发出相应的软件系统。它是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。比较典型代表的面向对蟪绦蛏杓朴镅杂C++、VirtualBasic、Delphi等。1.2数制、数制转换与存储•数制•数制转换•计算机中数据的存储1.2.1数制1.二进制数二进制数由两个基本数字0、1组成,二进制数的运算规律是逢二进一。例如:100101可以写成(100101)2或写成100101B。二进制数的加法和乘法运算如下:0+0=00+1=1+0=11+1=100*0=00*1=1*0=01×1=1101101100101011000110+1.2.1数制2.八进制数八进制是由0~7八个数字组成,运算规则是逢8进一。例如:八进制261写成(261)8、(261)O。1.2.1数制3.十进制数十进制数是我们常用的数据表示方法,由0~9十个数字组成,运算规则是逢10进一。例如:十进制126可表示为(126)10、126D、126。1.2.1数制4.十六进制数十六进制数由0~9以及A~F十六个数字组成,A~F分别表示十进制数10~15,运算规则是逢16进一。通常在表示进用例如:(1FA)16、(1FA)H注意在C语言程序中十六进制需要以0x开头八进制需要以0开头,例如:0123表示八进制的1230x123表示十六进制的1231.2.2数制的转换1.二进制、八进制、十六进制转换成十进制规则:数码乘以各自的权的累加【例1-1】其他进制转换成十进制。(10001)B=24+20=16+1=17(101.01)B=22+20+2-2=4+1+0.25=5.25(011)O=81+80=8+1=9(72)O=7*81+2*80=7*8+2*1=58(112A)H=1*163+1*162+2*161+10*160=43941.2.2数制的转换2.十进制转换成二进制、八进制、十六进制规则:整数部分:除以进制取余数,直到商为0,余数从下到上排列。小数部分:乘以进制取整数,得到的整数从上到下排列。【例1-2】十进制转换成其他进制。(1)十进制20.345转换成二进制20.345D=10100.01011B整数部分:20/2=10----余010/2=5----余05/2=2----余12/2=1----余01/2=0----余1小数部分:0.345*2=0.69----取整数00.69*2=1.38----取整数10.38*2=0.76----取整数00.76*2=1.52----取整数10.52*2=1.04----取整数1【例1-2】十进制转换成其他进制。(2)十进制100转换成八进制、十六进制100/8=12----余412/8=1----余41/8=0----余1100D=144O100/16=6----余46/16=0----余6100D=64H1.2.2数制的转换3.二进制转换八进制规则:整数部分:从右向左按三位进行分组,不足补零。小数部分:从左向右按三位进行分组,不足补零。【例1-3】将二进制数(1101101110.110101)2转换成八进制数。001101101110.110101155665(1101101110.110101)2=(1555.65)81.2.2数制的转换4.二进制转换成十六进制规则:整数部分:从右向左按四位进行分组,不足补零。小数部分:从左向右按四位进行分组,不足补零。【例1-4】将二进制数(001101101110.110101)2转换成十六进制数。001101101110.1101010036ED4(001101101110.110101)2=(36.ED4)161.2.2数制的转换5.八进制、十六进制转换成二进制规则:一位八进制对应三位二进制。一位十六进制对应四位二进制。【例1-5】八进制、十六进制转换成二进制。(136)8=(001011110)2(17A)16=(000101111010)213617A1.2.3计算机中数据的存储如表示:比较一下1与-1的原码、反码和补码。1.3程序设计思想—算法在我们遇到问题的时候,我们首先在大脑中形成一种解题思路,然后再根据可行的思路运用具体的步骤解决问题。在程序设计中,也需要有一种编程思路,这就是算法。1.3.1算法的概念在程序设计中,算法应该能够离散成具体的若干个操作步骤,而且每一个步骤都是能够用程序设计语言提供的语句或者语句串来完成的。例如,求二个整数中的最大的数。解决这个问题的算法如下:第1步开始。第2步输入二个整数a、b。第3步比较a、b的大小,如果ab时,输出a,否则输出b。第4步结束。需要注意的是,程序是有开始和结束的,所以算法必须有“开始”和“结束”这两个步骤。1.3.2算法的特点算法具有以下五个重要的特征:1.有穷性2.确定性3。有效性4.输入5.输出1.3.3算法的表示方法1.自然语言【例1-6】用自然语言描述100以内正整数的和。1.设S代表总和,N代表正整数;2.S=0,N=1;3.S=S+N,原来的和加上一个正整数;4.N=N+1,把下一个正整数赋给N;5.判断N是否小于100,如果是跳转到步骤3,否则跳转到步骤6;6.输出S的值。1.3.3算法的表示方法2.流程图常用流程图构件1.3.3算法的表示方法3.伪代码将上述【例1-6】用伪代码描述表示如下:①N←1;②S←0;③dowhileN≤100④{S←S+N;N←N+1;}⑤printS1.3.3算法的表示方法4.N-S图(1)顺序结构N-S图(2)选择结构N-S图(3)循环结构N-S图1.3.4算法分析什么样的算法才是一个好的算法呢?通常从下列几个方面衡量算法的优劣:1.正确性2.可读性3.健壮性4.时间复杂度与空间复杂度T(n)=O(f(n))S(n)=O(f(n))1.4C语言的发展简史和特点C语言能够快速发展成为最受欢迎的语言之一,主要是因为它具有强大的功能。它既有高级语言的特点,又具有汇编语言的特点,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。1.4.1C语言的诞生与发展1972年,贝尔实验室D.M.Ritchie设计出C语言,当时KenThompson刚刚使用汇编语言和B语言开发出UNIX操作系统,但用汇编语言开发系统非常烦琐,于是D.M.Ritchie用C语言改写UNIX系统的内核。1977年DennisM.Ritchie发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。1978年由美国电话电报公司(AT&T)贝尔实验室正式发布C语言。同由B.W.Kernighan和D.M.Ritchie共同完成的了著名的《TheCProgrammingLanguage》一书,通常简称为《K&R》1983年,美国国家标准化协会(ANSI)根据C语言问世以来各种版本对C语言的发展和扩充,制定了ANSIC标准。1990年,国际标准化组织ISO(InternationalOrganizationforStandards)接受了89ANSIC为ISOC的标准(ISO9899-1990)。目前c语言在世界范围内都是相当流行的高级语言。C语言最初是为了描述和实现unix系统的,但随着c语言的发展,它适用任何平台,C可以用来编写应用软件,也可以用来编写系统软件。许多著名的系统软件,如DBASEⅣ都是由C语言编写的。用C语言加上一些汇编语言子程序,就更能显示C语言的优势了,像PC-DOS、WORDSTAR等就是用这种方法编写的。1.4.2C语言的特点C语言具有以下几个基本特点。1.紧凑简洁、灵活方便2.运算符丰富多样3.数据结构多样性4.程序语言模块化5.控制语句结构化6.接近硬件与系统7.运行效率高8.可移植性好