C语言与程序设计第1章课件

上传人:txadgkn****dgknqu... 文档编号:115514148 上传时间:2022-07-02 格式:PPT 页数:69 大小:312.50KB
收藏 版权申诉 举报 下载
C语言与程序设计第1章课件_第1页
第1页 / 共69页
C语言与程序设计第1章课件_第2页
第2页 / 共69页
C语言与程序设计第1章课件_第3页
第3页 / 共69页
资源描述:

《C语言与程序设计第1章课件》由会员分享,可在线阅读,更多相关《C语言与程序设计第1章课件(69页珍藏版)》请在装配图网上搜索。

1、2022-7-2华中科技大学计算机学院C语言课程组1C C语言与程序设计语言与程序设计The C Programming Language 第第1 1章章 概述概述华中科技大学计算机学院华中科技大学计算机学院曹计昌曹计昌2022-7-2华中科技大学计算机学院C语言课程组2C语言程序设计-第1章 概论nC C语言是目前全球流传最广、使用最多的程语言是目前全球流传最广、使用最多的程序设计语言。本章介绍内容为序设计语言。本章介绍内容为: :1.程序设计语言与程序设计程序设计语言与程序设计2.2.学习学习C C语言程序设计的第一个例子。语言程序设计的第一个例子。3.3.C C语言的产生与发展,语言特征

2、,标准。语言的产生与发展,语言特征,标准。4.4.计算机硬件系统的组成,数的编码表示以及数在计算机硬件系统的组成,数的编码表示以及数在内存中的表现形式。内存中的表现形式。5.5.算法的概念及其表示方法。算法的概念及其表示方法。6.6.对对C C语言程序设计概略性的介绍。语言程序设计概略性的介绍。7.7.同时介绍了同时介绍了N N进制数进制数, ,数之间转换的方法,以及原数之间转换的方法,以及原码、补码、反码及其相关运算。码、补码、反码及其相关运算。2022-7-2华中科技大学计算机学院C语言课程组3C C语言的应用领域(补充)语言的应用领域(补充)1. 操作系统设计操作系统设计UNIX,LIN

3、UX,WINDOWS,底层及驱动程序等底层及驱动程序等. 3G手机中的手机中的Android操作系统操作系统1,2层层2. 计算机网络与通信系统计算机网络与通信系统TCP/IP协议栈协议栈,路由软件路由软件,交换机软件等交换机软件等.3. 系统软件系统软件各种各种DBMS,如如Oracle,Sybase,MS SQL Server等等;各种编译器软件各种编译器软件.4. 嵌入式系统嵌入式系统(民用民用)汽车汽车(40多个微处理器系统多个微处理器系统),手机手机,U盘驱动盘驱动,MP3等等;嵌入式操作系统嵌入式操作系统;智能智能卡系统等卡系统等.5. 国防国防,军工军工,航空航天航空航天,工业控

4、制系统中大多数软件均以工业控制系统中大多数软件均以C,甚至要求以标准,甚至要求以标准C作为软件开发的语言工具作为软件开发的语言工具.6. 图形图像系统图形图像系统各种图形图像处理算法,各种图形图像系统,如各种图形图像处理算法,各种图形图像系统,如OpenCV,各种多媒体系各种多媒体系统(音频、视频处理),许多游戏程序均以统(音频、视频处理),许多游戏程序均以C作为开发工具。作为开发工具。2022-7-2华中科技大学计算机学院C语言课程组41.1 1.1 程序设计语言与程序设计程序设计语言与程序设计n本门课程的本门课程的基本研究对象基本研究对象程序设计程序设计语言语言(C语言),以及语言),以及

5、程序设计程序设计(包括各种(包括各种算法,数据结构)算法,数据结构)n了解什么是程序设计语言,了解什么是程序,了解了解什么是程序设计语言,了解什么是程序,了解什么是程序设计,就是什么是程序设计,就是了解本门课程的基本研究对了解本门课程的基本研究对象象。这些对于学习语言和程序设计来讲是非常必要。这些对于学习语言和程序设计来讲是非常必要的。的。 n计算机语言包括机器语言、汇编语言和高级语言这计算机语言包括机器语言、汇编语言和高级语言这三类语言。三类语言。n如果不涉及汇编语言,程序设计语言往往就是指高如果不涉及汇编语言,程序设计语言往往就是指高级语言。级语言。 2022-7-2华中科技大学计算机学院

