面向过程的程序设计.ppt

上传人:牧羊曲112 文档编号:5887855 上传时间:2023-08-29 格式:PPT 页数:58 大小:499KB
返回 下载 相关 举报
面向过程的程序设计.ppt_第1页
第1页 / 共58页
面向过程的程序设计.ppt_第2页
第2页 / 共58页
面向过程的程序设计.ppt_第3页
第3页 / 共58页
面向过程的程序设计.ppt_第4页
第4页 / 共58页
面向过程的程序设计.ppt_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《面向过程的程序设计.ppt》由会员分享,可在线阅读,更多相关《面向过程的程序设计.ppt(58页珍藏版)》请在三一办公上搜索。

1、第2章 面向过程的程序设计本文档由ITjob软件开发教程网提供,程序结构语法元素基本数据类型变量、常量运算符与表达式类型转换流程控制语句标准输入/输出内存分配,2.1 C/C+程序的结构,来看下面这个两数相乘的程序,计算机首先要求用户输入两个整数,而后计算两数的乘积并输出在屏幕上,程序见代码21.从上述代码可以看出,每个C/C+程序由以下三部分组成:注释编译预处理程序主体下面分别讨论。,2.1.1 注释,C+支持两种风格的注释:C+风格:以/打头,作用范围为一行C风格:以/*开始,以*/结束,两个符号间的内容都会被注释掉,因此可以跨越多行。使用时,应注意/*和*/的正确配对,C风格注释不支持嵌

2、套。注释是程序员为读者提供的说明,是提高程序可读性的一种手段。注释仅供人阅读程序用,是程序的可选部分,C+编译器忽略所有的注释,将其视为空白。提示:应养成在编码同时随手写注释的好习惯,程序越复杂,就越有必要写注释,注释不仅仅方便他人阅读代码,也有助于程序员的总结、检查与回顾。,2.1.2 编译预处理,以符号#开头的行,称为编译预处理行代码2-1中使用了#include编译指令,其作用是在编译之前将stdio.h文件的内容添加到程序中;使用printf、scanf函数进行输入和输出时,程序中必须包含stdio.h文件。编译器会将stdio.h的实际内容替换掉#include 这条语句。,2.1.

3、3 主函数,C+用函数组织过程,每个相对独立的过程都可组织成一个函数,程序一般由不同的函数按层次结构组织而成,因此,函数是C+的主体,这里可先对函数有个大体了解,详细的介绍和说明请参考第6章。函数由函数头和函数体两部分组成,其基本结构可表示为:返回值类型 函数名(参数列表)语句1;语句2;语句N;return 返回值;,2.1.4 名称空间,在代码2-1中,使用iostream头文件,应使用名称空间编译指令“using namespace std;”使得cout和cin对程序可见,这叫做using编译指令,这里,先对名称空间做一下简要说明,详细的介绍请参考第15章。在使用计算机软件厂商提供的源

4、代码时,经常会遇到函数重名或变量重名的情况,编译器不知道该使用哪个版本,人为对函数和变量进行改名也不现实,为了解决这一问题,新的ANSI/ISO C+标准引入了名称空间这一特性。允许厂商将其产品封装在一个叫名称空间的单元中,使用名称空间来对函数和变量进行管理,编译器也因此可以决定使用哪个版本。如A公司和B公司提供的源代码中都有C()函数,并将各自的代码分别定义在名称空间NamespaceA和NamespaceB中,使用下面的调用方式可以将两个版本无误地区分开:NamespaceA:C();/调用A公司提供的C函数NamespaceB:C();/调用B公司提供的C函数见代码2-2,2.1.5 C

5、/C+语法元素,从编译角度看,组成C+的最小逻辑单位是单词,单词好比建屋盖房的砖瓦,C+中的单词有以下几类:(1)直接常量:如123,3.14f(2)字符串:如”Hello,world!”(3)关键字:见备注(3)(4)一般标识符:见备注(4)(5)运算符:算术,关系,逻辑,赋值(6)标点符号:必须是英文标点,2.2 变量及数据类型,计算机中数的表示计算机是用数字电路搭成的,数字电路中只有1和0两种状态,所以计算机中数都是用二进制来表示的(“逢二进一”)我们平常用的是十进制“逢十进一”。但二进制写起来太啰嗦了,通常将二进制数分成每三位一组或者每四位一组,每组用一个数字表示。8位(bit)为一个

