[电脑基础知识]c语言.doc

上传人:音乐台 文档编号:1987439 上传时间:2019-01-28 格式:DOC 页数:33 大小:305KB
返回 下载 相关 举报
[电脑基础知识]c语言.doc_第1页
第1页 / 共33页
[电脑基础知识]c语言.doc_第2页
第2页 / 共33页
[电脑基础知识]c语言.doc_第3页
第3页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[电脑基础知识]c语言.doc》由会员分享,可在线阅读,更多相关《[电脑基础知识]c语言.doc(33页珍藏版)》请在三一文库上搜索。

1、第1章 程序设计基本概念本章要点: 1.1 程序和程序设计 1.2 算法 1.3 结构化程序设计和模块化结构1.1.1 C程序程序是指人们存储在计算机内部存储器中,可以连续执行的一条条指令的集合。它是人与机器进行“对话”的语言,也就是我们常说的“程序设计语言”。C语言是一种“高级语言”,另外的BASIC、PASCAL等也属于高级语言。这些语言都是接近人们习惯的自然语言和数学语言作为语言的表达形式,人们学习和操作起来感到十分方便。但对于计算机本身来说,它并不能直接识别由高级语言编写的程序,它只能接受和处理由0和1的代码构成的二进制指令或数据。由于这种形式的指令是面向机器的,因此也称为“机器语言”

2、。我们把由高级语言编写的程序称为“源程序”,由二进制代码表示的程序称为“目标程序”,而“编译程序”是指可以把源程序转换成目标程序的软件,即可以把用户按规定语法写出的语句逐一翻译成二进制的机器指令。每一种高级语言都有它对应的编译程序每条C语句经过编译(Compile)最终都将转换成二进制的机器指令。由C语言构成的指令序列称C源程序,按C语言的语法编写C程序的过程,称为C语言的代码编写。C语言源程序经过编译后生成一个后缀为.OBJ的二进制文件(称为目标文件),最后还要由“连接程序”(Link)将此.OBJ文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。在DOS状态下,只须打

3、入此文件的名字(不必打入后缀.EXE)就可以运行。重点提示:高级语言编写的程序称为“源程序”,二进制代码表示的程序称为“目标程序”,而“编译程序”是指可以把源程序转换成目标程序的软件。每条C语句经过编译(Compile)最终都将转换成二进制的机器指令(.OBJ的文件)。最后由“连接程序”(Link)将此.OBJ文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。1.1.2 程序设计简单的程序设计一般包括:1根据要求确定存放数据的数据结构;2针对数据结构来确定完成任务的步骤,即确定算法;3根据1和2使用选定的计算机语言编写程序代码输入到计算机中,即编程;4调试程序,消除语法或

4、逻辑错误,用各种可能的输入数据对程序进行测试,对不合理的数据能进行适当的处理;5整理并写出文档资料1.2 算法在编写程序时,除了选定合理的数据结构外,还需要十分关键的一步就是设计算法,有了一个好的算法,就可以用任一种计算机高级语言把算法转换为程序。算法是指为解决某个特定问题而采取的确定且有限的步骤。一个算法应具有以下五个特性:1有穷性。2确定性。3可行性。4有零个或多个输入。5有一个或多个输出。算法一般可以用以下三种方法来进行描述: 1伪代码。它是一种近似高级语言但又不受语法约束的一种语言描述。2流程图。它也是描述算法的很好的工具。传统的流程图由图1.1中所示的几种基本框架组成。 图1.1 流

5、程图基本框架由这些框和流程线组成的流程图来表示算法,形象直观,简单方便,但这种流程图对于流程图的走向没有任何限制,可以任意转向,在描述复杂算法时不易阅读。3N-S流程图。这种流程图完全去掉了流程线,算法的每一步都用一个矩形框来描述,把一个个矩形框按执行的次序连接起来就是一个完整的算法描述。在下一节结合三种基本的结构化程序设计来介绍这种流程图的基本结构。一般我们最常用的描述方法是伪代码和流程图。重点提示:算法的5个特性分别是:有穷性,确定性,可行性,有零个或多个输入以及有一个或多个输出。1.3 结构化程序设计和模块化结构1.3.1 结构化程序结构化程序由三种基本结构组成:1顺序结构 顺序结构的程