6、C语言课程组5从范型分类角度看程序设计语言从范型分类角度看程序设计语言n 从程序设计语言范型分类的角度看,程序设计语言可以分从程序设计语言范型分类的角度看,程序设计语言可以分为为:n命令型语言(命令型语言(Imperative Language)(因此因此CMU将本课程将本课程称为称为Principles of Imperative Computation,内容包括,内容包括C0和和C)n函数型语言(函数型语言(Functional Language)n面向对象程序设计语言面向对象程序设计语言(Object-Oriental Programming Language)n以及逻辑型程序设计语言以

7、及逻辑型程序设计语言(Logic Programming Language)。n在目前流行的数十种程序设计语言中,在目前流行的数十种程序设计语言中, C(编译型编译型)、 Python(解释型解释型)、FORTRAN、Pascal属于命令型语言。属于命令型语言。 nLISP、ML属于功能型语言。属于功能型语言。nAda、Smalltalk、C+、Java属于面向对象程序设计语言。属于面向对象程序设计语言。nProlog属于逻辑型程序设计语言。属于逻辑型程序设计语言。 2022-7-2华中科技大学计算机学院C语言课程组6程序设计语言范型程序设计语言范型n程序设计语言范型程序设计语言范型指指程序设

8、计语言的语言特征,主程序设计语言的语言特征,主要涉及到与程序设计语言相关的程序设计方法和组要涉及到与程序设计语言相关的程序设计方法和组织程序的方式织程序的方式。n从国外教科书中关于程序设计语言范型的处理和解从国外教科书中关于程序设计语言范型的处理和解释来看,一般是从不同程序设计语言相互比较的角释来看,一般是从不同程序设计语言相互比较的角度来讨论程序设计语言范型。度来讨论程序设计语言范型。n就某一特定的程序设计语言而言,范型的讨论则归就某一特定的程序设计语言而言,范型的讨论则归结为与程序设计技术和程序设计风格相关的程序设结为与程序设计技术和程序设计风格相关的程序设计范型。计范型。 2022-7-

9、2华中科技大学计算机学院C语言课程组7高级语言产生、发展、演变高级语言产生、发展、演变 n高级语言将面向问题的数据类型的概念引入程高级语言将面向问题的数据类型的概念引入程序设计序设计通过将数据分类成为字符型、整型、浮点型等通过将数据分类成为字符型、整型、浮点型等不同的类型,来刻画、描述不同类型数据。不同的类型,来刻画、描述不同类型数据。n高级语言产生、发展、演变,各种各样高级语高级语言产生、发展、演变,各种各样高级语言的兴起,实质上就是高级语言数据类型的不言的兴起,实质上就是高级语言数据类型的不断完善、不断扩充、不断复杂多样,以及对客断完善、不断扩充、不断复杂多样,以及对客观实体描述能力不断增

10、强的一个过程。观实体描述能力不断增强的一个过程。 2022-7-2华中科技大学计算机学院C语言课程组8什么是程序设计语言?什么是程序设计语言? n计算机的使用者认为程序设计语言是操纵计算机的计算机的使用者认为程序设计语言是操纵计算机的工具;工具;n程序员则认为它是程序员之间的相互通信和交流的程序员则认为它是程序员之间的相互通信和交流的方法;方法;n喜欢数学和算法的人则认为它是算法的符号表示。喜欢数学和算法的人则认为它是算法的符号表示。n按照按照Ravi Sethi的观点,的观点,一门一门通用的程序设计语言通用的程序设计语言应该是能够为各种各样的用户都能提供服务的语言应该是能够为各种各样的用户都

11、能提供服务的语言。n按照一般比较流行的观点,可以认为:按照一般比较流行的观点,可以认为:程序设计语程序设计语言言是由一些符号所构成,这些符号被用于定义、组是由一些符号所构成,这些符号被用于定义、组织、并完成各种各样的计算任务。织、并完成各种各样的计算任务。 2022-7-2华中科技大学计算机学院C语言课程组9程序设计语言的定义程序设计语言的定义 n人类所使用的语言称为自然语言。它是以语音人类所使用的语言称为自然语言。它是以语音为物质外壳、以词汇为建筑材料、以语法为结为物质外壳、以词汇为建筑材料、以语法为结构规律而构成的体系。构规律而构成的体系。n与此类似,可以将程序设计语言定义为:与此类似,可

12、以将程序设计语言定义为: 程序设计语言程序设计语言是以具有特定语义的符号为基本是以具有特定语义的符号为基本构成单位、以语法为程序构成规律、专门用于构成单位、以语法为程序构成规律、专门用于定义、组织、并完成各种各样的计算任务而形定义、组织、并完成各种各样的计算任务而形成的体系成的体系。 2022-7-2华中科技大学计算机学院C语言课程组10程序与程序设计程序与程序设计n程序程序是用程序设计语言表示的计算机解题算法是用程序设计语言表示的计算机解题算法或计算机解题任务或计算机解题任务。n程序设计是将解题任务转变成程序的过程。程序设计是将解题任务转变成程序的过程。nNell Dale等人指出:等人指出

13、:n程序程序就是要求计算机执行的指令序列就是要求计算机执行的指令序列。n程序设计程序设计就是如何计划、安排计算机必须遵循就是如何计划、安排计算机必须遵循的操作步骤及顺序的过程的操作步骤及顺序的过程。 2022-7-2华中科技大学计算机学院C语言课程组111.2 学习学习C C语言程序设计的第一个例子语言程序设计的第一个例子 例例1.1 1.1 输入自己的名字的汉语拼音,输入自己的名字的汉语拼音,要计算机问候自己并且输出这是自己要计算机问候自己并且输出这是自己学习学习C C语言的第一个程序的句子。语言的第一个程序的句子。2022-7-2华中科技大学计算机学院C语言课程组12例例1.11.1的程序

14、的程序1.#include stdio.h2.void show(char str);3.void main(void)4.5. char name20;6. printf(Input your name please!n);7. gets(name);8. printf(Hello %s!n,name);9. show(name);10.11.void show(char str)12.13. printf(This is the first program for %s to learn C programming!n,str);14. 源程序源程序ex1_1.c2022-7-2华中科技大

15、学计算机学院C语言课程组13操作例操作例1.11.1的程序的程序( (参考参考p2 p2 图图1.1)1.1)n双击双击Visual C+ 6.0(即即VC 6.0)图标打开图标打开VC 6.0 n选选File,再选下拉菜单中的再选下拉菜单中的New,在,在New窗口中的窗口中的Project页(缺省)中选择页(缺省)中选择Win32 Console Application(选中变兰选中变兰),并且在,并且在Project Name编编辑框中输入工程名,如:辑框中输入工程名,如:Myproject。n再单击再单击OK按钮按钮,在打开的窗口中单击在打开的窗口中单击An empty project

16、(缺省缺省),再单击再单击Finish按钮。在打开的窗口按钮。在打开的窗口中单击中单击OK按钮。此时按钮。此时VC将创建一个空的工程。将创建一个空的工程。n单击单击FileView,选中,选中Source Files(变成兰色变成兰色),选,选File,再选下拉菜单中的再选下拉菜单中的New,单击,单击C+ Source File(变成兰色变成兰色),在在File编辑框中输入编辑框中输入hello.c 2022-7-2华中科技大学计算机学院C语言课程组14操作例操作例1.11.1的程序的程序n点开点开Source Files目录,可以看见目录,可以看见hello.c文件,文件,双击双击hell

17、o.c,在右侧文本编辑区域输入例,在右侧文本编辑区域输入例1.1中的中的源程序。源程序。n选选Build,再选下拉菜单中的,再选下拉菜单中的Rebuild All。此时。此时VC编译器将对源程序进行编译、链接,并且生成编译器将对源程序进行编译、链接,并且生成名字为名字为Myproject.exe的可执行文件。的可执行文件。n选选Build,再选再选Execute Myproject.exe运行运行Myproject.exe程序程序 2022-7-2华中科技大学计算机学院C语言课程组15例例1.11.1的程序的结果的程序的结果n人机交互与运行结果如下:人机交互与运行结果如下:Input your

18、 name please!Jichang Cao(此为输入信息)(此为输入信息)Hello Jichang Cao!This is the first program for Jichang Cao to learn C programming! 2022-7-2华中科技大学计算机学院C语言课程组161.#include stdio.h ) /*文件包含编译预处理命令文件包含编译预处理命令 */2.void show(char str); )/*函数原型说明语句函数原型说明语句 */3.void main(void) /*主函数主函数 */ 4.5. char name20; )/*声明语句声

19、明语句 */6. printf(“Input your name please!n”); )/*输出提示输出提示 */7. gets(name); )/*读取用户名字读取用户名字 */8. printf(Hello %s!n,name);9. show(name); /*调用调用show函数函数 */ 10.11.void show(char str) )/*show函数的定义函数的定义 */12.13. printf(This is the first program for %s to learn C programming!n,str);14. 直接打开直接打开ex1_1.c,里面有详细

