版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章第二章 C+简单程序设计简单程序设计2.1 C+语言概述语言概述2.2 基本数据类型和表达式基本数据类型和表达式2.3 数据的输入与输出数据的输入与输出2.4 算法的基本控制结构算法的基本控制结构2.5 自定义数据类型自定义数据类型2.6 深度探索深度探索2.7 小结小结uC+ 1980年贝尔实验室的年贝尔实验室的Bjarne Strou-strup推出,推出, 它支持过程化程序设计、数据抽象、面向对象程序它支持过程化程序设计、数据抽象、面向对象程序 设计、泛型程序设计等多种程序设计风格设计、泛型程序设计等多种程序设计风格C+是从是从C语言发展演变而来的,是一个更好的语言发展演变而来的,
2、是一个更好的C引入了类的机制,最初的引入了类的机制,最初的C+被称为被称为“带类的带类的C”1983年正式取名为年正式取名为C+1989年开始年开始C+语言的标准化工作语言的标准化工作1994年制定了年制定了ANSI C+标准草案标准草案1998年年11月被国际标准化组织月被国际标准化组织(ISO)批准为国际标准批准为国际标准2003年年10月又发布第二版月又发布第二版C+标准,即目前的标准,即目前的C+2.1.1 C+的产生的产生2.1 C+语言概述语言概述第二章第二章 C+简单程序设计简单程序设计第二章第二章 C+简单程序设计简单程序设计2.1 C+语言概述语言概述2.1.2 C+的特点的
3、特点u兼容兼容C它保持了它保持了C的简洁、高效和接近汇编语言等特点,的简洁、高效和接近汇编语言等特点, 对对C的类型系统进行了改革和扩充的类型系统进行了改革和扩充C+也支持面向过程的程序设计,不是一个纯正的也支持面向过程的程序设计,不是一个纯正的 面向对象的语言面向对象的语言支持面向对象的方法支持面向对象的方法第二章第二章 C+简单程序设计简单程序设计2.1 C+语言概述语言概述2.1.3 C+程序实例程序实例/2_1.cpp#include using namespace std;int main() cout Hello! endl;cout Welcome to c+! endl;ret
4、urn 0;运行结果:运行结果:Hello!Welcome to c+!预处理包含文件,没有分号预处理包含文件,没有分号命名空间的指令命名空间的指令主函数主函数函数函数体开体开始与始与结束结束cout输出流对象输出流对象,是插入操作符是插入操作符双引号中的内容输出到双引号中的内容输出到标准输出设备标准输出设备(显示器显示器)endl 输出一个换行符输出一个换行符int是主函数的返回值类型,与是主函数的返回值类型,与return 0;配套配套使用,函数有返回值必须有使用,函数有返回值必须有return 0;如果返如果返回值为回值为void即无返回值,无需即无返回值,无需return 0;注注:C
5、+程序有且仅有一个程序有且仅有一个main函数函数,程序的程序的执行从执行从main函数开始函数开始,在在main函数中结束函数中结束每一每一条语条语句结句结束都束都有一有一个分个分号号;第二章第二章 C+简单程序设计简单程序设计2.1 C+语言概述语言概述2.1.3 C+程序实例程序实例u用用main代表代表“主函数主函数”的名字。每一个的名字。每一个C+程序都必程序都必 须有一个须有一个 main 函数。函数。main前面的前面的int的作用是声明的作用是声明 函数的类型为整型。程序第函数的类型为整型。程序第6行的作用是向操作系行的作用是向操作系 统返回一个零值。如果程序不能正常执行,则会
6、自统返回一个零值。如果程序不能正常执行,则会自 动向操作系统返回一个非零值,一般为动向操作系统返回一个非零值,一般为-1。u函数体是由大括号函数体是由大括号 括起来的。本例中主函数内括起来的。本例中主函数内 只有两个以只有两个以cout开头的语句。注意开头的语句。注意C+所有语句最所有语句最 后都应当有一个分号。后都应当有一个分号。u再看程序的第再看程序的第1行行“#include ”,这不是,这不是 C+的语句,而是的语句,而是C+的一个预处理命令,它以的一个预处理命令,它以“#” 开头以与开头以与C+语句相区别,行的末尾没有分号。语句相区别,行的末尾没有分号。第二章第二章 C+简单程序设计
7、简单程序设计2.1 C+语言概述语言概述2.1.3 C+程序实例程序实例u#include 是一个是一个“包含命令包含命令”,它的作用,它的作用 是将文件是将文件iostream的内容包含到该命令所在的程序的内容包含到该命令所在的程序 文件中,代替该命令行。文件文件中,代替该命令行。文件iostream的作用是向的作用是向 程序提供输入或输出时所需要的一些信息程序提供输入或输出时所需要的一些信息,iostream 是是i-o-stream 3个词的组合,从它的形式就可以知道个词的组合,从它的形式就可以知道 它代表它代表“输入输出流输入输出流”的意思,由于这类文件都放在的意思,由于这类文件都放在
8、 程序单元的开头,所以称为程序单元的开头,所以称为“头文件头文件”(head file)。)。 在程序进行编译时,先对所有的预处理命令进行处在程序进行编译时,先对所有的预处理命令进行处 理,将头文件的具体内容代替理,将头文件的具体内容代替 #include命令行,然命令行,然 后再对该程序单元进行整体编译。后再对该程序单元进行整体编译。第二章第二章 C+简单程序设计简单程序设计2.1 C+语言概述语言概述2.1.3 C+程序实例程序实例u程序的第程序的第2行行“using namespace std; ” 的意思是的意思是“使使 用命名空间用命名空间std”。C+标准库中的类和函数是在标准库中
9、的类和函数是在 命名空间命名空间std中声明的,因此程序中如果需要用到中声明的,因此程序中如果需要用到 C+标准库(此时就需要用标准库(此时就需要用#include命令行),就命令行),就 需要用需要用“using namespace std; ”作声明,表示要作声明,表示要用用 到命名空间到命名空间std中的内容。中的内容。u在初学在初学C+时,对本程序中的第时,对本程序中的第1、2行可以不必行可以不必 深究,只需知道:深究,只需知道: 如果程序有输入或输出时,必如果程序有输入或输出时,必 须使用须使用“#include ”命令以提供必要的命令以提供必要的 信息,同时要用信息,同时要用“us
10、ing namespace std;” ,使程,使程序序 能够使用这些信息,否则程序编译时将出错。能够使用这些信息,否则程序编译时将出错。第二章第二章 C+简单程序设计简单程序设计2.1 C+语言概述语言概述2.1.3 C+程序实例程序实例练习:编写一个程序输出以下信息:练习:编写一个程序输出以下信息:How are you!Fine,thank you. And you?第二章第二章 C+简单程序设计简单程序设计2.1 C+语言概述语言概述2.1.4 字符集字符集u字符集是构成字符集是构成C+语言的基本元素。除了字符型语言的基本元素。除了字符型 数据外,其他所有成分都只能由字符集中的字符数据
11、外,其他所有成分都只能由字符集中的字符 构成。构成。C+语言的字符集由下述字符构成:语言的字符集由下述字符构成:大小写的英文字母:大小写的英文字母:AZ,az数字字符:数字字符:09特殊字符:特殊字符:!#%&*_+=-/“;.,:?()第二章第二章 C+简单程序设计简单程序设计2.1 C+语言概述语言概述2.1.5 词法记号词法记号1.关键字关键字uC+关键字:是关键字:是C+预先声明的单词,在预先声明的单词,在C+程序程序 构成中具有特殊的含义。构成中具有特殊的含义。2.1 C+语言概述语言概述第二章第二章 C+简单程序设计简单程序设计2.1.5 词法记号词法记号2.标识符标识符u
12、是是C+程序员定义的单词,例如程序中函数名、变程序员定义的单词,例如程序中函数名、变 量名、类名、对象名等。量名、类名、对象名等。C+标识符命名规则如下:标识符命名规则如下:以大写字母、小写字母或下划线以大写字母、小写字母或下划线(_)开始。开始。可以由以大写字母、小写字母、下划线可以由以大写字母、小写字母、下划线(_)或数字或数字 09组成。组成。大写字母和小写字母代表不同标识符大写字母和小写字母代表不同标识符(大小写敏感大小写敏感) 不能是不能是C+关键字关键字u例:挑出错误的标识符例:挑出错误的标识符 room3-1 _SUM student num1 Mr.Zhu _1_2_3 MyN
13、ame myname my_name 2men2.1 C+语言概述语言概述第二章第二章 C+简单程序设计简单程序设计2.1.5 词法记号词法记号3.文字文字 4.操作符操作符 5.分隔符分隔符 6.空白空白u文字文字 在程序中直接使用符号表示的数据,包括数在程序中直接使用符号表示的数据,包括数 字、字符、字符串和布尔文字字、字符、字符串和布尔文字u操作符操作符 用于实现各种运算的符号,用于实现各种运算的符号,+ - * / u分隔符分隔符 () , : ; 用于分隔各个词法记号或用于分隔各个词法记号或 程序正文,不表示实际任何操作,仅用于构造程序程序正文,不表示实际任何操作,仅用于构造程序u空
14、白空白 空格、制表符(空格、制表符(TAB键产生的字符)、垂直键产生的字符)、垂直 制表符、换行符、回车符和制表符、换行符、回车符和注释注释的总称的总称2.1 C+语言概述语言概述第二章第二章 C+简单程序设计简单程序设计2.1.5 词法记号词法记号注释注释u注释:注释:对程序进行解释和说明,对于程序的功能实现不起任对程序进行解释和说明,对于程序的功能实现不起任 何作用,不会影响最终产生可执行程序的大小。一个好的、何作用,不会影响最终产生可执行程序的大小。一个好的、 有使用价值的源程序都应当加上必要的注释,以增加程序的有使用价值的源程序都应当加上必要的注释,以增加程序的 可读性。可读性。u注释
15、有两种形式:注释有两种形式:行尾使用注释:行尾使用注释:开始标记符为:开始标记符为:/ 用用“/”作注释时,有效范围只有一行,即本行有效,不能跨行作注释时,有效范围只有一行,即本行有效,不能跨行多行注释:多行注释:开始标记和结束标记分别为:开始标记和结束标记分别为:/*和和*/ 而用而用“/*/”作注释时有效范围为多行。只要在开始处有一作注释时有效范围为多行。只要在开始处有一 个个“/*”,在最后一行结束处有一个,在最后一行结束处有一个“*/”即可。即可。因此,一般习惯是:因此,一般习惯是: 内容较少的简单注释常用内容较少的简单注释常用“/”,内容较长,内容较长 的常用的常用“/*/ ”。学生
16、人数学生人数商品个数商品个数商品价格商品价格学生姓名学生姓名边长值边长值角度值角度值分数分数商品名称商品名称正弦值正弦值字符类型字符类型整型整型实型实型数值类型数值类型u问题:以什么数据形式表示问题中涉及的数据问题:以什么数据形式表示问题中涉及的数据(实实 体、对象体、对象)?2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计u计算机处理的对象是数据,而数据是以某种特定计算机处理的对象是数据,而数据是以某种特定 的形式存在的的形式存在的(例如整数、浮点数、字符等形式
17、例如整数、浮点数、字符等形式)。 不同的数据之间往往还存在某些联系(例如由若不同的数据之间往往还存在某些联系(例如由若 干个整数组成一个整数数组)。数据结构指的是干个整数组成一个整数数组)。数据结构指的是 数据的组织形式。例如,数组就是一种数据结构。数据的组织形式。例如,数组就是一种数据结构。 不同的计算机语言所允许使用的数据结构是不同不同的计算机语言所允许使用的数据结构是不同 的。处理同一类问题,如果数据结构不同,算法的。处理同一类问题,如果数据结构不同,算法 也会不同。例如,对也会不同。例如,对10个整数排序和对包含个整数排序和对包含10个个 元素的整型数组排序的算法是不同的。元素的整型数
18、组排序的算法是不同的。uC+可以使用的数据类型如下:可以使用的数据类型如下:2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计布尔型就是逻辑型布尔型就是逻辑型空类型就是无值型空类型就是无值型2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.1 基本数据类型基本数据类型uC+的数据包括的数据包括常量与变量常量与变量,常量与变量都具有类,常量与变量都具有类 型。由以上这些数据类型还可以构成更复杂的数据型。由以上这些数据类型还可以构成更复杂的数据 结构。例如利用指针和结构体类型可以构成表、树、结构。例如利用指针和
19、结构体类型可以构成表、树、 栈等复杂的数据结构。栈等复杂的数据结构。uC+并没有统一规定各类数据的精度、数值范围和并没有统一规定各类数据的精度、数值范围和 在内存中所占的字节数,各在内存中所占的字节数,各C+编译系统根据自己编译系统根据自己 的情况作出安排。书中表的情况作出安排。书中表2-1列出在列出在IA-32处理器的处理器的 VC+ 2008 各类型的长度和取值范围。各类型的长度和取值范围。2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计(signed/unsigned) char (unsigned) short (unsigned) int (
20、unsigned) longfloat double long double2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计u说明:说明:u(1) 整型数据分为长整型(整型数据分为长整型(long int)、一般整)、一般整 型(型(int)和短整型()和短整型(short int)。在)。在int前面加前面加 long和和short分别表示长整型和短整型。分别表示长整型和短整型。u(2) 整型数据的存储方式为按二进制数形式存储。整型数据的存储方式为按二进制数形式存储。2.2.1 基本数据类型基本数据类型2.2 基本数据类型和表达式基本数据类型和表达式
21、第二章第二章 C+简单程序设计简单程序设计u (3) 在整型符号在整型符号int和字符型符号和字符型符号char的前面的前面,可以加修饰符可以加修饰符 signed(表示表示“有符号有符号”)或或unsigned(表示表示“无符号无符号”)。如果如果 指定为指定为signed,则数值以,则数值以补码补码形式存放,存储单元中的最形式存放,存储单元中的最 高位高位(bit)用来表示数值的符号用来表示数值的符号(“0”表示表示“正正”, “1”表示表示“负负”)。 如果指定为如果指定为unsigned,则数值没有符号,全部二进制位,则数值没有符号,全部二进制位 都用来表示数值本身。例如短整型数据占两
22、个字节都用来表示数值本身。例如短整型数据占两个字节:2.2.1 基本数据类型基本数据类型2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计 有符号时,能存储的最大值为有符号时,能存储的最大值为215-1,即,即32767,最,最 小值为小值为-32768。无符号时。无符号时, 能存储的最大值为能存储的最大值为216-1, 即即65535,最小值为,最小值为0。有些数据是没有负值的。有些数据是没有负值的, 可可 以使用以使用unsigned,它存储正数的范围比用它存储正数的范围比用signed时要时要 大一倍。大一倍。u(4) 浮点型浮点型(又称实型又称实
23、型)数据分为单精度数据分为单精度(float)、双、双 精度精度(double)和长双精度和长双精度(long double)3种,在种,在 Visual C+ 6.0中,对中,对float提供提供6位有效数字,对位有效数字,对 double提供提供15位有效数字,并且位有效数字,并且float和和double的的 数值范围不同。对数值范围不同。对float分配分配4个字节个字节, 对对double和和 long double分配分配8个字节。个字节。2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计(5)字符型字符型 char、signed char、
24、unsigned char 实质是占一个字节的整型数实质是占一个字节的整型数(小整数小整数) 允许的操作:和整型相同允许的操作:和整型相同(6)布尔型布尔型 bool , 值为值为true和和false 可以当作整数用可以当作整数用( true一般为一般为1,false为为0) 把其它类型的值转换为布尔值时,非零值转换把其它类型的值转换为布尔值时,非零值转换 为为true,零值转换为,零值转换为false程序运行过程中,程序运行过程中,其值其值是否能被改变是否能被改变?变量变量是是常量常量不是不是2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计u常量:
25、常量:程序运行过程中,其值程序运行过程中,其值不能不能被改变的量被改变的量u分类分类整型常量整型常量实型常量实型常量字符型常量字符型常量字符串常量字符串常量布尔型常量布尔型常量(false,true)符号常量:用一个标识符代表的常量符号常量:用一个标识符代表的常量字面常量:从字面形式字面常量:从字面形式即可判断即可判断2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量1. 整型常量(整数)的类型整型常量(整数)的类型在上一节中
26、已知道:在上一节中已知道: 整型数据可分为整型数据可分为int,short int,long int以及以及unsigned int,unsigned short,unsigned long等类别。整型常量也分为以上类别。为什么将常等类别。整型常量也分为以上类别。为什么将常量区分为不同的类别呢?因为在进行赋值或函数的参量区分为不同的类别呢?因为在进行赋值或函数的参数虚实结合时要求数据类型匹配。数虚实结合时要求数据类型匹配。u整型常量:以文字出现的整数,包括正整数、负整整型常量:以文字出现的整数,包括正整数、负整 数和数和02.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程
27、序设计简单程序设计2.2.2 常量常量整型常量整型常量u一个整型常量可以用一个整型常量可以用3种不同的方式表示:种不同的方式表示: 十进制整数。十进制整数。若干个若干个09的数字,数字部分不能以的数字,数字部分不能以0开头。开头。 如如1357,-432,0等。在一个整型常量后面加等。在一个整型常量后面加 一个字母一个字母l或或L, 则认为是则认为是long int型常量。例如型常量。例如123L,421L,0L等,这往往等,这往往 用于函数调用中。如果函数的形参为用于函数调用中。如果函数的形参为long int,则要求实参,则要求实参 也为也为long int型,此时用型,此时用123作实参
28、不行,而要用作实参不行,而要用123L作实参。作实参。(2) 八进制整数。八进制整数。0若干个若干个07的数字。的数字。在常数的开头加一个数字在常数的开头加一个数字 0,就表示这是以八进制数形式表示的常数。如,就表示这是以八进制数形式表示的常数。如020表示这是表示这是 八进制数八进制数20,即,即(20)8,它相当于十进制数,它相当于十进制数16。(3) 十六进制整数。十六进制整数。0 x若干个若干个09的数字及的数字及AF的字母的字母(大小写均可大小写均可)。 在常数的开头加一个数字在常数的开头加一个数字0和一个英文字母和一个英文字母X(或或x),就表示这,就表示这 是以十六进制数形式表示
29、的常数。如是以十六进制数形式表示的常数。如0X20表示这是十六进制表示这是十六进制 数数20,即,即(20)16,它相当于十进制数,它相当于十进制数32。12,30 045 0123, 040 039 0 x12A, 0X96 2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量实型常量实型常量u实型常量:以文字形式出现的实数。实型常量:以文字形式出现的实数。u一个浮点数可以用两种不同的方式表示:一个浮点数可以用两种不同的方式表示: 十进制小数形式。十进制小数形式。如如21.456,-7.98等。它一般由等。它一般由 整数部分和小数部分
30、组成,可以省略其中之一整数部分和小数部分组成,可以省略其中之一(如如 78.或或.06,.0),但不能二者皆省略。,但不能二者皆省略。C+编译系统编译系统 把用这种形式表示的浮点数把用这种形式表示的浮点数一律按双精度常量处理一律按双精度常量处理,在内存中占在内存中占8个字节。如果在实数的数字之后加字母个字节。如果在实数的数字之后加字母 F或或f,表示此数为单精度浮点数,如,表示此数为单精度浮点数,如1234F,-43f, 占占 4个字节。如果加字母个字节。如果加字母L或或l,表示此数为长双精度,表示此数为长双精度数数(long double),在,在Visual C+ 6.0中占中占8个字节。
31、个字节。2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计(2) 指数形式(即浮点形式)指数形式(即浮点形式)一个浮点数可以写成指一个浮点数可以写成指 数形式,如数形式,如3.14159可以表示为可以表示为0.314159101、 3.14159100、31.415910-1、314.15910-2等形等形 式。在程序中应表示为:式。在程序中应表示为: 0.314159e1,3.14159e0、 31.4159e-1、314.159e-2,用字母,用字母e表示其后的数是表示其后的数是 以以10为底的幂,如为底的幂,如e12表示表示1012。u其一般形式为
32、:其一般形式为:数符数符 数字部分数字部分 指数部分指数部分 上面各数据中的上面各数据中的0.314159,3.14159, 31.4159, 314.159 等就是其中的数字部分。可以看到:由于指数部分等就是其中的数字部分。可以看到:由于指数部分 的存在,使得同一个浮点数可以用不同的指数形式的存在,使得同一个浮点数可以用不同的指数形式 来表示,数字部分中小数点的位置是浮动的。例如:来表示,数字部分中小数点的位置是浮动的。例如: 2.2.2 常量常量实型常量实型常量2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量实型常量实型常量 a
33、=0.314159e1; a=3.14159e0; a=31.4159e-1; a=314.159e-2;在程序中不论把浮点数写成小数形式还是指数形式,在程序中不论把浮点数写成小数形式还是指数形式,在内在内 存中都是以指数形式存中都是以指数形式(即浮点形式即浮点形式)存储的。存储的。例如不论在程例如不论在程 序中写成序中写成314.159或或314.159e0、31.4159e1、3.14159e2、 0.314159e3等形式,在内存中都是以等形式,在内存中都是以规范化的指数形式规范化的指数形式存存 放,如下:放,如下:左边左边4个赋值语句中,用了不同形个赋值语句中,用了不同形式的浮点数,但
34、其作用是相同的。式的浮点数,但其作用是相同的。 为便于理解,上图中是用十进制表示的,实际上在存储单元中是为便于理解,上图中是用十进制表示的,实际上在存储单元中是 用二进制数来表示小数部分,用用二进制数来表示小数部分,用2的幂次来表示指数部分的。的幂次来表示指数部分的。2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量实型常量实型常量u规范化的指数形式:规范化的指数形式:数字部分必须小于数字部分必须小于1,同时,同时, 小数点后面第一个数字必须是一个非小数点后面第一个数字必须是一个非0数字。数字。例如不能是例如不能是0.0314159。
35、因此。因此314.159和和314.159e0、 31.4159e1、3.14159e2、0.314159e3在内存中表示在内存中表示 成成0.314159103。存储单元分为两部分,。存储单元分为两部分,一部分一部分 用来存放数字部分,一部分用来存放指数部分用来存放数字部分,一部分用来存放指数部分。对于以指数形式表示的常量,也都作为双精度常对于以指数形式表示的常量,也都作为双精度常 量处理。量处理。 2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量字符常量字符常量1. 普通的字符常量普通的字符常量 用单撇号括起来的一个字符就是字符
36、型常量。用单撇号括起来的一个字符就是字符型常量。例如例如a、 #、 %、 D都是合法的字符常量,都是合法的字符常量,在在 内存中占一个字节。内存中占一个字节。注意注意: 字符常量只能包括一个字符,如字符常量只能包括一个字符,如AB是不是不 合法的。合法的。字符常量区分大小写字母,如字符常量区分大小写字母,如A和和a 是两个不同的字符常量。是两个不同的字符常量。撇号撇号( )是是定界符定界符,而,而 不属于字符常量的一部分。如不属于字符常量的一部分。如cout“a”;输出的;输出的 是一个字母是一个字母a,而不是,而不是3个字符个字符a。a,?,3,# abc,啊啊 2.2 基本数据类型和表达式
37、基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量字符常量字符常量2. 转义字符常量转义字符常量 除了以上形式的字符常量外,除了以上形式的字符常量外,C+还允许用一种特殊形式的还允许用一种特殊形式的 字符常量,就是以字符常量,就是以 “”开头的字符序列。开头的字符序列。例如,例如,n代表一个代表一个“换行换行”符。符。“coutn; ” 将输出一将输出一个个 换行,其作用与换行,其作用与“coutendl; ” 相同。这种相同。这种“控制字符控制字符”,在屏,在屏 幕上是不能显示的。在程序中也无法用一个一般形式的字符幕上是不能显示的。在程序中也无法用一个一般形式
38、的字符 表示,只能采用特殊形式来表示。表示,只能采用特殊形式来表示。常用的以常用的以“”开头的特殊字符见书中表开头的特殊字符见书中表2-22.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量字符常量字符常量常用的以常用的以“”开头的特殊字符见书中表开头的特殊字符见书中表2-2u注意:注意: (1)转义字符常量只代表一个字符转义字符常量只代表一个字符(占一个字节占一个字节)。(2)八进制形式:八进制形式: nnn。反斜杠后的八进制数可以不用反斜杠后的八进制数可以不用0开头开头(3)十六进制形式:十六进制形式: xnnn。反斜杠后的十六进制
39、数只能以小反斜杠后的十六进制数只能以小 写字母写字母x开头,不允许用大写字母开头,不允许用大写字母X或或0 x开头。例如:开头。例如:a 的十六进制的十六进制ASCII码是码是61,即,即x61u注意:如果反斜杠和双引号作为字符串中的有效注意:如果反斜杠和双引号作为字符串中的有效 字符,则必须使用转义字符。字符,则必须使用转义字符。 C:msdosv6.22 coutC:msdosv6.22n; I say: Goodbye! coutI say:Goodbye!endl;2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量字符常量字符
40、常量2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量字符常量字符常量3. 字符数据在内存中的存储形式及其使用方法字符数据在内存中的存储形式及其使用方法 将一个字符常量存放到内存单元时,实际上并不是将一个字符常量存放到内存单元时,实际上并不是 把该字符本身放到内存单元中去,而是将该字符相把该字符本身放到内存单元中去,而是将该字符相 应的应的ASCII代码放到存储单元中,实际上在内存中代码放到存储单元中,实际上在内存中 是以二进制形式存放的。是以二进制形式存放的。00110010a(ASCII=97)2(ASCII=50)0110000
41、1u作为作为char类型数据,实质上是一个字节长度的整类型数据,实质上是一个字节长度的整 型数据,数值是其型数据,数值是其ASCII码码2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量字符常量字符常量u作为作为char类型数据,实质上是一个字节长度的整型类型数据,实质上是一个字节长度的整型 数据,数值是其数据,数值是其ASCII码。这样,在码。这样,在C+中字符型中字符型 数据和整型数据之间就可以通用。一个字符数据可数据和整型数据之间就可以通用。一个字符数据可 以赋给一个整型变量,反之,一个整型数据也可以以赋给一个整型变量,反之,一
42、个整型数据也可以 赋给一个字符变量。也可以对字符数据进行算术运赋给一个字符变量。也可以对字符数据进行算术运 算,此时相当于对它们的算,此时相当于对它们的ASCII码进行算术运算。码进行算术运算。u例例: 将字符赋给整型变量。将字符赋给整型变量。2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计u例例2.1 将字符赋给整型变量。将字符赋给整型变量。#include using namespace std;int main() int i,j; /i和和j是整型变量是整型变量 i= A ; /将一个字符常量赋给整型变量将一个字符常量赋给整型变量i j= B
43、; /将一个字符常量赋给整型变量将一个字符常量赋给整型变量j couti jn; /输出整型变量输出整型变量i和和j的值,的值, /n 是换行符是换行符 return 0; 2.2.2 常量常量字符常量字符常量2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计u例例2.1 将字符赋给整型变量。将字符赋给整型变量。#include using namespace std;int main() int i,j; i= A; j= B; couti jn; return 0;运行结果运行结果 65 66i和和j被指定为整型变量。但在被指定为整型变量。但在第第5
44、和第和第6行中,将字符行中,将字符A和和B分别赋给分别赋给i和和j,它的作用,它的作用相相当于以下两个赋值语句:当于以下两个赋值语句:i65;j66;因为因为A和和B的的ASCII码为码为65和和66。在程序的第。在程序的第5和第和第6行是行是 把把65和和66直接存放到直接存放到i和和j的内存单元中。因此输出的内存单元中。因此输出65和和66。注注:在一定条件下,字符型数据和整型数据是可以通用的。但在一定条件下,字符型数据和整型数据是可以通用的。但 是应注意字符数据只占一个字节,它只能存放是应注意字符数据只占一个字节,它只能存放0255范围内的范围内的 整数。整数。2.2 基本数据类型和表达
45、式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量字符常量字符常量u例例: 字符数据与整数进行算术运算。下面程序的作用是将小字符数据与整数进行算术运算。下面程序的作用是将小 写字母转换为大写字母。写字母转换为大写字母。#include using namespace std;int main( )char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; coutc1 c2endl; return 0;a的的ASCII码为码为97,而,而A的的ASCII码为码为65,b为为98,B为为66。从。从ASCII表中可以看到每一个小写字表
46、中可以看到每一个小写字母比它相应的大写字母的母比它相应的大写字母的ASCII大大32。字符数据与数值直接进行算字符数据与数值直接进行算术运算,术运算,a-32得到整数得到整数65,b-32得到整数得到整数66。将。将65和和66存放在存放在c1,c2中,由于中,由于c1,c2是字符变量,因是字符变量,因此用此用cout输出输出c1,c2时,得到字符时,得到字符A和和B(A的的ASCII码为码为65,B的的ASCII码为码为66)。)。运行结果为:运行结果为:A B2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量字符串常量字符串常量u
47、用双撇号括起来的部分就是用双撇号括起来的部分就是字符串常量。字符串常量。u例如例如“abc”, “Hello!”, “a+b”, “Liping”都是都是 字符串常量。字符串常量。a,3.14, How are younu字符串中字符的个数称为字符串中字符的个数称为字符串长度字符串长度u长度为长度为0的字符串的字符串(即一个字符都没有的字符串即一个字符都没有的字符串)称称 为为空串空串,表示为,表示为“”“” (一对紧连的双引号一对紧连的双引号)。u 空格串:空格串:右空格构成的字符串。右空格构成的字符串。 “ ” 表示由一个表示由一个 空额构成的长度为空额构成的长度为1的字符串。的字符串。2
48、.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量字符串常量字符串常量u字符串常量字符串常量“abc”在内存中占在内存中占4个字节(而不是个字节(而不是3个个 字节),见下图:字节),见下图:u编译系统会在字符串最后自动加一个编译系统会在字符串最后自动加一个“0”作为字符作为字符 串结束标志。但串结束标志。但“0”并不是字符串的一部分,它只作并不是字符串的一部分,它只作 为字符串的结束标志。如为字符串的结束标志。如 cout“abc”endl; 输出输出3个字符个字符abc,而不包括,而不包括“0” 。u字符串常量的存储形式字符串常量的
49、存储形式42 在内存中字符串中的每个字符以其在内存中字符串中的每个字符以其ASCIIASCII值的二值的二进制形式按顺序存放。进制形式按顺序存放。 系统自动在字符串的末尾加一个系统自动在字符串的末尾加一个空字符空字符00 ( (值值为为0, 0, 即符号常量即符号常量NULL) NULL) 作为字符串的结束标志。作为字符串的结束标志。 00不可显示,也不引起任何控制动作。不可显示,也不引起任何控制动作。例如例如 字符串字符串chinachina在内存中的实际存储如下:在内存中的实际存储如下:注意:注意:n 在书写字符串常量时,在书写字符串常量时,不必加结束字符不必加结束字符00,否则画蛇添足。
50、否则画蛇添足。n输出字符串时输出字符串时00不不输出输出china0010000110100100001001001010011100100001000000000实际占用字节而非字节内存空间。实际占用字节而非字节内存空间。u字符串常量的存储形式字符串常量的存储形式2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量字符串常量字符串常量u注意:注意: “a”和和a代表不同的含义,代表不同的含义, “a”是字符串是字符串常常 量,量,a 是字符常量。
51、前者占两个字节,后者占是字符常量。前者占两个字节,后者占1个个 字节。请分析下面的程序片段:字节。请分析下面的程序片段: char c; /定义一个字符变量定义一个字符变量 c=a; /正确正确 c=“a”; /错误,错误,c只能容纳一个字符只能容纳一个字符字符串常量要用字符数组来存放,见第字符串常量要用字符数组来存放,见第6章。章。aa 0970aa972.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量字符串常量字符串常量u请思考:请思考: 字符串常量字符串常量“abcn”包含几个字符包含几个字符?不是不是5个而是个而是4个字符,其
52、中个字符,其中“n”是一个转义字符。是一个转义字符。 但它在内存中占但它在内存中占5个字节(包括一个个字节(包括一个“0”字符)字符) 。 编译系统遇到编译系统遇到“”时就会把它认作转义字符的标时就会把它认作转义字符的标 志,把它和其后的字符一起作为一个转义字符。志,把它和其后的字符一起作为一个转义字符。2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量字符串常量字符串常量u字符常量与字符串常量的区别字符常量与字符串常量的区别定界符不同:定界符不同:字符常量使用单引号,而字符串常量字符常量使用单引号,而字符串常量 使用双引号;使用双引
53、号;长度不同:长度不同:字符常量的长度固定为字符常量的长度固定为1,而字符串常,而字符串常 量的长度,可以是量的长度,可以是0,也可以是某个整数;,也可以是某个整数;存储要求不同:存储要求不同:字符常量存储的是字符的字符常量存储的是字符的ASCII码码 值,而字符串常量,除了要存储串中字符的值,而字符串常量,除了要存储串中字符的ASCII 码值外,还要存储一个结束标志码值外,还要存储一个结束标志0 。2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量符号常量符号常量u为了编程和阅读的方便,在为了编程和阅读的方便,在C+程序设计中,常用
54、程序设计中,常用 一个符号名代表一个常量,称为一个符号名代表一个常量,称为符号常量符号常量。符号常符号常 量的值在程序中间不能改变。量的值在程序中间不能改变。#define PI 3.14注:在一个程序中不能对同一个符号常量定义多次注:在一个程序中不能对同一个符号常量定义多次 如:如: #define PI 3.14 #define PI 3.1415962.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.2 常量常量符号常量符号常量# includeusing namespace std;int main( ) int r=4; float s,
55、l; l=2*PI*r; s=PI*r*r; coutl=lendl s=sendl; return 0;#define PI 3.14预处理命令预处理命令#define指定指定PI在本在本程序中代表常量程序中代表常量3.14,此后凡在,此后凡在本程序中出现的本程序中出现的PI都代表都代表3.14,可以和常量一样进行运算可以和常量一样进行运算.注意符号常量虽然有名字,但它注意符号常量虽然有名字,但它不是变量。它的值在其作用域不是变量。它的值在其作用域(在在本例中为主函数本例中为主函数)内是不能改变的内是不能改变的也不能被赋值。如用赋值语句也不能被赋值。如用赋值语句“PI=3.1415926;”
56、给给PI赋值是错的。赋值是错的。 使用符号常量的好处是:使用符号常量的好处是:(1) 含义清楚。含义清楚。(2) 在需要改变一个常量时能做到在需要改变一个常量时能做到 “一改全改一改全改”。 如如 #define PI 3.14159262.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计练习:练习:1.C+语言中的标识符只能由三种字符组成,它们是语言中的标识符只能由三种字符组成,它们是 2. 下列数据类型不是下列数据类型不是C+语言基本数据类型的是语言基本数据类型的是( ) A 字符型字符型 B 整型整型 C 实型实型 D 数组数组3. 在在C+语言中,
57、语言中,080是是( ) A 八进制数八进制数 B 十进制数十进制数 C 十六进制数十六进制数 D 非法数非法数4. 下面正确的字符常量是下面正确的字符常量是( ) A “C” B 1 C W D 2E-55. 字符串字符串“Thiss a book.n ”的长度为的长度为 6.在在C+中存储字符串中存储字符串“abcdef”至少需要至少需要 个字节个字节字母字母数字数字下划线下划线157程序运行过程中,程序运行过程中,其值其值是否能被改变是否能被改变?变量变量是是常量常量不是不是2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2 基本数据类型和表
58、达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.3 变量变量u在程序运行期间其值可以改变的量称为在程序运行期间其值可以改变的量称为变量变量。一个变量应该有一个名字一个变量应该有一个名字在内存中占据一定的存储单元在内存中占据一定的存储单元在该存储单元中存放变量的值。在该存储单元中存放变量的值。u注:区分变量名和变量值这两个不同的概念。注:区分变量名和变量值这两个不同的概念。2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计2.2.3 变量变量变量的声明和定义变量的声明和定义u定义形式:数据类型定义形式:数据类型 变量名列表变量名列
59、表变量名是标识符的一种,其名字必须遵循标识符的命名规则。变量名是标识符的一种,其名字必须遵循标识符的命名规则。l一般地,变量名用小写字母表示,与人们日常习惯一致,以一般地,变量名用小写字母表示,与人们日常习惯一致,以 增加可读性。应注意变量名不能与增加可读性。应注意变量名不能与C+的关键字、系统函数的关键字、系统函数 名和类名相同名和类名相同u原则:先定义,后使用原则:先定义,后使用u例:例:float a,b,c,d,e; 表示:定义表示:定义a,b,c,d,e为单精度型变量,为单精度型变量, 注意各变量间以逗号分隔,最后是分号。注意各变量间以逗号分隔,最后是分号。可以在定义变量时指定它的初
60、值。可以在定义变量时指定它的初值。例:例:float a=83.5,b,c=64.5,d=81.2,e; /对变量对变量a,c,d指定了初值,指定了初值, /b和和e未指定初值未指定初值2.2 基本数据类型和表达式基本数据类型和表达式第二章第二章 C+简单程序设计简单程序设计uC+要求对变量作强制定义要求对变量作强制定义(先定义先定义,后使用后使用)目的是目的是: 凡未被事先定义的,不作为变量名,这就能保证程序中变凡未被事先定义的,不作为变量名,这就能保证程序中变 量名使用得正确。例如,如果在声明部分写了量名使用得正确。例如,如果在声明部分写了 int student; 而在执行语句中错写成而在执行语
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度梅翠与张伟离婚协议及子女学业支持协议3篇
- 2024年版货运代理与分销合同
- 2024幼儿园食品安全风险管理与培训协议3篇
- 二零二五年度BIM技术咨询服务与运维管理合同2篇
- 2024正规火锅店经营许可与食品安全监督合同3篇
- 2025年度企业员工团建活动餐饮服务合同5篇
- 2025年度医疗机构床位承包合作协议3篇
- 2024年项目奖金分配:员工参与分红协议3篇
- 2025年度电子商务平台合同审核标准模板3篇
- 二零二五年度企业重组下1999年劳动合同继承与转移合同2篇
- 实验室(化验室)管理规定
- GB/T 44481-2024建筑消防设施检测技术规范
- 班主任月考成绩质量分析总结与反思
- 小学五年级家长会-主题班会
- DB11T 211-2017 园林绿化用植物材料 木本苗
- 【3套试卷】人教版八年级数学上册期末考试试题【答案】
- 单词连连看答题闯关游戏课堂互动课件1
- 中山市2023-2024八年级上学期期末考试数学试卷
- 2024年广州市南沙区初中语文毕业班模拟考试卷(附答案解析)
- 物业服务考核办法及评分细则(表格模板)
- 2024年春九年级化学下册 第九单元 溶液教案 (新版)新人教版
评论
0/150
提交评论