6、字节(byte)不同进制之间的换算,如10进制的7转换成2进制为111十进制的15,其二进制为1111,其16进制为F整形数和浮点型数的表示,最高位为0表示正数,为1表示负数整形数-7:正数用原码 负数用补码(取反+1),2.2.1 变量,变量就是机器一个内存位置的符号名,在该内存位置可以保存数据,并可通过符号名对数据进行访问。变量有3个特征:每一个变量有一个名字,其命名规则与一般标识符相同。每一个变量有一个类型。每一个变量保存一个值。如果需要变量保存某一个值,就把该值赋给变量。在使用一个变量之前,必须先定义。变量的定义的一般格式如下:数据类型 变量名1 初始值1,变量名2 初始值2,.;方括

7、号中的内容是可选的,它是在变量定义时,给变量赋初值。“数据类型”是指C+有效的数据类型,如int、double、long等,每个变量属于一个特定的类型,类型是对一组数据的抽象,这些数据具有相同的取值范围、运算和存储方式,C+中的数据类型可分为基本数据类型和复合数据类型两大类,如图2.2所示。见示例代码2-3,2.2.2 基本数据类型、整形,基本数据类型及其表示范围。整型变量用来存储不带小数的数值,根据存储数值和分配存储空间的大小,整型变量可分为短整型(short int,可简写为short),整型(int),长整型(long int,可简写为long),2.2.3 浮点型,浮点型变量又称实型变

8、量,用来存储带小数的数值。浮点型变量在内存中用2进制浮点形式表示,如图2.4所表示,每个浮点型量是由符号位、阶码和尾数3部分组成的,符号占一位,0代表正,1代表负,没有无符号浮点数这一用法。(参见float的浮点表示法.doc)C提供了3种字长的浮点类型:float,double和long double,其字节数和精度如下表(VC6中long double等于double):,2.2.4 基本字符,计算机内部处理的信息都是0、1码表示的,而人对信息和数据的处理是基于字符的。字符与0、1码之间按照一定的规则进行转换,这些转换规则称为信息交换代码,目前应用最广泛的是ANSI制定的ASCII码(美国

9、信息交换标准代码),如A的ASCII编码为01000001,用A(用一对单引号包起来)标记,如图2.5所示。,2.2.5 转义字符,2.2.6 布尔型(C+类型,非C类型),布尔类型变量用bool关键字定义,其值为true或false,true和false都是C+的关键字。C+将非零值解释为true,将零解释为false。可以用下面语句定义一个bool类型的变量:bool bIsOK=false;试一试:仿照代码2.1声明一个浮点变量,一个字符型变量,赋值或用键盘输入一个值,并显示出来。,2.3 常量,有了前面对变量的说明,再来说常量显然就轻松了很多。常量同样对应着内存中的一块存储区域,通过常

10、量名可对该区域进行访问,同样有整型、浮点型、字符型和布尔型等数据类型,和变量唯一的不同之处在于,通过程序或输入无法改变常量的值,这也是常量取名的由来。,2.3.1 常量的表示方法,(1)使用前缀表示数字常量的进制10进制数字:不带前缀的数字,如123;8进制数字:带前缀0的数字,如0123。16进制数字:带前缀0 x或0X的数字,如0 x123f(2)使用后缀表示数字常量的类型L/l后缀:long或long double,如123L,1.23LU/u后缀:unsigned,如506UUL/LU/ul/lu/Ul/lU/uL/Lu后缀:unsigned longF/f后缀:float,如1.23

