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

上传人:小飞机 文档编号:1375818 上传时间:2022-11-16 格式:PPT 页数:74 大小:365.50KB
返回 下载 相关 举报
C语言程序设计ppt课件 第1章.ppt_第1页
第1页 / 共74页
C语言程序设计ppt课件 第1章.ppt_第2页
第2页 / 共74页
C语言程序设计ppt课件 第1章.ppt_第3页
第3页 / 共74页
C语言程序设计ppt课件 第1章.ppt_第4页
第4页 / 共74页
C语言程序设计ppt课件 第1章.ppt_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《C语言程序设计ppt课件 第1章.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计ppt课件 第1章.ppt(74页珍藏版)》请在三一办公上搜索。

1、2022/11/16,华中科技大学计算机学院,1,C语言程序设计,The C Programming Language,华中科技大学计算机学院曹计昌,2022/11/16,华中科技大学计算机学院,2,第0章 C语言程序设计课程安排,一.教材(Textbook)曹计昌,卢萍,李开. C语言程序设计. 科学出版社,2008.2 李开,卢萍,曹计昌. C语言实验与课程设计.科学出版社,2011.3 二. 参考书目(Reference Books)(1) Brian W. Kernighan,Dennis M. Ritchie. THE C PROGRAMMING LANGUAGE. 清华大学出版社.

2、 PRENTICE HALL(注:该书已有中译本)(2)曹化工 秦友淑. C语言程序设计典型题解析及自测试题. 西北工业大学出版社(3)秦友淑 曹化工. C语言程序设计教程(第二版). 华中科技大学出版社,2002年12月,2022/11/16,华中科技大学计算机学院,3,三.ISO的C语言标准和相关资料(ISO/IEC C Standard and Other Materials)(C语言标准,网站等资料),(1)最新标准:ISO/ IEC 9899: 1999 (E)ISO (the International Organization for Standardization) and I

3、EC (the International Electrotechnical Commission)(2)C始于:”The C Reference Manual” by Dennis M. Ritchie, a version of which was published in The C Programming Language by Brian W. Kernighan and Dennis M. Ritchie, Prentice-Hall, Inc., (1978). Copyright owned by ATn843,n897,n2794等C语言方面的相关标准资料,文档,网页和网站,

4、2022/11/16,华中科技大学计算机学院,4,三.本课程提供的其它资料,(1) C语言程序设计课程课件ppt(2) C语言标准,网站等资料(前页已经介绍)(3) C语言程序设计(中文版)源程序(4) C语言课程设计2010(09级)(5) 2010级ACM班C语言程序设计课程资料(6)汉字库-16乘16点阵(7) Turbo C 2.0 函数中文说明大全,2022/11/16,华中科技大学计算机学院,5,2010级ACM班C语言程序设计课程资料,(1) The C Programming Language-ppt(2) The C Programming Language,2nd text

5、 book(3) 3 The C Programming Language-source files(4) C程序设计语言英文版第2版课后习题与答案(5) C语言课程设计2011ACM班(6) 教学日历-Syllabus of The C Programming Language,2022/11/16,华中科技大学计算机学院,6,(4)关于C语言的圣经”一书的作者,即:K&R C,即C创始人 “The C Programming Language”,“C语言的圣经”一书的作者Dennis M. Ritchie received Bachelors and advanced degrees fr

6、om Harvard University, where as an undergraduate I concentrated in Physics and as a graduate student in Applied Mathematics. The subject of my 1968 doctoral thesis was subrecursive hierarchies of functions.Brian W. Kernighan is head of the Computing Structures Research Department, Bell Laboratories,

7、 Murray Hill, New Jersey. He received a B.A.Sc in engineering physics from the University of Toronto in 1964, and a Ph.D. in electrical engineering from Princeton University in 1969.,2022/11/16,华中科技大学计算机学院,7,学时安排,考核方式,四.学时安排(Arrangement of the houses)讲课:52+4学时 实验 24 hours五.考核方式:(Examination) 闭卷笔试 评分