6、序在执行时按照先后顺序逐条进行,没有分支,没有转移。如后面章节中介绍的赋值语句、输入、输出语句等都可以构成顺序结构。顺序结构可用图1.2所示的流程图表示。(图1.2)2选择结构选择结构的程序要根据不同的条件去执行不同分支中的语句。如后面章节中介绍的if语句,switch语句等可以构成选择结构。选择结构可用图1.3所示的流程图表示。(图1.3)3循环结构不同形式的循环结构要根据各自的条件,使同一组语句重复执行多次或一次也不执行。循环结构包括当型循环(如图1.4所示)和直到型循环(如图1.5所示)。当型循环的特点是:当指定的条件满足时,就执行循环体,否则就不执行。直到型循环的特点是:执行循环体直到

7、指定的条件满足,就不在执行循环。(图1.4) (图1.5)重点提示:结构化程序由三种基本结构组成:顺序结构、选择结构和循环结构。1.3.2 模块化结构计算机在处理复杂任务时,常常需要把这个大任务分解为若干个子任务,每个子任务又分成很多个小子任务,每个小子任务只完成一项简单的功能。在程序设计时,用一个个小模块来实现这些功能。我们称这样的程序设计方法为“模块化”,由一个个功能模块构成的程序结构就称为模块化结构。模块化结构可以大大提高程序编制的效率。软件人员在进行程序设计时,首先应集中考虑主程序中的算法,写出主程序后再逐步完成子程序的调用。而对这些“子”程序也可以用调用主程序的方法逐步完成其下一层子

8、程序的调用。这就是自顶向下、逐步细化、模块化的程序设计。C语言是一种结构化程序设计语言。它直接提供了三种基本结构的语句,提供了定义“函数”的功能,在C语言中没有子程序的概念,它提供的函数可以完成子程序的所有功能;C语言允许对函数单独进行编译,从而可以实现模块化。第2章 C程序设计初步知识本章要点: 2.1 简单C语言程序的构成和格式 2.2 常量、变量和标识符 2.3 整型数据 2.4 实型数据 2.5 算术表达式 2.6 赋值表达式 2.7 自加、自减运算符和逗号运算符2.1 简单C语言程序的构成和格式以下是一个简单求解两数之和的C程序, 程序如下:include “stdio.h”main

9、() int a, b, sum; a=12; b=2; /*给求和的两个数赋值*/ sum=a+b; /*求两数之和放入变量sum*/ printf (“a=%d, b=%d, sum=%dn”, a, b, sum); /*输出两数以及它们的和*/以上程序运行结果如下:a=12, b=2, sum=14从以上程序中,可以看到C程序有以下结构特征:1main是主函数名,C语言规定必须用main作为主函数名。其后的“()”中间可以是空的,但“()”不能省略。一个C程序可以包含任意多个不同名的函数,但必须有且只有一个主函数,C程序总是从主函数开始执行。2在函数的起始行后面是函数体,由一对大括号“