20、注释里面有详细注释源程序源程序ex1_1.c1.2.2 1.2.2 解释分析第一个解释分析第一个C C程序程序2022-7-2华中科技大学计算机学院C语言课程组171.3 C1.3 C语言的产生、发展与语言特征语言的产生、发展与语言特征1.3.1 C1.3.1 C语言的产生与发展语言的产生与发展 FORTRAN(1957年)年)ALGOL 60(1960年)年) 传统传统C或或K&R C(1978)CPL(1963年)年) ANSI C(1989,美国国家标准),美国国家标准)BCPL(1967年)年) 标准标准 C(ISO/IEC 9899:1990,俗称,俗称C90)B(1969年年-19

21、70年)年) 标准标准 C(ISO/IEC 9899:1999俗称俗称C99)C(1971年年-1973年)年) 最新标准最新标准 C(ISO/IEC 9899:2011俗称俗称C11)图图1.1 C语言的继承、产生与发展历程语言的继承、产生与发展历程2022-7-2华中科技大学计算机学院C语言课程组181.3.2 C1.3.2 C语言的标准化语言的标准化 n以以1978年年K&R C为代表的为代表的C语言被称为传统的语言被称为传统的C语言语言 n1989年底公布美国第一个年底公布美国第一个C语言的国家标准语言的国家标准ANSI 89,简称,简称C89 n1990年,国际标准化组织年,国际标准

22、化组织ISO将其接受为将其接受为C语言的国际标准,语言的国际标准,称为称为ISO/IEC 9899-1990。它是。它是C语言的第一个国际标准,语言的第一个国际标准,也称为标准也称为标准C,简称,简称C90。 nISO/IEC在在1995年公布了一个新的年公布了一个新的C语言标准草案,称为语言标准草案,称为C95,供讨论和征求意见。,供讨论和征求意见。n接着接着ISO/IEC在在1998年又公布新标准的草案年又公布新标准的草案WG14/N843和和WG14/N897,进一步就,进一步就C语言标准的完善征求意见。语言标准的完善征求意见。nISO/IEC于于1999年年12月公布了月公布了C语言国

23、际标准语言国际标准ISO/IEC 9899:1999 (E)。它是。它是C语言国际标准语言国际标准9899的第二版。的第二版。 nISO/IEC于于2011年年12月公布了月公布了C语言国际标准语言国际标准ISO/IEC 9899:2011。它是。它是C语言国际标准语言国际标准9899的第三版。的第三版。 2022-7-2华中科技大学计算机学院C语言课程组191.3.3 C1.3.3 C语言的特征语言的特征 1)语言简洁紧凑语言简洁紧凑2)目标代码质量高目标代码质量高3)语言表达能力强语言表达能力强 4)流程控制结构化流程控制结构化 5)弱类型弱类型 6)“中级语言中级语言”特性特性 7)书写

24、自由、使用灵活书写自由、使用灵活 8)可移植性好可移植性好 2022-7-2华中科技大学计算机学院C语言课程组201.4 计算机系统及内存编址n一台计算机硬件系统由一台计算机硬件系统由CPU、内存、外存、其他、内存、外存、其他I/O设备和总线组成。设备和总线组成。nCPU 又称为中央处理器又称为中央处理器 。 CPU又是由运算器、又是由运算器、控制器、指令计数器、内部寄存器、标志寄存器控制器、指令计数器、内部寄存器、标志寄存器等部件组成。等部件组成。 n内存又称为内存储器,用以存放程序和数据。内存又称为内存储器,用以存放程序和数据。n总线是用以连接计算机各个部件的线路,它完成总线是用以连接计算

25、机各个部件的线路,它完成各个部件之间的信息传送。根据传送信号种类的各个部件之间的信息传送。根据传送信号种类的不同,总线又分成地址总线、数据总线和控制总不同,总线又分成地址总线、数据总线和控制总线。线。2022-7-2华中科技大学计算机学院C语言课程组21内存编址内存编址, ,内存容量内存容量, ,字长字长n内存以字节为单位线性连续编址。即按照内存以字节为单位线性连续编址。即按照0 x00000 x0000,0 x00010 x0001,0 x00020 x0002,的方式;从低地址端开始向的方式;从低地址端开始向高地址端为每一个内存字节进行顺序连续编号。高地址端为每一个内存字节进行顺序连续编号