8、: 百分制 其中:考试成绩:50% 平时成绩:50%(含实验)(作业,实验所占比例要与其他老师商量) .注: 有5分内容属教材中未讲内容,目的是鼓励自学.,2022/11/16,华中科技大学计算机学院,8,六.学习方法 (Study methods),(1) 课前要预习,课堂要专心,课后要复习(2) 通过预习、听课、复习、以及作业和实验,确保消化课堂和教材的相关内容。(3) 要学会自己看书、理解,逐步减少对老师的依赖,培养良好的自学能力。同时,由于学时紧张,假期的冲击,讲课速度会逐步加快到一个合适的水平,以保证教学计划的完成,因此课前课后一定研读教材。(4) 认真、独立的完成作业。(5) 要重

9、视实验。上机实验前要求预先编好有关程序,把上机的重点放到程序的编辑、修改、编译、链接、跟踪、调试程序方面来。放到观察程序运行过程中的中间结果和运行完毕后的运行结果方面来。最终使自己的大脑变成一台“计算机”,能够在脑袋中运行自己的程序,判断各种情况下程序的走向等等。,2022/11/16,华中科技大学计算机学院,9,七定位问题(Orientation),培养的学生应该是将来能够与MicroSoft的程序员,软件大师们一争高下的人才,应该是有朝一日能够根据实际应用需求,发明创造新型计算机程序设计语言的人才。因此要高标准、严要求。不仅要掌握C的语法、语义,学好用好C;而且要了解各种语言成分产生、流传

10、、延续、发展的深层次原因和需求背景。为学习后续课程,为将来能够熟练的用C写系统软件、底层软件、共享软件奠定坚实的语言基础。,2022/11/16,华中科技大学计算机学院,10,八.建议和意见,欢迎就教学方法,讲课速度,教学内容的深度和广度提出好的建议和意见,以便把本门课程的教学组织实施好。,2022/11/16,华中科技大学计算机学院,11,C语言程序设计-第1章 概论,C语言是目前全球流传最广、使用最多的程序设计语言。本章介绍内容为:学习C语言程序设计的第一个例子。C语言的产生与发展,C语言的语言特征,C语言的标准。计算机硬件系统的组成,数的编码表示以及数在内存中的表现形式。算法的概念及其表

11、示方法。对C语言程序设计作了概略性的介绍。同时介绍了N进制数,数之间转换的方法,以及原码、补码、反码及其相关运算。,2022/11/16,华中科技大学计算机学院,12,C语言的应用领域,1. 操作系统设计UNIX,LINUX,WINDOWS底层及驱动等.2. 计算机网络与通信系统TCP/IP协议栈,路由软件,交换机软件等.3. 系统软件各种DBMS,如Oracle,Sybase,MS SQL Server等;各种编译器软件.4. 嵌入式系统(民用)汽车(40多个微处理器系统),手机,U盘驱动,MP3等;嵌入式操作系统;智能卡系统等.5. 国防,军工,航空航天,工业控制系统均以C作为软件开发的主

12、流语言.,2022/11/16,华中科技大学计算机学院,13,1.1 学习C语言程序设计的第一个例子,例1.1 输入自己的名字的汉语拼音,要计算机问候自己并且输出这是自己学习C语言的第一个程序的句子。,2022/11/16,华中科技大学计算机学院,14,例1.1的程序,#include stdio.hvoid show(char str);void main(void) char name20; printf(Input your name please!n); gets(name); printf(Hello %s!n,name); show(name);void show(char str

13、) printf(This is the first program for %s to learn C programming!n,str);,2022/11/16,华中科技大学计算机学院,15,操作例1.1的程序,进入编辑按F10功能键激活菜单用光标左右移动键选File 选New 然后回车进入编辑状态。编辑将上面的程序从键盘输入到计算机中完成源程序的编辑 F2保存.编译链接: 按F10功能键激活菜单, 选Run 然后回车。此时源程序会被编译形成.OBJ文件、再通过链接形成.EXE文件,最后运行该.EXE文件。过程: .C源文件 .OBJ文件 .EXE文件运行得到结果观看结果: Alt-F5