11、f,2.3.2 字符型常量,用一对单引号括起来的一个或多个字符成为字符型常量,如A、AA、n和5等,其中A、?和5称为单字符常量,AA称为双字符常量,n称为转义字符序列。由代码2.4可以看出,对双字符常量来说,系统将其解释为一个int类型的数据,前面的字符作低位字节,后面的字符作为高位字节,这种方式仅仅适用于可显示字符。另见代码2.5和代码2.6,2.3.3 字符串常量,字符串常量是用一对双引号括起来的零个或多个ASCII字符的序列,并以NULL(ASCII码值为0)结束,如”Hello,world”,其在内存中的存储如图2.6所示:关于字符串常量有以下问题需要注意:字符串与字符不同,例如:A

12、与A不等价,前者由两个字节组成(字符A与字符0),而后者只有一个字节。最短的字符串是空字符串(),它仅由一个结尾符0组成。在前面的示例中已经使用了字符串常量以输出提示信息,一个长字符串可以占两行或多行,但最后一行之前的各行要以反斜杠结尾。这里的称为行连接符,其后不能再跟任何字符,包括空格。关于字符串的详细介绍,这将在第3章中详细说明。,2.3.4 符号常量,在声明语句中,用const修饰的标识符指向一个“只读”的程序实体,称为符号常量,如“const int PEOPLE=5;”,在程序中便可以用PEOPLE来代表5。符号常量与普通常量的不同之处在于它像变量一样有标识符(名字),有效提高了系统

13、的可修改性和可读性。见代码2.7和代码2.8,计算正方形的周长和面积,2.3.5 枚举(Enum)常量,枚举(Enum)是一种用户自定义的类型,定义的基本格式为:enum 枚举类型名 枚举常量1=整型常数,枚举常量2=整型常数,变量名列表花括号中的内容称作枚举表,其中的每一项称为枚举常量,换言之,枚举表是枚举常量的集合。枚举表中每项后的“=整型常数”是给枚举常量赋初值,用方括号代表这步可以省略,如果不给枚举常量赋初值,编译器会为每一个枚举常量赋一个不同的整型值,第一个为0,第二个为1,等等。当枚举表中某个常量赋值后,其后的成员则按依次加1的规则确定其值。在定义枚举类型时,可同时定义一些变量属于

14、这种类型:enum day Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday currentDay;见代码2.9,2.4 运算符与表达式,运算符,顾名思义,指的是具有运算意义的符号,比如加运算符(+),减运算符(-)等,表达式,是C+编译器能读懂的计算机语句,由运算符和操作数按一定语法规则组合而成,根据运算符决定对操作数进行何种运算,并得出唯一的运算结果。C+提供的运算符有以下几种:算术运算符、关系运算符、逻辑运算符、位运算符、条件运算符、赋值运算符、逗号运算符、sizeof运算符及其它运算符。同时,按照操作数的个数,运算符又可以

15、分为单目运算符(1个操作数)、双目运算符(两个操作数)和三目运算符(3个操作数)。,2.4.1 算术运算,C+中提供的算术运算符如表2.5所示,,2.4.2 逻辑运算,对简单电路有所了解的人可能更容易理解逻辑(与或非)的概念,C+中提供了3个逻辑运算符,分别是:&(“与”),|(“或”),!(“非”)其中,!为单目操作符,结合顺序为从右向左,&和|为双目运算符,结合顺序为从左向右,逻辑运算符要求其操作数为bool型,即有true和false两种取值,但实际上,借助于C+的类型转换机制,普通的数值量也可以进行逻辑运算,非0量转换为true,0转换为false。逻辑运算返回一个bool型量,表2.

16、6为操作数的值与逻辑表达式的值之间的关系。,2.4.3 短路表达式,在由结果是b+和+a都不会得到执行,a,b的值不变。,2.4.4 关系运算,关系运算,就是比较运算,C+提供了6种比较运算,如表2.7所示。,2.4.5 变量是否为“0”,关系运算是C+中常用的语句,常用以决定程序的流程和分支选取,其中,变量和零值的比较是应用很广,最可能出错的地方,本节的内容将帮助读者正确理解变量和零值比较的本质,写出高质量的代码。(1)整型变量是否为0:x=0(2)浮点型变量是否为0:x=-0.000001&x=0.000001(3)bool类型不用比较,2.4.6 条件运算:三目运算符,条件运算符是C+中