26、。n10241024个字节称为个字节称为1K1K字节,字节,1024K1024K字节称为字节称为1M1M字节,字节,1024M1024M字节称为字节称为1G1G字节。字节。1024G1024G字节称为字节称为1T1T字节。字节。 nCPUCPU数据总线的宽度(数据总线的宽度(bitbit数)称为计算机的机器数)称为计算机的机器字长。对位,机器字长为字节;对字长。对位,机器字长为字节;对位,机器字长为字节;对位位,机器字长为字节;对位,机器字长为字节。,机器字长为字节。 2022-7-2华中科技大学计算机学院C语言课程组22外存和其他外存和其他I/OI/O设备设备 n外存指计算机的外存储器。常用

27、的硬盘、软外存指计算机的外存储器。常用的硬盘、软盘、盘、U盘、光盘、以及磁盘阵列都属于外存。盘、光盘、以及磁盘阵列都属于外存。外存存储的信息在断电之后仍然能够保存,外存存储的信息在断电之后仍然能够保存,这是外存的第一个特点。这是外存的第一个特点。 n其他其他I/O设备设备 :键盘键盘 ,显示器显示器 ,打印机打印机 ,绘图绘图仪仪 2022-7-2华中科技大学计算机学院C语言课程组231.5 数和字符的编码表示n1.5.1 进位计数制进位计数制n数量数量用于描述事物的多少。用于描述事物的多少。数目数目则是表示事则是表示事物的个数。而物的个数。而表示数目的符号表示数目的符号则是则是数字数字,往,

28、往往简称为数。往简称为数。n一个数在不同的进位制下具有不同的表示,一个数在不同的进位制下具有不同的表示,因而形成数制的概念。因而形成数制的概念。n数制是关于记数的法则。根据进位基数的不数制是关于记数的法则。根据进位基数的不同同,常用的有十进制、二进制、八进制、十六常用的有十进制、二进制、八进制、十六进制等。进制等。2022-7-2华中科技大学计算机学院C语言课程组241. 1. 二进制数及其运算二进制数及其运算n1)二进制数)二进制数n二进制数是由二进制数是由0和和1组成的数字串。对于一组成的数字串。对于一个二进制数来讲,它具有两个下面基本特点:个二进制数来讲,它具有两个下面基本特点:(1)

29、只有只有0和和1两个不同的数字符号。两个不同的数字符号。(2) 逢逢2进位进位1。2022-7-2华中科技大学计算机学院C语言课程组25二进制数的权值二进制数的权值n对由进位计数制描述的数来讲,一个数字符号在该数的不同对由进位计数制描述的数来讲,一个数字符号在该数的不同的数位具有不同的权的数位具有不同的权(也称为权值或基值也称为权值或基值),因此所表现的值,因此所表现的值是不一样的。二进制数也是如此。是不一样的。二进制数也是如此。n二进制数中不同的数位所具有的权值见教材二进制数中不同的数位所具有的权值见教材表表1.1 二进制数二进制数的权值的权值. n二进制数整数二进制数整数(10110110

30、)2的值是:的值是:(10110111)2=1 27+0 26+1 25+1 24+0 23+1 22+1 21+1 20=(183)10n而带二进制小数的二进制数而带二进制小数的二进制数(1011.1101)2的值是:的值是:(1011.1101)2=1 23+0 22+1 21+1 20+1 2-1+1 2-2+0 2-3+1 2-4=(11.8125)102022-7-2华中科技大学计算机学院C语言课程组262 2)二进制数的运算)二进制数的运算 n二进制加法规则有四条:二进制加法规则有四条: 0+0=0 0+1=1+0=1 1+1=0 向高位进位向高位进位1 1+1+1=1 向高位进位

31、向高位进位1n二进制减法规则也有四条:二进制减法规则也有四条: 0-0=0 1-1=0 1-0=1 0-1=1 向高位借位向高位借位1 2022-7-2华中科技大学计算机学院C语言课程组27二进制加法举例二进制加法举例n例例1.2 二进制加法举例,求二进制加法举例,求(10110111)2+(01011011)2的和。的和。1 0 1 1 0 1 1 1+ 0 1 0 1 1 0 1 1进位进位 1 1 1 1 1 1 1 1 0 0 0 1 0 0 1 0n所以,所以,(10110111)2+(01011011)2=(100010010)22022-7-2华中科技大学计算机学院C语言课程组2

32、8二进制减法举例二进制减法举例n例例1.3 二进制减法举例,求二进制减法举例,求(10110111)2-(01011011)2的差。的差。借位借位 1 0 1 1 0 0 01 0 1 1 0 1 1 1- 0 1 0 1 1 0 1 1n 0 1 0 1 1 1 0 0n所以,所以,(10110111)2-(01011011)2=(01011100)22022-7-2华中科技大学计算机学院C语言课程组292. 2. 八进制数及其运算八进制数及其运算n八进制数是由八进制数是由0到到7组成的数字串。八进制组成的数字串。八进制数具有如下两个基本特点:数具有如下两个基本特点:(1) 只有只有0,1,

33、2,3,4,5,6,7八个不同八个不同的数字符号。的数字符号。(2) 逢逢8进位进位1。n在在C语言中,通过加前导零的方式来表示一语言中,通过加前导零的方式来表示一个数是八进制数个数是八进制数。如:。如:0136表示的是八进表示的是八进制数制数(136)8。 2022-7-2华中科技大学计算机学院C语言课程组303 3十六进制数及其运算十六进制数及其运算n将将4 4位二进制数组合成为十六进制数。与二进制、位二进制数组合成为十六进制数。与二进制、八进制数类似,十六进制数也有两个基本特点:八进制数类似,十六进制数也有两个基本特点:(1 1)只有)只有0 0,1 1,2 2,3 3,4 4,5 5,