14、,2022/11/16,华中科技大学计算机学院,16,例1.1的程序的结果,人机交互与运行结果如下:Input your name please!Jichang Cao(此为输入信息)Hello Jichang Cao!This is the first program for Jichang Cao to learn C programming!,2022/11/16,华中科技大学计算机学院,17,#include stdio.hvoid show(char str);void main(void) char name20; printf(Input your name please!n);

15、 gets(name); printf(Hello %s!n,name); show(name);void show(char str) printf(This is the first program for %s to learn C programming!n,str);,1.1.2 解释分析第一个C程序,2022/11/16,华中科技大学计算机学院,18,1.2 C语言的产生、发展与语言特征1.2.1 C语言的产生与发展,FORTRAN(1957年)ALGOL 60(1960年) 传统C或K&R C(1978)CPL(1963年) ANSI C(1989,美国国家标准)BCPL(196

16、7年) 标准 C(ISO/IEC 9899:1990,俗称C90)B(1969年-1970年) 最新标准 C(ISO/IEC 9899:1999俗称C99)C(1971年-1973年)图1.1 C语言的继承、产生与发展历程,2022/11/16,华中科技大学计算机学院,19,1.2.3 C语言的语言特征,语言简洁紧凑目标代码质量高语言表达能力强 流程控制结构化 弱类型 “中级语言”特性 书写自由、使用灵活 可移植性好,2022/11/16,华中科技大学计算机学院,20,1.3 计算机硬件系统,一台计算机硬件系统由CPU、内存、外存、其他I/O设备和总线组成。见图1.2 计算机硬件系统组成的示意

17、图CPU 又称为中央处理器 。 CPU又是由运算器、控制器、指令计数器、内部寄存器、标志寄存器等部件组成。 内存又称为内存储器,用以存放程序和数据。总线是用以连接计算机各个部件的线路,它完成各个部件之间的信息传送。根据传送信号种类的不同,总线又分成地址总线、数据总线和控制总线。,2022/11/16,华中科技大学计算机学院,21,内存编址,内存容量,字长,内存以字节为单位线性连续编址。即按照0 x0000,0 x0001,0 x0002,的方式;从低地址端开始向高地址端为每一个内存字节进行顺序连续编号。1024个字节称为1K字节,1024K字节称为1M字节,1024M字节称为1G字节。1024

18、G字节称为1T字节。 CPU数据总线的宽度(bit数)称为计算机的机器字长。对位,机器字长为字节;对位,机器字长为字节;对位,机器字长为字节。,2022/11/16,华中科技大学计算机学院,22,外存和其他I/O设备,外存指计算机的外存储器。常用的硬盘、软盘、U盘、光盘、以及磁盘阵列都属于外存。外存存储的信息在断电之后仍然能够保存,这是外存的第一个特点。 其他I/O设备 :键盘 ,显示器 ,打印机 ,绘图仪,2022/11/16,华中科技大学计算机学院,23,1.4 数和字符的机器码表示,1.4.1 进位计数制数量用于描述事物的多少。数目则是表示事物的个数。而表示数目的符号则是数字,往往简称为

19、数。一个数在不同的进位制下具有不同的表示,因而形成数制的概念。数制是关于记数的法则。根据进位基数的不同,常用的有十进制、二进制、八进制、十六进制等。,2022/11/16,华中科技大学计算机学院,24,1. 二进制数及其运算,1)二进制数二进制数是由0和1组成的数字串。对于一个二进制数来讲,它具有两个下面基本特点:(1) 只有0和1两个不同的数字符号。(2) 逢2进位1。,2022/11/16,华中科技大学计算机学院,25,二进制数的权值,对由进位计数制描述的数来讲,一个数字符号在该数的不同的数位具有不同的权(也称为权值或基值),因此所表现的值是不一样的。二进制数也是如此。二进制数中不同的数位