10、”括起来的语句集合。函数体中一般包含变量定义语句和执行语句。且执行语句必须放在定义语句之后。3每个语句和变量定义的最后必须要有一个分号(即使是程序的最后一个语句也应包含分号)。分号是C语句的必要组成部分。4C语言用“/*/对程序进行注释。注意“/”和“*”之间不能有空格。注释可以出现在程序中任意合适的地方,必须成对出现,它对程序的运行不起作用,但在注释中可以说明变量的含义、程度段的功能等。一个好的C程序应有必要的注释,以便阅读。5“ include “stdio.h”通常称为命令行,必须用“#”号开头,最后不能加“;”,因为它不是C程序中的语句。“stdio”是系统提供的文件名,该文件中包含着

11、有关输入输出函数的信息,调用不同的库函数,应当包含不同的头文件。重点提示: main是主函数名,C语言规定必须用main作为主函数名。每个语句和变量定义的最后必须要有一个分号,分号是C语句的必要组成部分。 “include “stdio.h”是命令行,必须用“#”号开头,最后不能加“;”,因为它不是C程序中的语句。2.2 常量、变量和标识符2.2.1 标识符和其他高级语言一样,用来标识常量名、变量名、函数名、数组名、类型名、文件名等对象的有效字符序列称为标识符。简单的说,标识符就是一个名字。1标识符的命名规则(1)C语言规定标识符只能由字母(大小写均可)、数字和下划线3种字符组成。(2)第1个

12、字符必须为字母或下划线。2注意事项(1)标识符的命名是区分大小写的,例如NAME、name及Name为3个不同的标识符。习惯上变量名用小写字母表示,符号常量一般使用大写英文字母。(2)C语言中的关键字是一类特殊的标识符,它们具有特定的含义,已被C语言本身使用,不能用作变量名、常量名、函数名等。(3)C语言中提供了大量的库函数与头文件,这些库函数名和头文件中定义的一些标识符都统称为预定义标识符。用户定义标识符时应注意避免和预定义标识符重名。3标识符的分类(1)关键字关键字在程序中代表着固定的含义,不能另作他用。如用来说明变量类型的标识符char、float以及for、if等都已有专门的用途,它们

13、不能用作变量名或函数名。(2)预定义标识符预定义标识符在C语言中也有特定的含义,如库函数的名字和预编译处理命令等。C语言语法允许用户把这类标识符另作他用,但是失去了在系统中规定的原意。为了避免误解,建议用户不要把这些预定义标识符另作它用。(3)用户标识符由用户根据需要定义的标识符称为用户标识符。一般用来给变量、函数、数组或文件等命名。如果用户标识符与关键字相同,程序会给出出错信息;若与预定义标识符相同,则预定义标识符将失去原来的含义。重点提示:标识符的命名规则:(1)C语言规定标识符只能由字母(大小写均可,但区分大小写)、数字和下划线3种字符组成(2)第1个字符必须为字母或下划线(3)已被C语

14、言本身使用,不能用作变量名、常量名、函数名等。2.2.2 常量在程序运行过程中,其值不能被改变的量称为常量。C语言中有4中基本常量:整型常量、实型常量、字符常量和字符串常量。此外,C语言中还经常使用两种表现形式不同的常量:转义字符常量和符号常量。1整型常量整型常量也称整数,包括正整数、负整数和零。2实型常量实型常量即实数,又称为浮点数。3字符常量字符常量使用一对单引号括起来的一个字符。如a、B、?等。以下是关于字符常量的几点说明。(1)单引号只是作为定界符使用,并不是字符常量的组成部分。(2)单引号内的字符不允许是单引号或反斜杠。(3)字符常量具有数值,这个值就是该字符在规定的字符集中的ASC

15、II代码值。(4)字符常量在机器内以整型常量的形式存放,因此字符常量与整型常量等价4字符串常量字符串常量是由一对双引号括起来的字符序列,如“hello”、“how are you”等。C语言中没有专门存放字符串的字符串变量,因此存放时需要放在一个字符型数组中。5转义字符常量 转义字符常量是以一个“”开头的字符序列。每个转义字符都有其特定的含义和功能。具体含义将在后面的章节中详细介绍。6符号常量C语言中,允许用一个标识符来代表一个常量,即常量可以用“符号”来代替,代替常量的符号就称为符号常量。以下是几点说明:(1)符号常量在使用之前必须先定义,定义方法为用宏替换“#define”使一个标识符与某

16、个常量相对应,其一般形式为:define 标识符 常量表达式。(2)一个define只能定义一个符号常量。(3)符号常量定义式的行尾没有分号。2.2.3 变量变量是指在程序运行期间其值可以发生变化的量。一个变量在内存中占据一定的存储单元,在程序中从变量中取值,实际上是通过变量名找到相应的内存地址,从其存储单元中读取数据。变量如常量一样,也分为整型变量,实型变量,字符型变量等。在定义变量的同时要说明该变量的类型,系统编译时根据变量及其类型为它分配相应数量的存储空间。重点提示:C语言中的基本数据类型有:整型、实型和字符型。2.3 整型数据2.3.1 整型常量1整型常量的表示形式C语言中整型常量有如

17、下三种表示形式:(1)十进制。用一串连续的数字来表示,如32768,768,0等。(2)八进制。用数字0开头,各位用07这8个数之一表示,如010,011等。在C程序中不能在一个十进制整数前面加前导零。(3)十六进制。用0x或0X开头,各位用09以及AF(或af)这16个数之一表示,如0x24B,0X34a等。整型常量又有短整型(short int)、基本类型( long int)和无符号型(unsigned)的区分。 2.3.2 整型变量整型变量是指值为整数的变量。其命名与标识符的规则相同。变量一经说明,在编译时就能为其分配相应的存储单元。整型变量可分为基本型、短整型、长整型和无符号型四种。

18、基本型的整型变量用类型名关键字int进行定义,如 int a; 或 int a, b, c;基本型整型变量在一般微机中占用2个字节的存储单元,该变量中允许存放的数值范围是:3276832767。在程序中定义变量时,编译程序会为相应的变量开辟内存单元,但并没有在该单元中存放任何初值,这时变量中的值是无意义的,即称为变量值“无定义”。C语言规定,可以在定义变量的同时给变量赋初值,即变量的初始化。如:main() int a=1, b=4, i=8; 2.3.3 整型数据的分类整型常量与变量有短整型(short int)、基本整型(int)、长整型(long int)和无符号型(unsigned),

19、以及有符号型的区分。不同的计算机系统对这几类整型数所占用的字节数和数值范围有不同规定,表2.1列出了微型机中这些类型的整型数所占用的字节数和数值范围。在表示一个长整型常量时,应该在其后面加一字母后缀L(或l),如123L,345l等。基本型:以 int 表示 短整型:以 short int 或 short 表示 1.类型 长整型:以 long int 或 long 表示 (123l、 123L) 无符号基本型(unsigned int) 无符号型 无符号短整型(unsigned short) 无符号长整型(unsigned long)一个无符号整型变量中可以存放的正数的范围比一般整型变量中正数

20、的范围扩大一倍。int i; /* 变量i 的数值范围: -3276832768 */unsigned int j; /* 变量j的数值范围:065535 */2.3.4 整数在内存中的存储形式计算机中最小的存储单位是“位(bite)”,8个二进制位组成一个“字节(byte)”,若干个字节组成一个“字(word)”。C语言中,一个int整数通常用两个字节存放,其中最高位(最左边一位)用来存放整数的符号,正整数时最高位为0,负整数时最高位为1。1正整数C语言中,正整数以原码形式存放。如整数5在内存中的二进制码为:0000000000000101。 2负整数C语言中,负整数在内存中是以整数的“补码

