《C语言入门基础.ppt》由会员分享,可在线阅读,更多相关《C语言入门基础.ppt(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、从零开始学习从零开始学习C语言语言本书的主要特点如下:本书的主要特点如下:内容全面详细。本章一共分为内容全面详细。本章一共分为18章,涵盖了章,涵盖了C语言中语言中的所有知识,并将的所有知识,并将C语言各个知识点做一个章节进行讲解。语言各个知识点做一个章节进行讲解。并举出大量实例。并举出大量实例。结构清晰明了。本章结构清晰明了。本章18章中,每章都分若干个小节,章中,每章都分若干个小节,每个小节一个小知识点。结构层次清晰可见。每个小节一个小知识点。结构层次清晰可见。讲解由浅入深。向读者介绍讲解由浅入深。向读者介绍C语言的基本理论知识、语言的基本理论知识、数据结构和基本的编程规则,让读者对数据结
2、构和基本的编程规则,让读者对C语言的基本知识语言的基本知识以及结构化程序设计思想有一个初步的认识;接着对以及结构化程序设计思想有一个初步的认识;接着对C语语言一些复杂的数结构类型如数组、函数、指针操作、结构言一些复杂的数结构类型如数组、函数、指针操作、结构体与共用体、文件等进行详细的讲解。体与共用体、文件等进行详细的讲解。实例丰富多样。本书所讲的每一个知识点都运用充分实例丰富多样。本书所讲的每一个知识点都运用充分的实例进行讲解说明,便于读者掌握。的实例进行讲解说明,便于读者掌握。第第1 1章章 C C语言入门基础语言入门基础C语言作为国际上流行的计算机高级语言,能实现多语言作为国际上流行的计算
3、机高级语言,能实现多种功能。为使读者能够对种功能。为使读者能够对C语言有一个全面的认识,本章语言有一个全面的认识,本章在介绍在介绍C语言之前,还简单的介绍了很多其他的相关知识。语言之前,还简单的介绍了很多其他的相关知识。计算机语言的演变;计算机语言的演变;数制、数制转换与存储;数制、数制转换与存储;程序设计思想程序设计思想算法;算法;C语言的发展简史和特点;语言的发展简史和特点;认识认识C语言程序;语言程序;Turbo C V2.0的运行环境及基本操作。的运行环境及基本操作。1.1 1.1 计算机语言的演变计算机语言的演变机器语言机器语言汇编语言到汇编语言到高级语言高级语言面向对象或面向问题的
4、高级语言面向对象或面向问题的高级语言 1.1.1 1.1.1 机器语言机器语言机器语言是第一代计算机语言。计算机所使用的是由机器语言是第一代计算机语言。计算机所使用的是由“0”和和“1”组成的二进制数,二进制是计算机的语言的组成的二进制数,二进制是计算机的语言的基础,所以也称为二进制语言。机器语言指用机器码书写基础,所以也称为二进制语言。机器语言指用机器码书写程序,不易被人们识别和读写,所以使用机器语言是十分程序,不易被人们识别和读写,所以使用机器语言是十分痛苦的,特别是在程序有错需要修改时,更是如此。而且,痛苦的,特别是在程序有错需要修改时,更是如此。而且,由于每台计算机的指令系统往往各不相
5、同,所以在一台计由于每台计算机的指令系统往往各不相同,所以在一台计算机上执行的程序,要想在另一台计算机上执行,必须另算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。但由于计算机能够直接识别程编程序,造成了重复工作。但由于计算机能够直接识别程序中的指令,故而运算效率是所有语言中最高的,这种用序中的指令,故而运算效率是所有语言中最高的,这种用二进制编写的程序也叫二进制编写的程序也叫“目标程序目标程序”。1.1.2 1.1.2 汇编语言汇编语言 汇编语言又称符号语言,对机器指令进行简单的符号汇编语言又称符号语言,对机器指令进行简单的符号化,它也是利用计算机所有硬件特性并能直
6、接控制硬件语化,它也是利用计算机所有硬件特性并能直接控制硬件语言。人们为了减轻使用机器语言编程的痛苦,对机器语言言。人们为了减轻使用机器语言编程的痛苦,对机器语言进行了一种有益的改进:用一些简洁的英文字母、符号串进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用来替代一个特定的指令的二进制串,比如,用“ADD”表示表示加法,加法,“MOV”表示数据传递等等,因此,人们就能理解程表示数据传递等等,因此,人们就能理解程序所进行的操作,方便用户对程序进行纠错及维护。序所进行的操作,方便用户对程序进行纠错及维护。1.1.3 1.1.3 高级语言高级语言用高级语言
7、编写的程序称为用高级语言编写的程序称为“源程序源程序”,源程序不能,源程序不能在计算机上直接运行,必须将其翻译成二进制程序后才能在计算机上直接运行,必须将其翻译成二进制程序后才能执行。翻译有两种方式:解释程序和编译程序。解释程序执行。翻译有两种方式:解释程序和编译程序。解释程序是将一次只读一行源程序,并执行该行语言指定的操作,是将一次只读一行源程序,并执行该行语言指定的操作,每次运行用户程序时,必须要用解释程序。在程序的开发每次运行用户程序时,必须要用解释程序。在程序的开发过程中,运用解释的方式执行程序,便于程序员对程序进过程中,运用解释的方式执行程序,便于程序员对程序进行调试。编译程序是将源
8、程序全部翻译成目标代码即二进行调试。编译程序是将源程序全部翻译成目标代码即二进制程序后再执行,只读取一次,节省了大量的时间。制程序后再执行,只读取一次,节省了大量的时间。1.1.4 1.1.4 面向对象或面向问题的高级语言面向对象或面向问题的高级语言第四代语言是使用第二代第三代语言编制而成的。面第四代语言是使用第二代第三代语言编制而成的。面向对象的语言是在面向过程的计算机语言的基础上发展面向对象的语言是在面向过程的计算机语言的基础上发展面来的,如来的,如C+语言就是由语言就是由C语言发展面来的。所谓面向对象,语言发展面来的。所谓面向对象,就是基于对象的概念,以对象为中心,类和继承为构造机就是基
9、于对象的概念,以对象为中心,类和继承为构造机制,认识了解刻画客观世界以及开发出相应的软件系统。制,认识了解刻画客观世界以及开发出相应的软件系统。它是把构成问题事务分解成各个对象,建立对象的目的不它是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。比较典型代表的面向对蟪绦蛏杓朴问题的步骤中的行为。比较典型代表的面向对蟪绦蛏杓朴镅杂镅杂C+、Virtual Basic、Delphi等。等。1.2 1.2 数制、数制转换与存储数制、数制转换与存储数制数制数制转换数制转换计算机中数据的
10、存储计算机中数据的存储1.2.1 1.2.1 数制数制1 1二进制数二进制数二进制数由两个基本数字二进制数由两个基本数字0 0、1 1组成,二进制数的运算规组成,二进制数的运算规律是逢二进一律是逢二进一 。例如:例如:100101 100101可以写成(可以写成(100101100101)2 2或写成或写成100101B100101B。二进制数的加法和乘法运算如下:二进制数的加法和乘法运算如下:0+0=0 0+1=1+0=1 1+1=10 0*0=0 0*1=1*0=0 0+0=0 0+1=1+0=1 1+1=10 0*0=0 0*1=1*0=0 11=1 11=1 1011011001010
11、11000110+1.2.1 1.2.1 数制数制2 2八进制数八进制数八进制是由八进制是由0707八个数字组成,运算规则是逢八个数字组成,运算规则是逢8 8进一。进一。例如:例如:八进制八进制261261写成(写成(261261)8 8、(、(261261)O O。1.2.1 1.2.1 数制数制3 3十进制数十进制数十进制数是我们常用的数据表示方法,由十进制数是我们常用的数据表示方法,由0909十个数十个数字组成,运算规则是逢字组成,运算规则是逢1010进一。进一。例如:例如:十进制十进制126126可表示为(可表示为(126126)1010、126D126D、126126。1.2.1 1
12、.2.1 数制数制4 4十六进制数十六进制数十六进制数由十六进制数由0909以及以及AFAF十六个数字组成,十六个数字组成,AFAF分别分别表示十进制数表示十进制数10151015,运算规则是逢,运算规则是逢1616进一。通常在表示进进一。通常在表示进用用例如:例如:(1FA1FA)1616、(、(1FA1FA)H H注意注意在在C C语言程序中语言程序中十六进制需要以十六进制需要以0 x0 x开头开头八进制需要以八进制需要以0 0开头,开头,例如:例如:0123 0123表示八进制的表示八进制的123123 0 x123 0 x123表示十六进制的表示十六进制的123 123 1.2.2 1
13、.2.2 数制的转换数制的转换1 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*16043941.2.2 1.2.2 数制的转换数制的转换2 2十进制转换成二进制、八进制、十六进制十进制转换成二进制、八进制、十六进制规则:规则:整数部分:除以进制取余数,
14、直到商为整数部分:除以进制取余数,直到商为0 0,余数从下到上排列。,余数从下到上排列。小数部分:乘以进制取整数,得到的整数从上到下排列。小数部分:乘以进制取整数,得到的整数从上到下排列。【例【例1-2】十进制转换成其他进制。】十进制转换成其他进制。(1 1)十进制)十进制20.34520.345转换成二进制转换成二进制20.345D=10100.01011B20.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
15、=0.76 -取整数00.76*2=1.52 -取整数10.52*2=1.04 -取整数1【例【例1-2】十进制转换成其他进制。】十进制转换成其他进制。(2 2)十进制)十进制100100转换成八进制、十六进制转换成八进制、十六进制100/8=12 -余412/8=1 -余41/8=0 -余1100D=144O100/16=6 -余46/16=0 -余6100D=64H1.2.2 1.2.2 数制的转换数制的转换3 3二进制转换八进制二进制转换八进制规则:规则:整数部分:从右向左按三位进行分组,不足补零。整数部分:从右向左按三位进行分组,不足补零。小数部分:从左向右按三位进行分组,不足补零。小
16、数部分:从左向右按三位进行分组,不足补零。【例【例1-31-3】将二进制数(】将二进制数(1101101110.1101011101101110.110101)2 2转换成转换成八进制数。八进制数。001001 101101 101101 110110.110110 101101 1 5 5 6 6 5 1 5 5 6 6 5(1101101110.1101011101101110.110101)2 2=(1555.651555.65)8 81.2.2 1.2.2 数制的转换数制的转换4 4二进制转换成十六进制二进制转换成十六进制规则:规则:整数部分:从右向左按四位进行分组,不足补零。整数部分
17、:从右向左按四位进行分组,不足补零。小数部分:从左向右按四位进行分组,不足补零。小数部分:从左向右按四位进行分组,不足补零。【例例1-41-4】将将二二进进制制数数(001101101110.110101001101101110.110101)2 2转转换换成十六进制数。成十六进制数。00110011 01100110 11101110.11011101 01000100 3 6 E D 4 3 6 E D 4(001101101110.110101001101101110.110101)2=2=(36.ED436.ED4)16161.2.2 1.2.2 数制的转换数制的转换5八进制、十六进制
18、转换成二进制八进制、十六进制转换成二进制规则:规则:一位八进制对应三位二进制。一位八进制对应三位二进制。一位十六进制对应四位二进制。一位十六进制对应四位二进制。【例例1-5】八进制、十六进制转换成二进制。八进制、十六进制转换成二进制。(136)8=(001 011 110)2 (17A)16=(0001 0111 1010)2 1 3 6 1 7 A1.2.3 1.2.3 计算机中数据的存储计算机中数据的存储如表示:比较一下如表示:比较一下1与与-1的原码、反码和补码。的原码、反码和补码。1.3 1.3 程序设计思想程序设计思想算法算法在我们遇到问题的时候,我们首先在大脑中形成一种在我们遇到问
19、题的时候,我们首先在大脑中形成一种解题思路,然后再根据可行的思路运用具体的步骤解决问解题思路,然后再根据可行的思路运用具体的步骤解决问题。在程序设计中,也需要有一种编程思路,这就是算法。题。在程序设计中,也需要有一种编程思路,这就是算法。1.3.1 1.3.1 算法的概念算法的概念在程序设计中,算法应该能够离散成具体的若干个操在程序设计中,算法应该能够离散成具体的若干个操作步骤,而且每一个步骤都是能够用程序设计语言提供的作步骤,而且每一个步骤都是能够用程序设计语言提供的语句或者语句串来完成的。语句或者语句串来完成的。例如,求二个整数中的最大的数。解决这个问题的算例如,求二个整数中的最大的数。解
20、决这个问题的算法如下:法如下:第第1步步 开始。开始。第第2步步 输入二个整数输入二个整数a、b。第第3步步 比较比较a、b的大小,如果的大小,如果ab时,输出时,输出a,否则输,否则输出出b。第第4步步 结束。结束。需要注意的是,程序是有开始和结束的,所以算法必需要注意的是,程序是有开始和结束的,所以算法必须有须有“开始开始”和和“结束结束”这两个步骤。这两个步骤。1.3.2 1.3.2 算法的特点算法的特点算法具有以下五个重要的特征:算法具有以下五个重要的特征:1有穷性有穷性2确定性确定性3。有效性。有效性4输入输入5输出输出1.3.3 1.3.3 算法的表示方法算法的表示方法1 1自然语
21、言自然语言【例【例1-61-6】用自然语言描述】用自然语言描述100100以内正整数的和。以内正整数的和。1 1设设S S代表总和,代表总和,N N代表正整数;代表正整数;2 2S=0S=0,N=1N=1;3 3S=S+NS=S+N,原来的和加上一个正整数;,原来的和加上一个正整数;4 4N=N+1,N=N+1,把下一个正整数赋给把下一个正整数赋给N N;5 5判断判断N N是否小于是否小于100100,如果是跳转到步骤,如果是跳转到步骤3 3,否则跳,否则跳转到步骤转到步骤6 6;6 6输出输出S S的值。的值。1.3.3 1.3.3 算法的表示方法算法的表示方法2 2流程图流程图 常用流程
22、图构件常用流程图构件1.3.3 1.3.3 算法的表示方法算法的表示方法3 3伪代码伪代码将上述【例将上述【例1-61-6】用伪代码描述表示如下:】用伪代码描述表示如下:N1;N1;S0;S0;do while N100do while N100SS+N;SS+N;NN+1;NN+1;print Sprint S1.3.3 1.3.3 算法的表示方法算法的表示方法4N-S图图(1)顺序结构)顺序结构N-S图图(2)选择结构)选择结构N-S图图(3)循环结构)循环结构N-S图图1.3.4 1.3.4 算法分析算法分析什么样的算法才是一个好的算法呢?通常从下列几个什么样的算法才是一个好的算法呢?通
23、常从下列几个方面衡量算法的优劣:方面衡量算法的优劣:1正确性正确性2可读性可读性3健壮性健壮性4时间复杂度与空间复杂度时间复杂度与空间复杂度T(n)=O(f(n)S(n)=O(f(n)1.4 C1.4 C语言的发展简史和特点语言的发展简史和特点C语言能够快速发展成为最受欢迎的语言之一,主要语言能够快速发展成为最受欢迎的语言之一,主要是因为它具有强大的功能。它既有高级语言的特点,又具是因为它具有强大的功能。它既有高级语言的特点,又具有汇编语言的特点,它可以作为工作系统设计语言,编写有汇编语言的特点,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依系统应用程序,也
24、可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。赖计算机硬件的应用程序。1.4.1 C1.4.1 C语言的诞生与发展语言的诞生与发展19721972年,贝尔实验室设计出年,贝尔实验室设计出C C语言,当时语言,当时Ken ThompsonKen Thompson刚刚使用汇刚刚使用汇编语言和编语言和B B语言开发出语言开发出UNIXUNIX操作系统,但用汇编语言开发系统非常烦琐,操作系统,但用汇编语言开发系统非常烦琐,于是用于是用C C语言改写语言改写UNIXUNIX系统的内核。系统的内核。19771977年年Dennis M.Ritchie Dennis M.Ritchie 发表了不
25、依赖于具体机器系统的发表了不依赖于具体机器系统的C C语言语言编译文本可移植的编译文本可移植的C C语言编译程序。语言编译程序。19781978年由美国电话电报公司年由美国电话电报公司(AT&T)(AT&T)贝尔实验室正式发布贝尔实验室正式发布C C语言。同语言。同由和共同完成的了著名的由和共同完成的了著名的The C Programming LanguageThe C Programming Language一书,通常一书,通常简称为简称为K&RK&R19831983年,美国国家标准化协会(年,美国国家标准化协会(ANSIANSI)根据语言问世以来各种)根据语言问世以来各种版本对语言的发展和
26、扩充,制定了版本对语言的发展和扩充,制定了ANSI C ANSI C 标准。标准。19901990年,国际标准化组织年,国际标准化组织ISOISO(International Organization for International Organization for StandardsStandards)接受了)接受了89 ANSI C 89 ANSI C 为为ISO C ISO C 的标准(的标准(ISO9899-1990ISO9899-1990)。)。目前目前c c语言在世界范围内都是相当流行的高级语言。语言在世界范围内都是相当流行的高级语言。C C语言最初是语言最初是为了描述和实现为
27、了描述和实现unixunix系统的,但随着系统的,但随着c c语言的发展,它适用任何平台,语言的发展,它适用任何平台,C C可以用来编写应用软件,也可以用来编写系统软件。许多著名的系统软可以用来编写应用软件,也可以用来编写系统软件。许多著名的系统软件,如件,如DBASE DBASE 都是由都是由C C 语言编写的。用语言编写的。用C C 语言加上一些汇编语言子程语言加上一些汇编语言子程序,就更能显示序,就更能显示C C 语言的优势了,像语言的优势了,像PC-DOS PC-DOS、WORDSTARWORDSTAR等就是用这种等就是用这种方法编写的。方法编写的。1.4.2 C1.4.2 C语言的特点语言的特点C语言具有以下几个基本特点。语言具有以下几个基本特点。1紧凑简洁、灵活方便紧凑简洁、灵活方便2运算符丰富多样运算符丰富多样3数据结构多样性数据结构多样性4程序语言模块化程序语言模块化5控制语句结构化控制语句结构化6接近硬件与系统接近硬件与系统7运行效率高运行效率高8可移植性好可移植性好
限制150内