20、所具有的权值见教材图1.3. 二进制数整数(10110110)2的值是:(10110111)2=127+026+125+124+023+122+121+120=(183)10而带二进制小数的二进制数(1011.1101)2的值是:(1011.1101)2=123+022+121+120+12-1+12-2+02-3+12-4=(11.8125)10,2022/11/16,华中科技大学计算机学院,26,2)二进制数的运算,二进制加法规则有四条: 0+0=0 0+1=1+0=1 1+1=0 向高位进位1 1+1+1=1 向高位进位1二进制减法规则也有四条: 0-0=0 1-1=0 1-0=1 0-

21、1=1 向高位借位1,2022/11/16,华中科技大学计算机学院,27,二进制加法举例,例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 0所以,(10110111)2+(01011011)2=(100010010)2,2022/11/16,华中科技大学计算机学院,28,二进制减法举例,例1.3 二进制减法举例,求(10110111)2-(01011011)2的差。借位 1 0 1 1 0 0 01 0 1 1 0 1 1 1- 0

22、1 0 1 1 0 1 1 0 1 0 1 1 1 0 0所以,(10110111)2-(01011011)2=(01011100)2,2022/11/16,华中科技大学计算机学院,29,2. 八进制数及其运算,八进制数是由0到7组成的数字串。八进制数具有如下两个基本特点:(1) 只有0,1,2,3,4,5,6,7八个不同的数字符号。(2) 逢8进位1。在C语言中,通过加前导零的方式来表示一个数是八进制数。如:0136表示的是八进制数(136)8。,2022/11/16,华中科技大学计算机学院,30,3十六进制数及其运算,将4位二进制数组合成为十六进制数。与二进制、八进制数类似,十六进制数也有

23、两个基本特点:(1)只有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F十六个不同的数字符号(AF也可以采用小写英文字母af)。这十六个数字符号与二进制、八进制、十进制数之间的关系如表1.2所示。(2)逢16进位1。在C语言中,通过加前导0 x或前导0X的方式来表示一个数是十六进制数。如:0 x2d5b表示的是十六进制数(2d5b)16。0XABCD也是合法的十六进制数。,2022/11/16,华中科技大学计算机学院,31,表1.2十六进制的16个不同数字符号与十进制、八进制、二进制数之间的关系,2022/11/16,华中科技大学计算机学院,32,十六进制加减法运算举例,例1.5

24、 十六进制加减法运算举例,求0XABCD与(2d5b)16的和,以及0XABCD与(2d5b)16的差。解 0XABCD+(2d5b)16=0XD928 0XABCD-(2d5b)16=0 x7E72,2022/11/16,华中科技大学计算机学院,33,1.4.2 进位制数之间的转换,1. 十进制整数转换为二进制整数,2022/11/16,华中科技大学计算机学院,34,进位制数之间的转换,2. 二进制整数转换为十进制整数用按权展开的方式即可求得该数的十进制表示。例1.7 二进制数(10111101)2转换为十进制数。解 (10111101)2 =127+026+125+124+123+122+

25、021+120=128+32+16+8+4+1=(189)10,2022/11/16,华中科技大学计算机学院,35,进位制数之间的转换,3. 二进制整数转换为八进制整数二进制数转换为八进制数可以采用3位分组法。从整数部分的最低位起,每3位分成1组,高位部分不足3位则通过加前导0的方式补足3位,然后把每3位二进制数用对应的八进制数来表示即可。例1.8 将二进制整数(10111101)2转换为八进制整数。解 (10111101)2=(010 111 101)2= (275)8,2022/11/16,华中科技大学计算机学院,36,进位制数之间的转换,4. 八进制整数转换为二进制整数八进制整数转换为二

26、进制整数只需要将每一位八进制数用对应的二进制数表示即可。例1.9 将八进制数(377377)8转换为二进制数。解 (177777)8=(001 111 111 111 111 111)2=(1111111111111111)2,2022/11/16,华中科技大学计算机学院,37,进位制数之间的转换,5. 二进制整数转换为十六进制整数将二进制整数转换为十六进制整数采用4位分组法。4位二进制数的不同取值可以一一对应的完整描述十六进制中的09和AF。方法: 从整数部分的最低位起,每4位分成1组,高位部分不足4位则通过加前导0的方式补足4位,然后把每4位二进制数用对应的十六进制数来表示。例1.10 将