21、”形式存放。求某个二进制码的补码,步骤如下:(1)求原码的反码,即将01,10(2)将所得的反码加1,即得原码的补码。3无符号整数无符号整数的最高位不再用来存放整型的符号,因此无符号数不可能是负数。对于无符号整数,最高位(最左边一位)不再用来存储整数的符号,全部用来存放整数。重点提示:在C语言中,对于有符号整数,用最高位(最左边一位)用来存储整数的符号,若是正整数,最高位为0,若是负数,最高位放置1。对于正整数用“原码”形式存放,对于负整数用“补码”形式存放。2.4 实型数据2.4.1 实型常量1实型常量的表示形式实型常量又称实数。在C语言中可以有两种表示形式:(1)小数形式。由整数部分、小数

22、点和小数部分组成。格式如下:整数部分.小数部分,小数点不能省略。如0.78,.897,0.0都是合法实数表示。(2)指数形式。由尾数部分、字母E或e和指数部分组成,其格式如下:尾数部分E(或e)指数部分,指数部分只能是整数,且三个组成部分均不能省略。如12.34E+9, 5.453e10是合法的实数表示,如果写成e2、.6E3.5、.e2、e、E等都是不合法的指数形式。注意,在字母E(或e)的前后以及数字之间不得插入空格。重点提示:尾数部分E(或e)指数部分,指数部分只能是整数,且三个组成部分均不能省略。2.4.2 实型变量1实型变量是指值为实数的变量。其命名与标识符的规则相同。2实型变量分为