34、6 6,7 7,8 8,9 9,A A,B B,C C,D D,E E,F F十六个不同的数字符号(十六个不同的数字符号(A A F F也可以采用小也可以采用小写英文字母写英文字母a a f f)。这十六个数字符号与二进制、)。这十六个数字符号与二进制、八进制、十进制数之间的关系如表八进制、十进制数之间的关系如表1.21.2所示。所示。(2 2)逢)逢1616进位进位1 1。n在在C C语言中,通过加前导语言中,通过加前导0 x0 x或前导或前导0X0X的方式来表示的方式来表示一个数是十六进制数一个数是十六进制数。如:。如:0 x2d5b0 x2d5b表示的是十六进表示的是十六进制数制数(2d

35、5b)(2d5b)1616。0XABCD0XABCD也是合法的十六进制数。也是合法的十六进制数。 2022-7-2华中科技大学计算机学院C语言课程组31表表1.21.2十六进制的十六进制的1616个不同数字符号与十个不同数字符号与十进制、八进制、二进制数之间的关系进制、八进制、二进制数之间的关系 2022-7-2华中科技大学计算机学院C语言课程组32十六进制加减法运算举例十六进制加减法运算举例n例例1.5 十六进制加减法运算举例,求十六进制加减法运算举例,求0XABCD与与(2d5b)16的和,以及的和,以及0XABCD与与(2d5b)16的差。的差。n解解 0XABCD+(2d5b)16=0

36、XD928 0XABCD-(2d5b)16=0 x7E722022-7-2华中科技大学计算机学院C语言课程组331.5.2 进位制数之间的转换n1. 十进制整数转换为二进制整数十进制整数转换为二进制整数2022-7-2华中科技大学计算机学院C语言课程组34进位制数之间的转换进位制数之间的转换2. 2. 二进制整数转换为十进制整数二进制整数转换为十进制整数n用按权展开的方式即可求得该数的十进制表示。用按权展开的方式即可求得该数的十进制表示。n例例1.7 1.7 二进制数二进制数(10111101)(10111101)2 2转换为十进制数。转换为十进制数。解解 (10111101)(1011110

37、1)2 2 =1=1 2 27 7+0+0 2 26 6+1+1 2 25 5+1+1 2 24 4+1+1 2 23 3+1+1 2 22 2+0+0 2 21 1+1+1 2 20 0=128+32+16+8+4+1=(189)=128+32+16+8+4+1=(189)10102022-7-2华中科技大学计算机学院C语言课程组35进位制数之间的转换进位制数之间的转换3. 二进制整数转换为八进制整数二进制整数转换为八进制整数n二进制数转换为八进制数可以采用二进制数转换为八进制数可以采用3位分组法。从位分组法。从整数部分的最低位起,每整数部分的最低位起,每3位分成位分成1组,高位部分不组,高

38、位部分不足足3位则通过加前导位则通过加前导0的方式补足的方式补足3位,然后把每位,然后把每3位二进制数用对应的八进制数来表示即可。位二进制数用对应的八进制数来表示即可。n例例1.8 将二进制整数将二进制整数(10111101)2转换为八进制转换为八进制整数。整数。解解 (10111101)2=(010 111 101)2= (275)82022-7-2华中科技大学计算机学院C语言课程组36进位制数之间的转换进位制数之间的转换4. 八进制整数转换为二进制整数八进制整数转换为二进制整数n八进制整数转换为二进制整数只需要将每一八进制整数转换为二进制整数只需要将每一位八进制数用对应的二进制数表示即可。

39、位八进制数用对应的二进制数表示即可。n例例1.9 将八进制数将八进制数(177777)8转换为二进转换为二进制数。制数。解解 (177777)8=(001 111 111 111 111 111)2=(1111111111111111)22022-7-2华中科技大学计算机学院C语言课程组37进位制数之间的转换进位制数之间的转换5. 5. 二进制整数转换为十六进制整数二进制整数转换为十六进制整数n将二进制整数转换为十六进制整数采用将二进制整数转换为十六进制整数采用4 4位分组位分组法。法。4 4位二进制数的不同取值可以一一对应的完位二进制数的不同取值可以一一对应的完整描述十六进制中的整描述十六进

40、制中的0 0 9 9和和A A F F。n方法方法: : 从整数部分的最低位起,每从整数部分的最低位起,每4 4位分成位分成1 1组,组,高位部分不足高位部分不足4 4位则通过加前导位则通过加前导0 0的方式补足的方式补足4 4位,位,然后把每然后把每4 4位二进制数用对应的十六进制数来表位二进制数用对应的十六进制数来表示。示。n例例1.10 1.10 将二进制数将二进制数(10111101)(10111101)2 2转换为十六进转换为十六进制数。制数。解解 (10111101)(10111101)2 2=(1011 1101)=(1011 1101)2 2=(BD)=(BD)16162022

41、-7-2华中科技大学计算机学院C语言课程组38进位制数之间的转换进位制数之间的转换6. 6. 十六进制整数转换为二进制整数十六进制整数转换为二进制整数n十六进制数转换为二进制数只需要将每一位十六进制数转换为二进制数只需要将每一位十六进制数用对应的十六进制数用对应的4位二进制数表示即可。位二进制数表示即可。n例例1.11 将十六进制数将十六进制数(ABCD)2转换为二进转换为二进制数。制数。解解 (ABCD)2=(1010 1011 1100 1101)2=(1010101111001101)22022-7-2华中科技大学计算机学院C语言课程组391.5.3 1.5.3 数的机器码表示数的机器码

42、表示 1. 机器数与真值机器数与真值n机器数机器数: 在计算机中,将一个数的最高位在计算机中,将一个数的最高位定义为符号位,其余各位为数值位。并且定义为符号位,其余各位为数值位。并且规定符号位之值为规定符号位之值为0表示正,符号位之值表示正,符号位之值为为1表示负。表示负。用这种方法表示的数称为机用这种方法表示的数称为机器数。器数。n真值真值: 机器数的数值机器数的数值称为该机器数的真值。称为该机器数的真值。也就是正、负号后跟二进制数的绝对值就也就是正、负号后跟二进制数的绝对值就构成真值。构成真值。 2022-7-2华中科技大学计算机学院C语言课程组402. 2. 原码原码定义定义: 对于一个