17、唯一一个三目运算符,条件表达式的一般形式为:S1?S2:S3;其含义为:若S1为true,则条件表达式取S2的值,否则,取S3的值,条件运算符的优先级比赋值运算符略高。min=AB?B:A;上面例句的意义为:如果A大于B成立(true),变量min取值为B,否则,变量min取值为A。恰当地使用条件运算符可以写出精炼的C+语句。,2.4.7 位运算,无论在什么情况下,数据都是由0和1来存储的,这就是数据的机内表示,有时按位操作数据是很必要的,也就是说,程序员可能希望通过改变内存中某单元的某一位来改变其值,这就是位运算的由来。C+中的位运算符有以下两类:位逻辑运算符:&(位“与”)、(位“异或”)

18、、|(位“或”)、(位“取反”)移位运算符:(右移)下面分开进行介绍,首先来看,可能有的读者会说,这不是前面代码中经常出现的、跟在cin和cout后面的输入输出符么,没错,但它们在这里起的是移位的功能,而不是用来输入输出。,2.4.8 赋值运算,由赋值运算符组成的表达式为赋值表达式,赋值运算符的结合性是由右至左,因此,C+程序中允许出现连赋值的情况。int A,B,C,D,E;A=B=C=D=E=9;上述语句是合法的,整型变量A、B、C、D和E都被赋值为9。讨论到赋值运算,有必要提及程序实体和左值这两个概念,程序实体是内存中的一块可标识的区域,左值是左值表达式的简称,是指明一个程序实体的表达式

19、。判断一个表达式是否左值的方法是看其能否放在等号的左边。如“float a;”声明了一个浮点型变量a,则a是左值,因为它指明了一个程序实体,可放在赋值号的左边,但表达式“a+3”和“a=1”就不能放在赋值号的左边,不是左值。,2.4.9+和-,对于表达式“x=x+1;”、“x=x-1”(或写为“x+=1”、“x-=1”),有种更简洁的写法“x+”(或“+x”)、“x-”(或“-x”)。“+”、“-”称为加1运算符和减1运算符,它们都是单目运算符,优先级高于任何双目运算符,结合性为从右到左。“+”和“-”多有两种形式:前缀形式(“+x”、“-x”)和后缀形式(“x+”、“x-”)。前后缀运效果是

20、不同的,见代码214。,2.4.10 逗号表达式,逗号表达式由用逗号分割的一组表达式组成,这些表达式从左向右计算,逗号表达式的结果是最右边表达式的值,其类型也是最后一个表达式的类型。代码215是逗号表达式的使用范例,其中“A+,-B,A*B”是逗号表达式,按照从左到右的顺序分别进行对A的加1操作(后缀+)、对B的减1操作(前缀-)、A和B相乘,并将最后一个表达式(A*B)的值返回,赋值给C。,2.4.11 sizeof运算符与sizeof表达式,sizeof是个单目运算符,用来计算操作数在内存中占据的字节数,其操作数既可以是括在圆括号中的类型标识符,其返回值是size_t类型,即无符号整数,如

21、:sizeof(short);/返回2sizeof(long);/返回4sizeof(int);/不确定,取决于不同的系统(4 for vc)也可以是一个表达式,如:short x;sizeof(x);/返回2,2.4.12 运算符的优先级和结合性,表达式的运算顺序主要由以下两种因素决定:(1)运算符的优先级:程序总是先执行优先级较高的运算符;(2)运算符的结合性:当运算符的优先级相同时,运算符的结合性决定运行顺序。对从左到右的运算符,先执行左边的部分,对从右向左的运算符,则先执行右侧的部分。图表运算符的优先级与结合性.gif给出了C+中的运算符优先级和结合性,从上到下,优先级依次降低。总的来