23、两种类型:(1)单精度型(float),分配4个字节的存储单元,数值范围约为10381038,并提供7位有效位;小于1038的数被处理成零值。(2)双精度型(double),分配8个字节的存储单元,数值范围约为1030810308,并提供1516位的有效位;小于10308的数被处理成零值。在计算机内存中,实数一律是以指数形式存放的,而不是小数的形式。例如: float a; double b; a=123456.789e5 ; b=123456.789 ;2.5 算术表达式2.5.1 基本的算术运算符C语言中基本的运算符是: +、-、*、/、%。这些运算符需要两个运算对象,称为双目运算符。除求

24、余运算符外,运算对象可以是整型也可以是实型。说明:(1)乘号“*”不能省略,也不能写成代数式中的“”或“”(2)若双目运算符两边的类型不一致,则系统将自动按照类型转换规则使两边类型一致后再进行运算。如一边是实型数,一边是整型数时,系统将自动把整型转换为实型数再进行运算。(3)求余运算符“%”要求参与运算的量必须为整数,且求余的结果符号与被除数相同。如14-3的结果为2,-21%4的结果为-1。(4)在C语言中,所有实型数的运算均以双精度方式进行。若是单精度数,则在尾数部分补0,使之转化为双精度数。2.5.2 运算符的优先级、综合性和算术表达式在C语言中,常量、变量、函数调用以及按C语言语法规则

25、用运算符把运算数连起来的式子都是合法的表达式。表达式都有一个值,即运算结果。1算术运算符和圆括号的优先级次序如下:(由高低)( )、 、* 、/ 、% 、 、 2算术运算符和圆括号的结合性以上所列的运算符,只有单目运算符“”和“”的结合性是从右到左,其余运算符的结合性都是从左到右。如,表达式(4+3)*5/2的运算结果是17,圆括号的优先级要高于乘号和除号;而表达式4+3*5/2的运算结果是11,乘号和除号的优先级要高于加号;表达式3*-4与3*(-4)是等价的,因为单目运算符”-“的优先级高于乘号。3算术表达式用算术运算符和括号将运算对象连接起来的、符合C语法规则的式子,称C算术表达式。运算

26、对象可以是常量、变量、函数等。关于算术表达式的几点说明:(1)在表达式中可以使用多层圆括号,但左右括号必须配对。运算时从内层开始,由内向外依次计算表达式的值。(2)在求解表达式的值时,若包含不同优先级的运算符,则按运算符的优先级别由高到低运行,若表达式中运算符的级别相同,则按运算符的结合方向进行。如表达式a+b-c,因为加号和减号的优先级相同,它们的结合性为从左到右,因此先计算a+b,然后把所得的结果减去c。2.5.3 强制类型转换表达式强制类型转换表达式的形式: (类型名)(表达式)其中(类型名)称为强制类型转换运算符,例如:(float)(x) 将x转换成浮点型(double)(8%3)将

27、8%3转换成双精度型重点提示:在求解表达式的值时,若包含不同优先级的运算符,则按运算符的优先级别由高到低运行,若表达式中运算符的级别相同,则按运算符的结合方向进行。2.6 赋值表达式2.6.1 赋值运算符和赋值表达式1赋值运算符赋值符号“”称为简单运算符,其作用是将一个数据或运算表达式的值赋给另一个变量。例如:a5的作用是把5赋给变量a,即把5存入变量a对应的存储单元。关于简单的赋值运算,要注意以下2点:(1)赋值符“”左边必须是变量,右边既可以是常量,变量,也可以是函数调用或表达式。如 z=sqrt(3)+2*c。(2)赋值符“”与数学中的等号“”外观相同,但含义、作用不同,如i=i+1,在