43、二进制数对于一个二进制数X,如果规定用最,如果规定用最高位为符号位,其余各位为该数的绝对值。高位为符号位,其余各位为该数的绝对值。并且规定符号位之值为并且规定符号位之值为0表示正,符号位之表示正,符号位之值为值为1表示负,则采用这种方式形成的二进表示负,则采用这种方式形成的二进制编码称为称为该二进制数制编码称为称为该二进制数X的原码。的原码。2022-7-2华中科技大学计算机学院C语言课程组41求十进制数的原码表示求十进制数的原码表示n例例1.12 求十进制数求十进制数125和和-125的的8位、位、16位原位原码表示。码表示。解解 先求十进制数先求十进制数125和和-125的二进制表示:的二

44、进制表示:(125)10=0X7D=(+1111101)2, 而而 (-125)10=-0X7D=(-1111101)2;根据定义:根据定义:+1111101原原=01111101 (8位)位)+1111101原原=0000000001111101(16位)位)而而: -1111101原原=11111101 (8位)位)-1111101原原=1000000001111101 (16位)位)2022-7-2华中科技大学计算机学院C语言课程组42真值真值0 0的原码表示不惟一的原码表示不惟一n值得注意的是,根据定义,真值值得注意的是,根据定义,真值0的原码表示的原码表示不惟一,有不惟一,有+0和和

45、-0之分。之分。 n+0原原=00000000 (8位)位)n-0原原=10000000 (8位)位)2022-7-2华中科技大学计算机学院C语言课程组433. 3. 补码补码n补码的定义是正数的补码等于正数的原码,负数的补码为补码的定义是正数的补码等于正数的原码,负数的补码为其原码除符号位不动,其余各位变反再加其原码除符号位不动,其余各位变反再加1所得。所得。n例例1.13 分别求十进制数分别求十进制数35和和-1在在8位机和位机和16位机中的补位机中的补码表示。码表示。解解 设设x1=35,x2=-1;在在8位机中,位机中,x10,x1 补补=x1 原原 =00100011;x20,x2原

46、原 =10000001, x2 补补 =11111110+1=11111111;n在例在例1.13中,如果令中,如果令x1和和x2都为零,则容易算出它们的补都为零,则容易算出它们的补码都是零。也就是说,对于真值码都是零。也就是说,对于真值0,其补码是惟一的。即:,其补码是惟一的。即:+0补补=-0补补=000000最右边式子中最右边式子中0的个数等于机器的字长数。的个数等于机器的字长数。 2022-7-2华中科技大学计算机学院C语言课程组444. 4. 反码反码n在计算机中,有时还会用到数的反码。对正数而在计算机中,有时还会用到数的反码。对正数而言,其反码与原码、补码的表示相同;对负数而言,其

47、反码与原码、补码的表示相同;对负数而言,反码符号位的定义与原码、补码相同,但需言,反码符号位的定义与原码、补码相同,但需要将对应原码的数值位按位变反。要将对应原码的数值位按位变反。n例例1.14 分别求十进制数分别求十进制数6和和-1在在8位机中的反码位机中的反码表示。表示。解解 6反反=00000110;-1反反=对对10000001的的数值位按位变反数值位按位变反=111111102022-7-2华中科技大学计算机学院C语言课程组455 5码的内存存储形式码的内存存储形式n码是指计算机内存中存储的数据。根据存储数据的性质,码是指计算机内存中存储的数据。根据存储数据的性质,码可以分为码可以分

48、为数值码、字符码和图象码数值码、字符码和图象码。n数值码数值码用于表示数的大小,常见的有整数和浮点数。用于表示数的大小,常见的有整数和浮点数。n字符码字符码用于表示英文字母、标点符号、控制字符以及汉字用于表示英文字母、标点符号、控制字符以及汉字和其它文字的编码。和其它文字的编码。n图象码图象码是用于表示图象中象素的颜色或灰度。虽然它们都是用于表示图象中象素的颜色或灰度。虽然它们都是以二进制码的表现形式存储在内存之中,但物理意义却是以二进制码的表现形式存储在内存之中,但物理意义却各不相同。各不相同。nC语言的基本处理对象是字符和数字。在语言的基本处理对象是字符和数字。在16位计算机中,位计算机中

49、,整型数占整型数占2个字节,在个字节,在32位计算机中,整型数占位计算机中,整型数占4个字节。个字节。 2022-7-2华中科技大学计算机学院C语言课程组461.5.4 1.5.4 字符的编码表示字符的编码表示 n1字符的编码的概念字符的编码的概念n计算机在屏幕上能够输出英文、汉字,乃至各种各计算机在屏幕上能够输出英文、汉字,乃至各种各样的民族文字,其基础在于对字符进行编码以及构样的民族文字,其基础在于对字符进行编码以及构造相应的点阵字模。造相应的点阵字模。n用户的字符输入通过编码在内存中以二进制数码存用户的字符输入通过编码在内存中以二进制数码存储,机器内部对字符的处理实际上是对字符编码的储,

50、机器内部对字符的处理实际上是对字符编码的处理。处理。n输出的时候则是通过字符的编码去索引对应的点阵输出的时候则是通过字符的编码去索引对应的点阵字模到内存中,然后进一步通过内存中的点阵字模字模到内存中,然后进一步通过内存中的点阵字模去控制显象管,在屏幕的指定位置将字符显示出来。去控制显象管,在屏幕的指定位置将字符显示出来。2022-7-2华中科技大学计算机学院C语言课程组471.4.4 1.4.4 字符的编码表示字符的编码表示n解释教材解释教材:p14 图图1.3 英文字符英文字符O和汉字字符中和汉字字符中的点阵字模示意图的点阵字模示意图n大写字母大写字母O的二进制编码依次是:的二进制编码依次是