22、说,有以下几点规律:操作数多的运算符优先级别相对低一点,从高到低:单目双目(不包含赋值运算符)三目赋值逗号;双目运算符个数最多,双目运算符优先级从高到低依次为:算术运算符比较运算符位运算符逻辑运算符;算术运算符中,*、/、%的优先级高于+、-;位运算符优先级从高到低为:&|;逻辑运算符优先级从高到低为:!&|;赋值运算具有相同的优先级。,2.5 类型转换,C+中有整型、浮点型、布尔型、字符型等基本类型,在后面的章节中还会介绍到复杂数据类型和用户自定义的类型。在进行运算,尤其是对不同的类型进行运算时,可能会引发混乱,为此,C+引入了类型转换机制,一种数据类型能够被转换为另一种数据类型。,2.5.

23、1 赋值转换,赋值转换指的是将一种类型的值赋给另一种类型的变量,这时,值将会转换为接收变量的类型,如语句:A=B;如果A是long型,B是short型,则程序会将16位(short占两字节)的B提升为32位(long占4字节),并赋给A,直观上讲,类型的表达能力取决于该类型所占的内存位数,从表达能力低的类型转换为表达能力高的类型,即进行字节的扩充通常不会带来什么弊端,将short型值赋值给long型变量并不会改变这个值,只是占用的字节多了而已但如下情况可能会出现一些转换问题。(1)将较大的整型转换为较小的整型,见代码2.16(2)浮点型转换为整型,见代码2.17(3)较大的浮点型转换为较小的浮

24、点型,见代码2.18(4)整型转换为浮点型,见代码2.19(5)对bool类型进行赋值:0转换为false,非0转换为true,2.5.2 表达式中的转换,当同一个表达式中出现不同类型的量时,C+会根据不同的情况对操作数进行自动转换,这些转换可分为“整型提升”(integral promotion)和“运算时的转换”两类。(1)整型提升在表达式计算中,C+将bool、char、unsigned char、signed char、short和signed short型值都会自动转换成int型,对bool类型而言,true转换为1,false则转换为0。注意:unsigned short向int的

25、转换比较特殊:如果系统中int占4字节,这unsigned char会转换成int,但若系统中int占2字节(即int和short同样长度),则unsigned short会转换成unsigned int,这就避免了数据的丢失。(2)运算时的转换当运算涉及到两种类型时,较小的类型将会被转换成较大的类型,换言之,表达力低的类型将会被转换成表达力高的类型。各类型表达能力从低到高排列为:int(等价于signed int)unsigned int long(等价与signed long)unsigned long float doublelong double,2.5.3 强制类型转换,C+引入了强

26、制类型转换机制来显式地进行类型转换,强制类型转换的格式有两种,举例来说,为了将double型变量x转换为long型,可使用下列语句中的任意一个:(long)x;long(x);第一种格式,即“(类型名)值”这种写法是C语言的用法,而第二种格式,即“类型名(值)”是纯粹的C+用法,这样,类型名等价于一个函数,而要转换的值等价于该函数的参数,函数返回值即是目的类型值。注意:不论是强制类型转换,还是隐式的赋值转换和表达式中的转换,都不会改变变量的值,而是创建一个新的、指定类型的值,因此,不仅仅可对变量进行类型转换,对常量的显式转换也是合法的,如:int(3.14);,2.5.4 函数调用、传递参数时

27、的类型转换,在函数调用时,C+函数的原型声明决定了传递参数的类型及类型转换,这需要对C+的函数机制有足够的了解,因此,关于这部分内容将在第6章讲述函数时详细介绍。,2.6 流程控制语句,程序由数据结构和算法组成,算法是一系列动作的集合,而这一个个的动作,就是C+中的语句,语句是构造程序最基本的单位,程序运行的过程就是执行程序语句的过程,程序语句执行的次序称之为流程控制(或控制流程)。结构定理指出:任何程序逻辑都可以用顺序、选择和循环等3种基本结构来表示,在我们前面给出的示例代码中,程序语句都是顺序执行的,那有没有可能改变程序语句的执行次序呢?答案是肯定的,只要借助于C+提供的分支语句(ifel

28、se语句和switch语句)、循环语句(for循环和while循环)以及转向控制语句(continue、break和goto等)。,2.6.1 ifelse选择结构,ifelse的基本结构形式为:if(表达式1)语句A;else语句B;程序执行到if语句时,首先计算表达式1,如果结果为true(非0),则执行语句A,否则,执行语句B。此处的语句A、语句B既可以是单条语句,也可以是由多条语句组成的,由花括号包裹的块语句。,2.6.2 switch结构,switch结构又称开关结构,其基本形式如下:switch(开关表达式)case 常量1:语句序列1;case 常量2:语句序列2;case 常量