28、数学中是不成立的,但在C语言中是正确的。它的含义是将i当前值加1再赋给变量i。2赋值表达式用一个赋值运算符“=”将一个变量和一个表达式连接起来的式子称为赋值表达式。其一般形式为:变量表达式赋值号的左边必须是一个代表某一存储单元的变量名,或代表某存储单元的表达式,赋值运算的功能是先求出右边表达式的值,然后把该值赋给等号左边的变量,即是把数据放入以该变量为标识的存储单元中去。如a=1 b=a /* 是将常量1赋给变量a,再把a中的值赋给变量b,但a中的值不变 */程序中可以多次给一个变量赋值,相应的存储单元当前的数据就是最后一次所赋的那个数据。以下是几点说明:(1)赋值表达式右边的“表达式”,也可

29、以是一个赋值表达式,即出现多个赋值符号的情况。例如:a=(b=3),它相当于b=3。(2)赋值表达式中还可以包含复合的赋值运算符,例如:x+=y*=3 也是一个赋值表达式,假设x的初值是5,y的初值是2,则该赋值表达式运算顺序为:先进行y*=3的运算,再进行x+=6的运算,相当于x=x+6=5+6,因此最后结果是11。(3)如果在赋值表达式最后加一个分号就构成了语句。(4)在C语言中规定最左边变量所得到的新值就是赋值表达式的值,如a18,则表明该表达式的值为18。(5)赋值运算符的左边只能是变量,不能是常量或表达式。如a+b=c是不合法的赋值表达式。2.6.2 复合的赋值表达式1复合的赋值运算

30、符在赋值符“”之前加上其他运算符,可以构成复合的赋值运算符。例如在“”前加上“”运算符,就成了复合运算符“”。例如有:x+=4 它相当于表达式:x=x+4 即先使x加4,再赋给x。采用这种复合运算符,一是为了简化程序,二是为了提高编译效率,C语言规定可以使用以下10种复合赋值运算符,如下:+=、 =、 *=、 %=、 =、 &=、 =、 =、 |=其中后五种是有关位运算方面的,将在后续章节中介绍。注意:复合赋值运算符的优先级与赋值运算符的优先级相同。2复合的赋值表达式如已有变量a,值为3,计算表达式a+=a-=a+a的值。因为赋值运算符与复合的赋值运算符的优先级相同,且运算方向自右向左,所以计

31、算步骤为:(1)先计算a+a,该表达式值为6。(2)再计算a-=6,即a=a-6,此时a的值仍为3,所以表达式值为-3。(3)最后计算a+=-3,即a=a+(-3),此时a的值已经改变为-3,所以表达式的值为-6。即表达式a+=a-=a+a最终的值为-6,而a最终的值也是-6。2.6.3 赋值运算中的类型转换如果赋值运算符两侧的类型不同,在赋值时系统要自动进行类型转换,转换原则是不论赋值号两侧类型级别高低如何,一律将赋值号右边的类型转换成左边变量的类型,然后再赋值,具体规定如下:1将实数赋给整型变量时,舍弃实数的小数部分(不是四舍五入)。例如i是整型变量,则i2.99;结果i的值为2,在内存中

32、以整数形式存储。2将整数赋给单、双精度变量时,数值不变,但将整数转换成浮点数形式存放到左边的变量中。例如:float x,x2,结果是将2转换成2.000000赋给变量x。3将字符型赋给整型时,由于字符型为1个字节,而整型是2个字节,故将字符的ASCII码值放到整型量的低8位中,高8位为0。4将整型赋给字符型时,只把低8位赋给字符量。重点提示:赋值运算符的左边只能是变量,不能是常量或表达式。计算表达式的值时,参加运算的各个数据类型都转换成数据长度最长的数据类型,然后再计算,计算的结果是数据长度最长的数据类型。2.7 自加、自减运算符和逗号运算符2.7.1 自加运算符和自减运算符自增运算符(+)

33、是使运算量增加1,自减运算符(-)是使运算量减1,它们有以下几种形式:+a a值先增加1后再参与其他运算 a+ 先参与其他运算再使a值增加1 -a a值先减少1后再参与其他运算 a- 先参与其他运算再使a值减少1关于自增和自减运算,要注意以下几点:(1)+a和a+的区别。(2)自增和自减运算符只能用于变量,不能用于常量或表达式,如2+是不合法的。(3)但自增、自减运算符和其他运算符混合使用时,应注意其结合性为“自右向左”,如-a+,即相当于-(a+)。2.7.2 逗号运算符和逗号表达式“,”是C语言提供的一种特殊运算符,用逗号将表达式连接起来的式子称为逗号表达式。其一般形式为: 表达式1,表达