51、:0 x18,0 x24,0 x42,0 x42,0 x42,0 x42,0 x24,0 x18。n中国的中国的“中中”字的二进制编码按照从上到下,从字的二进制编码按照从上到下,从左到右顺序依次进行二进制编码,共需要左到右顺序依次进行二进制编码,共需要32个字个字节。节。n“中中”字前字前8个字节的二进制编码是:个字节的二进制编码是: 0 x01,0 x80,0 x01,0 x80,0 xff,0 xff,0 xc1,0 x83 2022-7-2华中科技大学计算机学院C语言课程组482 2ASCIIASCII码码n对于西文字符,其编码国际上采用的是对于西文字符,其编码国际上采用的是ASCII码

52、(码(American Standard Code For Information Interchange),是美国国家信息交换标准字是美国国家信息交换标准字符码的英文缩写。符码的英文缩写。nASCII码采用单字节编码,并且规定字节的最高位留做校验位,只有低码采用单字节编码,并且规定字节的最高位留做校验位,只有低7位参与编码。位参与编码。nASCII码字符集中共有码字符集中共有128个字符的编码。个字符的编码。其中其中0 x00到到ox1f前前32个码和个码和0 x7f最后一个码作为控制码,如控制回车、最后一个码作为控制码,如控制回车、换行、振铃、空等等;换行、振铃、空等等;从从0 x20到到

53、0 x7e共共95个编码,它们用来对数字字符个编码,它们用来对数字字符0 9,大小写英文字,大小写英文字母母a z和和A Z,以及标点符号。,以及标点符号。编码特点:数字连续,字母连续编码特点:数字连续,字母连续n计算机的终端(键盘、显示器)只能输入和显示这计算机的终端(键盘、显示器)只能输入和显示这95个编码对应的字符。个编码对应的字符。同时,打印机也只能打印输出这同时,打印机也只能打印输出这95个编码对应的字符。完整的个编码对应的字符。完整的ASCII码码字符集请参阅附录字符集请参阅附录1。 2022-7-2华中科技大学计算机学院C语言课程组493 3汉字编码汉字编码 n根据标准规定和计算

54、机的输入、存储和显示过程,根据标准规定和计算机的输入、存储和显示过程,汉字编码有许多方式。常用的有国标码、区位码、汉字编码有许多方式。常用的有国标码、区位码、拼音码、五笔字型码和汉字的机内码。拼音码、五笔字型码和汉字的机内码。n拼音码和五笔字型码用于汉字的输入。拼音码和五笔字型码用于汉字的输入。n国标码国标码是我国于是我国于1981年颁布的年颁布的通用汉字字符集通用汉字字符集(基本集基本集)及其交换码标准及其交换码标准规定的汉字字符编码规定的汉字字符编码方案,标准编号是方案,标准编号是GB2312 80总共收集了总共收集了7445个汉字、字母、数字和符号。个汉字、字母、数字和符号。n由于汉字属

55、大字符集,单个字节不足以描述全部由于汉字属大字符集,单个字节不足以描述全部字符,因此汉字采用两字节编码方案。字符,因此汉字采用两字节编码方案。 2022-7-2华中科技大学计算机学院C语言课程组50汉字区位码和机内码汉字区位码和机内码n区位码是将区位码是将GB2312 80中的字符按其位置划分为中的字符按其位置划分为94个区,个区,每区每区94个字符的汉字编码方案。区位码是国标码的一种变个字符的汉字编码方案。区位码是国标码的一种变形码,两者之间的转换可由下面的式子描述:形码,两者之间的转换可由下面的式子描述:国标码(十六进制)国标码(十六进制)=区位码(十六进制)区位码(十六进制)+0 x20

56、20n机内码是计算机存储和处理汉字时采用的汉字编码。为了机内码是计算机存储和处理汉字时采用的汉字编码。为了与基本与基本ASCII相互区分,机内码一般采用将国标码两个字相互区分,机内码一般采用将国标码两个字节的每个字节的最高位置节的每个字节的最高位置“1”的方式形成。机内码与国标的方式形成。机内码与国标码之间的转换关系是:码之间的转换关系是:机内码(十六进制)机内码(十六进制)=国标码(十六进制)国标码(十六进制)+0 x8080n例如例如,中国的中国的“中中”字的机内码是字的机内码是0 xd0d6。因此它的国标。因此它的国标码是码是0 x5056,而它的区位码是,而它的区位码是0 x3036。

57、 2022-7-2华中科技大学计算机学院C语言课程组511.6 1.6 算法及其表示算法及其表示 n1.6.1 算法的定义算法的定义算法算法是是指为解决某个问题所采取的方法和步骤,并指为解决某个问题所采取的方法和步骤,并且要具备下列性质且要具备下列性质。(1) 有零个或多个有零个或多个执行算法所需要的数据作为执行算法所需要的数据作为输入输入。(2) 有有一个或多个一个或多个经算法处理的数据作为经算法处理的数据作为输出输出。这种。这种数据也称为算法的执行结果。数据也称为算法的执行结果。(3) 应只包含应只包含有限个步骤有限个步骤,且执行算法所需的时间也,且执行算法所需的时间也是是有限时间有限时间

58、。算法的这种性质称为算法的有限性或。算法的这种性质称为算法的有限性或有穷性。有穷性。(4) 算法每一步所规定的算法每一步所规定的动作动作应该是应该是唯一唯一确定的,确定的,没没有二义有二义的。算法的这种性质称为算法的确定性。的。算法的这种性质称为算法的确定性。 2022-7-2华中科技大学计算机学院C语言课程组521.6.2 1.6.2 算法的表示算法的表示n选用一种合适的工具或方法来表达算法设计者的算法思想选用一种合适的工具或方法来表达算法设计者的算法思想称为算法的表示或算法的描述。称为算法的表示或算法的描述。n算法的表示方式多种多样,如自然语言方式,流程图方式、算法的表示方式多种多样,如自

59、然语言方式,流程图方式、表格方式、伪码方式表格方式、伪码方式,等等。等等。n自然语言方式显然非常容易理解,但是在将算法转换为具自然语言方式显然非常容易理解,但是在将算法转换为具体程序方面不够直观,它最适合表达算法的设计思想。体程序方面不够直观,它最适合表达算法的设计思想。n流程图方式则非常具体,易于将它描述的算法编写成具体流程图方式则非常具体,易于将它描述的算法编写成具体的程序,但是在程序规模变大的情况下,用流程图来完整的程序,但是在程序规模变大的情况下,用流程图来完整描述算法不仅多余,而且不太可能。因此,流程图方式尤描述算法不仅多余,而且不太可能。因此,流程图方式尤其适合初学者。本书重点介绍

60、流程图方法。其适合初学者。本书重点介绍流程图方法。 2022-7-2华中科技大学计算机学院C语言课程组531. 1. 流程图的图符流程图的图符n流程图流程图又称为框图。它又称为框图。它是用它的图符来表是用它的图符来表示算法的每一步骤以及这些步骤之间的相示算法的每一步骤以及这些步骤之间的相互联系互联系。n学习用流程图来表达自己的算法思想首先学习用流程图来表达自己的算法思想首先要从认识组成流程图的图符的功能入手。要从认识组成流程图的图符的功能入手。n流程图图符及其功能由流程图图符及其功能由p16 表表1.4 描述。描述。 2022-7-2华中科技大学计算机学院C语言课程组542022-7-2华中科

61、技大学计算机学院C语言课程组552. 2. 用流程图描述算法用流程图描述算法n问题问题:输入问题问题:输入10个整数,统计正数个整数,统计正数和负数的个数。和负数的个数。 n算法设计用变量算法设计用变量x存储输入的整数,存储输入的整数,k表示输入的次数,表示输入的次数,positive表示正数表示正数的个数,的个数,negtive表示负数的个数。表示负数的个数。2022-7-2华中科技大学计算机学院C语言课程组56该问题算法的自然语言描述该问题算法的自然语言描述(1) (1) (1)定义变量)定义变量x,k,positive,negtive。(2)positive,negtive清零,清零,k