29、N:语句序列N;default:语句序列N+1;,2.6.3 ifelse结构和switch结构的比较,两者最大的不同在于switch结构只进行相等与否的判断,而ifelse结构还可以进行大于小于等范围上的判断。此外,switch无法处理浮点数,只进行整数的判断,而且,case标签值必须是常量,如果涉及到浮点数和变量的判断,应当使用ifelse结构。合理搭配两种结构,发挥各自的优势和长处,才能写出有效率的代码。对某个特定场合,若既能用switch结构,又能用ifelse结构,当分支数大于2时,推荐采用switch结构。,2.6.4 for循环结构,如果需要不断地重复执行某个动作,循环结构就会派

30、上用场。for循环结构的基本形式如下:for(初始化表达式;判断表达式;修正表达式)语句;/循环体for语句执行过程如下:首先计算初始化表达式(循环初值),且仅计算一次;每一次循环之前计算判断表达式(循环条件),如果其结果为true(或非0值),则执行语句(循环体),并计算修正表达式(循环增量),否则,循环终止,程序跳出for结构。此处的循环体可以是单条语句,也可以是由花括号包裹的块语句,是for循环执行过程的示意图。,2.6.5 for循环结构嵌套,for循环结构同样允许嵌套,本节通过一个for循环嵌套的经典例子帮助读者理解for循环的嵌套。可以分为打印表头、打印一条分隔线和打印表体3个部分

31、,前两个部分都是简单的for循环结构,表体为一个9行9列的结构,通过两层for循环嵌套来完成。,2.6.6 while循环结构,while结构也是一种常用的循环结构,其基本形式为:while(判断表达式)语句;/循环体当程序进入while结构时,先计算判断表达式,若其值为true(或非0),便执行循环体,否则跳出while结构,执行后面的语句,每执行完一次循环体,都要再次计算判断表达式,以决定是执行循环体还是跳出while结构。while结构中的循环体既可以是单条语句,又可以是花括号包裹的块语句。可以说,while结构是没有初始化表达式和修正表达式的for结构,同样是输出0到9这10个数字,用

32、while循环结构来实现,见代码2-29。,2.6.7 dowhile循环结构,dowhile结构是C+提供的第3种循环结构,不同于for结构和while结构,dowhile结构常被称为出口条件循环,其基本形式为:do循环体while(判断表达式);当程序进入dowhile结构时,首先执行循环体,然后计算判断表达式,若其值为true(或非0),则继续执行循环体,否则,循环终止,程序跳出。这意味着,使用dowhile结构,循环体至少会被执行一次。dowhile结构中的循环体既可以是单条语句,也可以是花括号包裹的块语句。for结构和while结构中的循环体有可能一次也执行不了,但dowhile中的

33、循环体至少会被执行一次,使用哪种结构,应视具体情况而定。,2.6.8 流程转向控制语句之break,在前面介绍switch结构时,我们提到了流程控制语句break,该语句主要有两个用途:跳过switch结构的剩余部分。提早从循环结构(for结构、while结构和dowhile结构)中跳出。注:break语句对ifelse(包括if结构)无效。在执行到break语句时,程序将跳转到结构后面的第一条语句执行。当有结构嵌套时,break语句只能往外跳一层,破一层壳。代码230中有一个恒为true的while结构,不断提示用户输入一个整数,当输入的数可以被3整除时,执行break语句跳出循环,否则,循