34、式2,表达式n说明:1逗号运算符的结合性为从左到右,先计算表达式1,最后计算表达式n,最后一个表达式的值就是该逗号表达式的值。2逗号运算符再所有运算符中优先级最低。3表达式可以嵌套,即表达式1和表达式2本身也可以是逗号表达式,如(x=2*5,x-3),x*4,整个表达式的值应为40。4并非所有出现逗号的地方就可以作为逗号表达式,如printf(“%d,%d”,a,b)。重点提示:自增和自减运算符只能用于变量,不能用于常量或表达式。逗号运算符的结合性为从左到右,最后一个表达式的值就是该逗号表达式的值。第3章 顺序结构本章要点: 3.1 赋值语句 3.2 数据输出 3.3 数据输入 3.4 复合语

35、句和空语句 3.1 赋值语句在赋值表达式的尾部加上一个“;”号,就构成了赋值语句也称表达式语句。以下是几点说明:1赋值语句必须在最后出现分号,分号是语句中必不可少的部分,如“x+=10”是表达式,“x+=10;”是赋值语句。2任何赋值表达式都可以加上分号而称为赋值语句。3赋值语句是一种可执行语句,应当出现在函数的可执行部分。重点提示:分号是赋值语句中必不可少的部分,若没有分号,则只是一个赋值表达式而已。3.2 数据输出3.2.1 printf函数的一般调用形式printf函数是标准输出函数,功能是在终端设备上按指定格式进行输出。printf()函数的一般形式为: printf(“格式控制”,输

36、出项序列)例如:printf(”a=%d,b=%c”,a,b)中,”a=%d,b=%c”称为格式控制字符串,a,b是输出项序列中的输出项,都是printf函数的参数。格式控制符的作用有:1为各输出项提供格式转换说明。它总是由“%”符号开始,紧跟其后的是格式描述符。2提供需要原样输出的文字或字符。输出项表中的各输出项要用逗号隔开,输出项可以是合法的常量、变量或表达式。格式转换说明的个数要与输出项的个数相同,使用的格式描述符也要与它们一一对应且类型匹配3.2.2 printf函数中常用的格式说明“格式控制”部分是用双引号括起来的字符串,也称“转换控制字符串”,它包括三种信息:格式说明符、转义字符和

37、普通字符。1格式字符格式说明符由%和格式字符组成,如%d、%f等。作用是转换输出数据的格式。对于不同类型的数据用不同的格式字符。下面详细介绍几种常用的格式字符。 d格式字符。用来输出十进制整数。其用法如下:(a)%d,按型数据的实际长度输出。例如:printf(%d,n,x);如果x=789,则输出结果为:789(b)%1d,输出长整型数据。例如:printf(%1d,n,a);如果a被定义为:long int a=56789;则输出结果为:56789如果用%d格式输出,就会出错,因为整型数据的范围是-3276832767。对超出此范围的long型数据应当用%1d格式输出。(c)%-md,m是

38、指定的输出字符宽度。如果数据的位数小于m,则输出共占m位,数据左靠齐,右边补空格,若省略“-”号,则右靠齐,左边补空格;如果数据的位数大于m,则按实际位数输出。例如:printf(%5d,%5dn,a,b);如果a=7788,b=56789,则输出结果为:7788,56789 f格式字符。用来输出实数(包括单精度、双精度),以小数形式输出。其用法如下:(a)%f,实数的整数部分全部输出,小数部分保留六位。需要指出的是,并非全部数字都是有效数字。单精度实数的有效位数一般是7位,双精度实数的有效位数一般是16位。(b)%mf,输出的实数共占m位,小数部分保留六位。(c)%.nf,输出的实数,总宽度