27、二进制数(10111101)2转换为十六进制数。解 (10111101)2=(1011 1101)2=(BD)16,2022/11/16,华中科技大学计算机学院,38,进位制数之间的转换,6. 十六进制整数转换为二进制整数十六进制数转换为二进制数只需要将每一位十六进制数用对应的4位二进制数表示即可。例1.11 将十六进制数(ABCD)2转换为二进制数。解 (ABCD)2=(1010 1011 1100 1101)2=(1010101111001101)2,2022/11/16,华中科技大学计算机学院,39,1.4.3 数的机器码表示,1. 机器数与真值机器数: 在计算机中,将一个数的最高位定义

28、为符号位,其余各位为数值位。并且规定符号位之值为0表示正,符号位之值为1表示负。用这种方法表示的数称为机器数。真值: 机器数的数值称为该机器数的真值。也就是正、负号后跟二进制数的绝对值就构成真值。,2022/11/16,华中科技大学计算机学院,40,2. 原码,定义: 对于一个二进制数X,如果规定用最高位为符号位,其余各位为该数的绝对值。并且规定符号位之值为0表示正,符号位之值为1表示负,则采用这种方式形成的二进制编码称为称为该二进制数X的原码。,2022/11/16,华中科技大学计算机学院,41,求十进制数的原码表示,例1.12 求十进制数125和-125的8位、16位原码表示。解 先求十进

29、制数125和-125的二进制表示:(125)10=0X7D=(+1111101)2, 而 (-125)10=-0X7D=(-1111101)2;根据定义:+1111101原=01111101 (8位)+1111101原=0000000001111101(16位)而: -1111101原=11111101 (8位)-1111101原=1000000001111101 (16位),2022/11/16,华中科技大学计算机学院,42,真值0的原码表示不惟一,值得注意的是,根据定义,真值0的原码表示不惟一,有+0和-0之分。 +0原=00000000 (8位)-0原=10000000 (8位),202

30、2/11/16,华中科技大学计算机学院,43,3. 补码,补码的定义是正数的补码等于正数的原码,负数的补码为其原码除符号位不动,其余各位变反再加1所得。例1.13 分别求十进制数35和-1在8位机和16位机中的补码表示。解 设x1=35,x2=-1;在8位机中,x10,x1 补=x1 原 =00100011;x20,x2原 =10000001, x2 补 =11111110+1=11111111;在例1.13中,如果令x1和x2都为零,则容易算出它们的补码都是零。也就是说,对于真值0,其补码是惟一的。即:+0补=-0补=000000最右边式子中0的个数等于机器的字长数。,2022/11/16,

31、华中科技大学计算机学院,44,4. 反码,在计算机中,有时还会用到数的反码。对正数而言,其反码与原码、补码的表示相同;对负数而言,反码符号位的定义与原码、补码相同,但需要将对应原码的数值位按位变反。例1.15 分别求十进制数6和-1在8位机中的反码表示。解 6反=00000110;-1反=对10000001的数值位按位变反=11111110,2022/11/16,华中科技大学计算机学院,45,5码的内存存储形式,码是指计算机内存中存储的数据。根据存储数据的性质,码可以分为数值码、字符码和图象码。数值码用于表示数的大小,常见的有整数和浮点数。字符码用于表示英文字母、标点符号、控制字符以及汉字和其

32、它文字的编码。图象码是用于表示图象中象素的颜色或灰度。虽然它们都是以二进制码的表现形式存储在内存之中,但物理意义却各不相同。C语言的基本处理对象是字符和数字。在16位计算机中,整型数占2个字节,在32位计算机中,整型数占4个字节。,2022/11/16,华中科技大学计算机学院,46,1.4.4 字符的编码表示,1字符的编码的概念计算机在屏幕上能够输出英文、汉字,乃至各种各样的民族文字,其基础在于对字符进行编码以及构造相应的点阵字模。用户的字符输入通过编码在内存中以二进制数码存储,机器内部对字符的处理实际上是对字符编码的处理。输出的时候则是通过字符的编码去索引对应的点阵字模到内存中,然后进一步通