62、赋初值赋初值1。(3)判断)判断k11吗?(或吗?(或k10吗?)如果是,顺序吗?)如果是,顺序执行步骤(执行步骤(4);否则转步骤();否则转步骤(10)。)。(4)从键盘输入一个整数并且赋给变量)从键盘输入一个整数并且赋给变量x。(5)判断)判断x是否等于零?如果是,转步骤(是否等于零?如果是,转步骤(9);否);否则顺序执行步骤(则顺序执行步骤(6)。)。(6)判断)判断x是否大于零?如果是,转步骤(是否大于零?如果是,转步骤(8);否);否则顺序执行步骤(则顺序执行步骤(7)。)。2022-7-2华中科技大学计算机学院C语言课程组57该问题算法的自然语言描述该问题算法的自然语言描述(2

63、)(2)(7)负数个数)负数个数negtive加加1;转步骤(;转步骤(9););(8)正数个数)正数个数positive加加1;顺序执行步骤;顺序执行步骤(9)。)。(9)次数)次数k加加1,转步骤(,转步骤(3)。)。(10)输出正数个数)输出正数个数positive,负数个数,负数个数negtive。(11)结束。)结束。2022-7-2华中科技大学计算机学院C语言课程组58该问题算法的流程图描述2022-7-2华中科技大学计算机学院C语言课程组591.6.3 算法的实现#include stdio.h/ 下面的下面的main为主函数名,前面的为主函数名,前面的void表示无返回值,括号

64、表示无返回值,括号中的中的void表示无参表示无参 int main(void) / main函数的函数体开始函数的函数体开始 int x,k,positive,negtive; /* 说明语句说明各个整型变说明语句说明各个整型变量量 */ k=1; /* 循环次数变量循环次数变量k赋初值赋初值1 */ positive=negtive =0; /* 具有累加作用的变量清零具有累加作用的变量清零 */2022-7-2华中科技大学计算机学院C语言课程组60 while(k11) /* 如果如果k0) /*如果如果x0,执行内层,执行内层if块,否则执行块,否则执行else块块 */* 内层内层i

65、f块开始块开始 */positive+; /* 正整数个数加正整数个数加1 */* 内层内层if块结束块结束 */else /* 如果如果x0,转到此处执行,转到此处执行 */* else块开始块开始*/+negtive; /* 负整数个数加负整数个数加1 */* else块结束块结束 */ /* 外层外层if块结束块结束 */ k+; /* 循环次数变量循环次数变量k加加1 */ 2022-7-2华中科技大学计算机学院C语言课程组61 printf(positive=%d n,positive);/* 输出正数个数输出正数个数*/ printf(negtive=%dn,negtive); /

66、* 输出负数个数输出负数个数*/ return 0; / main函数的函数体结束函数的函数体结束输入输入10个整数及程序的运行结果如下:个整数及程序的运行结果如下:8 0 -3 -5 -7 5 9 6 -16 20 (符号(符号 表示回车,)表示回车,)positive=5 sum_pos=48negtive=4 sum_neg=-312022-7-2华中科技大学计算机学院C语言课程组621.7 1.7 学习学习C C语言与程序设计的方法语言与程序设计的方法 n作为初学者,如何学会、掌握、以及熟练使用作为初学者,如何学会、掌握、以及熟练使用C语语言?如何用言?如何用C语言去解决实际工作中的应用问题呢?语言去解决实际工作中的应用问题呢?这主要涉及四个方面的学习和训练。这主要涉及四个方面的学习和训练。n首先,要学习并理解首先,要学习并理解C语言的语言的语法和语义语法和语义;n其次,要学习并掌握一些其次,要学习并掌握一些基本数据结构基本数据结构和和常用算法常用算法的设计;的设计;n第三,要学习并熟悉与第三,要学习并熟悉与C语言的集成语言的集成开发环境开发环境(Integrated Deve

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!