39、按实际宽度,小数部分占n位。(d)%-m.nf,输出的实数包括小数点在内共占m位,其中小数部分占n位。如果数据的实际宽度小于m,则左靠齐,右边补空格,省略“-”时,右靠齐,左边补空格。如:main()float a=123.45; printf(“%f,%11f,%.2f,%-10.3fn”,a,a,a,a);程序运行结果为:123.449997, 123.449997,123.45,123.450说明:a的值应该是123.45,但输出的结果却是123.449997,这是由于实数在内存中的存储误差引起的。 c格式字符。用来输出一个字符。例如:char ch= a;printf(%c,ch);则

40、输出一个字符a。也可以指定输出字符的宽度,如:printf(%2c,ch);则输出a,即ch变量输出占2列,第一列补空格。 s格式字符。用来输出一个字符串。其用法如下:(a)%s,按原样输出一个字符串。例如:printf(%s, Happy New Year!);则输出字符串:Happy New Year!(b)%-ms,与整数输出格式“%-md”类似。c)%m.ns,输出占m列,但只取字符串中左边n个字符。这n个字符输出在m列的右边,左边补空格。(d)%-m.ns,n个字符输出在m列范围的左边,右边补空格。若nm,则m自动取n值,即保证n个字符正常输出。如:字符串输出示例main() pri

41、ntf(“%3s,%6.3s,%.2s,%-5.4sn”,“Hello”,“Hello”,“Hello”,“Hello”); 程序运行结果为:Hello, Hel,He,Hell表3.1 输出格式字符及其功能说明格式字符说 明c输出一个字符d或i输出带符号的十进制整数o以八进制无符号形式输出整形数(不带前导0)x或X以十六进制无符号形式输出整形数(不带前导),x输出小写字母,X输出大写字母u按无符号的十进制形式输出整型数f以带小数点的形式输出单精度和双精度数E或e以-m.dde(或E)xx的指数形式输出浮点数。d的个数由精度指定,精度为0时小数部分不输出G或g由系统决定采用%f格式还是采用%e

42、格式,以使输出宽度最小s输出字符串中的字符,直到遇到“0”。或者输出由精度指定的字符数p输出变量的内存地址%打印一个%2附加格式字符在%和上述格式字符之间可以插入以下几种附加符号,如下所示。表3.2 输出常用附加格式字符附加字符功能说明m(m为一正整数)规定输出数据的最小宽度为m位.n(n为一正整数)对实数,表示输出的实数保留n位小数,对字符串,表示截取字符串的前n个字符使输出的数据在域内向左靠齐,省略“”时,向右靠齐3长度修饰符长度修饰符加在%和格式字符之间,对于长整型一定要加l(long),h可用于短整型(short)或无符号短整形数的输出。如printf(“%ld,n”,a);4转义字符

43、可以在printf函数中的“格式控制”部分使用“转义字符”,如“n”、“b”、“f”、“t”、“r”、“344”等。重点提示:如果想输出字符“%”,则应该在“格式控制”字符串中用连续两个%表示。3.2.3 调用printf函数时的注意事项1在格式控制字符串中,格式说明与输出项从左到右在类型上必须一一对应匹配。例如:printf(x=%f,c=%d,x,c);中的x与%f对应,c与%d对应。2在格式控制串中,格式说明与输出项的个数应相同,若格式说明少于输出项,则多余的输出项不输出,相反,对于多余的格式将输出不定值。3在格式控制串中,可以包含任意的合法字符(包括转义字符)。4输出项序列中可以是变量

44、、常量或表达式。如果输出项是表达式时,则printf函数将先对其进行运算,然后输出它的运算结果。如:main() printf(x=%f,3*4.8+9/4-sqrt(2.0); 输出结果为:x=32784.4000005printf函数允许没有输出项序列部分。它表示输出一个字符串。此时printf函数成为如下格式:printf(输出字符串);例如:printf(Please input a number:);则输出:Please input a number:6printf函数的返回值通常是本次调用中输出字符的个数。重点提示:格式说明与输出项从左到右在类型上、个数上都必须一一对应匹配。3.3 数据输入3.3.1 scanf函数的一般调用格式

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1