33、过内存中的点阵字模去控制显象管,在屏幕的指定位置将字符显示出来。,2022/11/16,华中科技大学计算机学院,47,1.4.4 字符的编码表示,解释教材:图1.3 英文字符O和汉字字符中的点阵字模示意图更正:大写字母O的二进制编码依次是:0 x18,0 x24,0 x42, 0 x42, 0 x42, 0 x42, 0 x24, 0 x18。中国的“中”字的二进制编码按照从上到下,从左到右顺序依次进行二进制编码,共需要32个字节。更正:“中”字前8个字节的二进制编码是:0 x01,0 x80,0 x01,0 x80, 0 xff,0 xff,0 xc1,0 x83,2022/11/16,华中

34、科技大学计算机学院,48,2ASCII码,对于西文字符,其编码国际上采用的是ASCII码(American Standard Code For Information Interchange),是美国国家信息交换标准字符码的英文缩写。ASCII码采用单字节编码,并且规定字节的最高位留做校验位,只有低7位参与编码。ASCII码字符集中共有128个字符的编码。其中0 x00到ox1f前32个码和0 x7f最后一个码作为控制码,如控制回车、换行、振铃、空等等;从0 x20到0 x7e共95个编码,它们用来对数字字符09,大小写英文字母az和AZ,以及标点符号。计算机的终端(键盘、显示器)只能输入和显

35、示这95个编码对应的字符。同时,打印机也只能打印输出这95个编码对应的字符。完整的ASCII码字符集请参阅附录1。,2022/11/16,华中科技大学计算机学院,49,3汉字编码,根据标准规定和计算机的输入、存储和显示过程,汉字编码有许多方式。常用的有国标码、区位码、拼音码、五笔字型码和汉字的机内码。拼音码和五笔字型码用于汉字的输入。国标码是我国于1981年颁布的通用汉字字符集(基本集)及其交换码标准规定的汉字字符编码方案,标准编号是GB231280总共收集了7445个汉字、字母、数字和符号。由于汉字属大字符集,单个字节不足以描述全部字符,因此汉字采用两字节编码方案。,2022/11/16,华

36、中科技大学计算机学院,50,汉字区位码和机内码,区位码是将GB231280中的字符按其位置划分为94个区,每区94个字符的汉字编码方案。区位码是国标码的一种变形码,两者之间的转换可由下面的式子描述:国标码(十六进制)=区位码(十六进制)+0 x2020机内码是计算机存储和处理汉字时采用的汉字编码。为了与基本ASCII相互区分,机内码一般采用将国标码两个字节的每个字节的最高位置“1”的方式形成。机内码与国标码之间的转换关系是:机内码(十六进制)=国标码(十六进制)+0 x8080例如,中国的“中”字的机内码是0 xd0d6。因此它的国标码是0 x5056,而它的区位码是0 x3036。,2022

37、/11/16,华中科技大学计算机学院,51,1.5 算法及其表示,1.5.1 算法的定义算法是指为解决某个问题所采取的方法和步骤,并且要具备下列性质。(1) 有零个或多个执行算法所需要的数据作为输入。(2) 有一个或多个经算法处理的数据作为输出。这种数据也称为算法的执行结果。(3) 应只包含有限个步骤,且执行算法所需的时间也是有限时间。算法的这种性质称为算法的有限性或有穷性。(4) 算法每一步所规定的动作应该是唯一确定的,没有二义的。算法的这种性质称为算法的确定性。,2022/11/16,华中科技大学计算机学院,52,1.5.2 算法的表示,选用一种合适的工具或方法来表达算法设计者的算法思想称