34、环将一直进行下去。,2.6.9 流程转向控制语句之continue,continue语句,见代码231。,2.6.10 自由转向语句goto,goto语句可以让程序员自由地将流程转到程序的任何地方,程序员只要在程序的某一行前注以标号,便可以使用“goto+标号”的形式将流程转到该行。很多程序员反对使用goto,甚至建议将其废除,认为它破坏了程序的结构,降低了程序的可读性,已经证明,不使用goto,用顺序、分支和循环3种基本结构足以实现任何流程的算法。但goto语句至少有一个地方可以大显神通,它能从多重循环中一下子跳到外面,避免了写很多次break的麻烦,见代码232。,2.6.11 程序中止函

35、数exit(),exit()是C语言函数库stdlib.h中的一个函数(在新的C+标准中,头文件为cstdlib),它的功能是中止程序的执行,并在退出前对程序占用的资源进行必要的清理。exit()是一个无返回值的函数,其参数称为退出码,用以通知操作系统当前程序是正常终止(一般为0)还是非正常终止(一般为-1)。代码2.33用以计算正方形的面积,边长由用户输入,当输入数小于0时,调用exit(-1)中止程序,当输入数非负时,输出结果。,ITjob软件开发教程网,51,2.7 C语言的标准输入/输出,C 语言中的标准库提供了输入和输出函数,用于处理输入、输出、字符和字符串操作。标准输入通常是指键盘

36、 标准输出通常是指显示器(也称控制台)格式化输出printf()函数 格式化输入scanf()函数 字符的输出putchar()函数 字符的输入getchar()函数 输出字符串puts()函数 读取字符串gets()函数函数原型在头文件中,ITjob软件开发教程网,52,2.7.1 printf和scanf函数,printf(“格式字符串”,输出列表);scanf(“格式字符串”,地址列表);格式字符串:%标志输出最小宽度.精度长度类型其中方括号中的项为可选项。格式字符串的详细说明见下2页,ITjob软件开发教程网,53,2.7.2 格式字符串说明,ITjob软件开发教程网,54,2.7.2

37、 格式字符串说明(续),ITjob软件开发教程网,55,2.8 内存分区,1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值等。2、堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时由系统释放。3、全局区(静态区,static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。4、文字常量区:常量字符串就是放在这里的。程序结束后由系统释放。5、程序代码区:存放函数体的二进制代码。见备注代码。,2.9 小结,本章讲述了C+语言的基本知识,在C+语言

38、中,语句、标识符、变量、常量、函数、预处理指令、输入和输出等,是重要的概念,应该在实践中逐渐掌握这些概念,合理地加以应用。介绍了C+基本的各种运算符构成(算术运算符、关系运算符、逻辑运算符、位运算符、条件运算符、赋值运算符、逗号运算符及其它运算符)、各自的优先级和结合性。详细讲解了由运算符组成的各种表达式、表达式中操作数类型的显式及隐式转换,剖析了C+的流程控制语句,包括分支结构(if结构、ifelse结构和switch结构)、循环结构(for结构、while结构和dowhile结构)、流程转向控制语句break和continue、自由转向语句goto等,只有扎实掌握了这些最基本的内容,才能一

39、步步深入,学好C+,用好C+。,ITjob软件开发教程网,57,作业:,1、分析下面程序的运行结果,理解工作原理。#include stdio.hint main(int argc,char*argv)char c;while(c=getchar()!=x)printf(%c,c);return 0;2、请说出使用const和define定义常量,在语法上和含义上有什么不同,并编程举例说明。3、请说出字符常量和字符串常量的区别,并使用 sizeof计算他们所占用的字节数。并使用该运算符计算几种基本的数据类型和对应变量所占用的字节数,并编程说明。4、从键盘输入一些字符(回车时候结束),将其中的小写字母变为大写字母然后进行输出。5、从键盘输入一个表示年份的数(10004000),判断该年是否闰年,并输出对应提示信息(闰年的计算算法是如果不能被4整除,则不是闰年,结束;如果能被4整除,不能被100整除,则是闰年,结束;如果能被100整除,又能被400整除,则是闰年,结束;其余的都不是闰年,结束),ITjob软件开发教程网,58,练习,求任意2个日期之间相差的天数,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号