38、为算法的表示或算法的描述。算法的表示方式多种多样,如自然语言方式,流程图方式、表格方式、伪码方式,等等。自然语言方式显然非常容易理解,但是在将算法转换为具体程序方面不够直观,它最适合表达算法的设计思想。流程图方式则非常具体,易于将它描述的算法编写成具体的程序,但是在程序规模变大的情况下,用流程图来完整描述算法不仅多余,而且不太可能。因此,流程图方式尤其适合初学者。本书重点介绍流程图方法。,2022/11/16,华中科技大学计算机学院,53,1. 流程图的图符,流程图又称为框图。它是用它的图符来表示算法的每一步骤以及这些步骤之间的相互联系。学习用流程图来表达自己的算法思想首先要从认识组成流程图的

39、图符的功能入手。流程图图符及其功能由表1.4描述。,2022/11/16,华中科技大学计算机学院,54,2022/11/16,华中科技大学计算机学院,55,2. 用流程图描述算法,问题 输入10个整数,统计正数和负数的个数,计算正数和负数的累加和与平均值。算法设计 用变量x存储输入的整数,k表示输入的次数,positive表示正数的个数,negtive表示负数的个数,sum_pos和sum_neg分别表示正数和负数的累加和,even_pos和even_neg分别表示正数和负数的平均值。,2022/11/16,华中科技大学计算机学院,56,该问题算法的自然语言描述(1),(1) 定义变量x,k,

40、positive,negtive,sum_pos,sum_neg,even_pos和even_neg。(2) positive,negtive ,sum_pos和sum_neg清零,k赋初值1。(3) 判断k11吗?(或k10吗?)如果是,顺序往(4)步执行;否则转步骤(10)。(4) 从键盘输入一个整数并且赋给变量x。(5) 判断x是否等于零?如果是,转步骤(9);否则顺序执行步骤(6)。(6) 判断x是否大于零?如果是,转步骤(8);否则顺序执行步骤(7)。(7) 负数个数negtive加1,负数x加到负数累加和变量sum_neg中;转步骤(9);,2022/11/16,华中科技大学计算机

41、学院,57,该问题算法的自然语言描述(2),(8) 正数个数positive加1,正数x加到正数累加和变量sum_pos中;顺序执行步骤(9)。(9) 次数k加1,转步骤(3)。(10) 计算正数平均值(sum_pos/positive)并赋给变量even_pos,计算负数平均值(sum_neg/negtive)并赋给变量even_neg。(11) 输出正数个数positive,正数累加和sum_pos,正数平均值even_pos。输出负数个数negtive,负数累加和sum_neg,负数平均值even_neg。(12) 结束。,2022/11/16,华中科技大学计算机学院,58,2022/1

42、1/16,华中科技大学计算机学院,59,1.5.3 算法的实现,#include stdio.h/* 下面的main为主函数名,前面的void表示无返回值,括号中的void表示无参 */void main(void) /* main函数的函数体开始 */ int x,k,positive,negtive,sum_pos,sum_neg; /* 说明语句说明各个整型变量 */ float even_pos,even_neg; /* 说明语句说明各个浮点型变量 */ k=1; /* 循环次数变量k赋初值1 */ positive=negtive=sum_pos=sum_neg=0; /* 具有累加

43、作用的变量清零 */,2022/11/16,华中科技大学计算机学院,60,while(k0) /*如果x0,执行内层if块,否则执行else块 */* 内层if块开始 */positive+; /* 正整数个数加1 */sum_pos+=x; /* 将正整数加到sum_pos中 */* 内层if块结束 */else /* 如果x0,转到此处执行 */* else块开始*/+negtive; /* 负整数个数加1 */sum_neg+=x; /* 将负整数加到sum_neg中 */ /* else块结束 */ /* 外层if块结束 */ k+; /* 循环次数变量k加1 */ /* while循

44、环体结束 */,2022/11/16,华中科技大学计算机学院,61,even_pos=(float)sum_pos/positive; /* 计算正整数平均值并赋给even_pos */ even_neg=(float)sum_neg/negtive; /*计算负整数平均值并赋给even_neg */ printf(positive=%dtsum_pos=%dn,positive,sum_pos); /* 输出正数个数及和*/ printf(even_pos=%6.2fn,even_pos); /* 输出正整数的平均值 */ printf(negtive=%dtsum_neg=%dn,negt

45、ive,sum_neg); /* 输出负数个数及和 */ printf(even_neg=%6.2fn,even_neg); /*输出负整数的平均值 */ /* main函数的函数体结束 */输入10个整数及程序的运行结果如下:8 0 -3 -5 -7 5 9 6 -16 20 (符号表示回车,)positive=5 sum_pos=48even_pos= 9.60negtive=4 sum_neg=-31even_neg= -7.75,2022/11/16,华中科技大学计算机学院,62,1.5.4 程序中的语句,1说明语句C语言中的说明语句用来说明变量的名字和数据类型. 如例1.18程序中:

46、int x,k,positive,negtive,sum_pos,sum_neg;float even_pos,even_neg;都是说明语句。第一个说明语句用int将变量x, k, positive, negtive, sum_pos, sum_neg说明成为整型变量。第二个说明语句用float将变量even_pos,even_neg说明为浮点型变量。C语言规定,说明语句一定要先给出,然后才允许写出可执行语句。即:说明语句一定要位于可执行语句的前面。,2022/11/16,华中科技大学计算机学院,63,2可执行语句,可执行语句将被编译器编译成计算机要执行的指令序列。C语言中的可执行语句有10

47、种。即:常用语句7种: 表达式语句,复合句,-顺序 if-else语句,switch语句,-选择 while语句,for语句,do-while语句-循环使用少的语句3种: break语句,continue语句,以及goto语句。,2022/11/16,华中科技大学计算机学院,64,1)表达式语句,表达式语句是由C语言的表达式以及末尾的分号组成的语句。如:k=1是简单的赋值表达式,在其后加上一个分号,则k=1; 就构成了简单赋值语句;它将赋值号“=”右边的值赋给它左边的变量。sum_pos+=x是一个复合赋值表达式,而sum_pos+=x;就是一个复合赋值语句;sum_pos+=x的等价表示是:

48、sum_pos=sum_pos+x,即:将左右两个操作数相加,再将其和赋给左操作数。,2022/11/16,华中科技大学计算机学院,65,2)复合句,复合句是指由一对花括号界定的语句序列。例如: positive+;sum_pos+=x; 就是一个复合句。复合句的末尾不需要加分号。,2022/11/16,华中科技大学计算机学院,66,3)if-else语句,if-else语句属选择型语句。如果if后的条件成立,则执行if后语句,else后的语句不会执行;否则只执行else后的语句,而if后语句不会执行。如:if(x0) /*如果x0,执行if块,否则执行else块 */* if块开始 */po

49、sitive+; /* 正整数个数加1 */sum_pos+=x; /* 将正整数加到sum_pos中 */* if块结束 */else/* 如果x0,转到此处执行 */* else块开始*/+negtive; /* 负整数个数加1 */sum_neg+=x; /* 将负整数加到sum_neg中 */* else块结束 */就是一个if-else语句。,2022/11/16,华中科技大学计算机学院,67,4)while语句,while语句是一种循环语句。循环是让计算机重复执行规定的语句。在例1.17中用语句while(k11)语句序列 /* 花括号和花括号界定的语句序列一起称为循环体 */来实

50、现while循环。其意思是,如果变量k的值小于11,就重复执行由花括号界定的语句序列。,2022/11/16,华中科技大学计算机学院,68,1.6 学习C语言的方法,作为初学者,如何学会、掌握、以及熟练使用C语言?如何用C语言去解决实际工作中的应用问题呢?这主要涉及到四个方面的学习和训练。首先,要学习并理解C语言的语法和语义;其次,要学习并掌握一些基本数据结构和常用算法的设计;第三,要学习并熟悉与C语言的集成开发环境(Integrated Development Environment 简称IDE),如Turbo C,也可以用VC的集成开发环境;第四,要熟悉C语言相关的库函数(如:C提供的各种

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号