1、 程序结构顺序、选择、重复三大结构; C+的各种语句(语法、语义、用例); 程序设计风格、方法与技巧简介。 if语句的嵌套 课时安排:课时安排: (1) 英文字母,英文字母,AZ,az(必须区分大小写)。(必须区分大小写)。(2) 数字字符:数字字符:09。 (3) 运算符,例如:运算符,例如:+、-、*、/、%,等等。,等等。 (4) 标点符号,例如:,、;和各种括号。标点符号,例如:,、;和各种括号。 (5) 其他符号,例如下划线其他符号,例如下划线_、美元符号、美元符号$、井号、井号#等。等。 C+C+的字符集是的字符集是ASCIIASCII字符集的子集,包括以下几字符集的子集,包括以下
2、几类字符:类字符: 例如:给变量、例如:给变量、函数函数和和自定义类型自定义类型命名。命名。 name 变量名变量名 max() max是函数名是函数名p 用途用途q 不能与系统保留字同名;不能与系统保留字同名; q 尽量做到尽量做到“见名知义见名知义”。 p 组成标识符的字符只能是:字母、数字、下划线;组成标识符的字符只能是:字母、数字、下划线; q 标识符的首字符不能是数字符,中间不能出现空格标识符的首字符不能是数字符,中间不能出现空格字符;字符; q 标识符的长度(字符数)是任意的,但一般仅前头标识符的长度(字符数)是任意的,但一般仅前头31个字符有效;个字符有效; p 构词规则构词规则
3、例例2-1 AB1,ab1,Rec_Count,RecCount均是合法的标识均是合法的标识符。符。注意注意AB1与与ab1如果同时用在同一个程序中,是两个不如果同时用在同一个程序中,是两个不同的标识符。同的标识符。例例2-2 1a,%name,$addr,Rec Count均是非法的标识符。均是非法的标识符。 为什么? 例例 2-3 2-3 intint、floatfloat数据类型描述符(也称为类型名)数据类型描述符(也称为类型名)ifif、 for for 语句成分描述符。语句成分描述符。 类型类型、名名(称)、(称)、位置位置和和值值是任何一个数据对象是任何一个数据对象所具有的重要属性
4、。所具有的重要属性。 引入符号常量的目的有以下几点:引入符号常量的目的有以下几点: 例例2-4 #define Max 10000,或或const Max=10000 #define pi 3.1415926 ,或或const pi=3.1415926 Max和和pi都是符号常量,其名与值是不一样的。都是符号常量,其名与值是不一样的。其中,第其中,第3点是最重要的。点是最重要的。 便于记忆便于记忆; 便于修改便于修改; 增强程序的可读性增强程序的可读性。例例2-5 下面的下面的C+程序段包含着对变量的显式声明和动程序段包含着对变量的显式声明和动态赋值。态赋值。 说明:说明:(1 1)x x,y
5、 y被声明成整型变量,被声明成整型变量,c1c1被声明成字符型变量;被声明成字符型变量;(2 2)x x和和c1c1通过键盘输入方式被赋值,而通过键盘输入方式被赋值,而y y则在赋值表达则在赋值表达式中被赋值。式中被赋值。 int x,y; char c1; cin x c1; y = x*5; 变量的显式变量的显式声明声明变量的显式变量的显式动态赋值动态赋值int x,y;char c1; cin x c1;y = x*5; 基本数据类型基本数据类型 数据类型数据类型 非基本数据类型非基本数据类型 整数类型整数类型 实数类型实数类型 字符类型字符类型 布尔类型布尔类型 枚举类型枚举类型 数组
6、类型数组类型 结构体类型结构体类型 联合类型联合类型 指针类型指针类型 类类型:类类型:Class 空类型:空类型:void 基本数据类型基本数据类型 短整型短整型 short int整型整型 int长整型长整型 long 浮点型浮点型 float 双精度型双精度型 double 单字符型单字符型 char 宽字符型宽字符型 W_char 整数类型整数类型 实数类型实数类型 字符类型字符类型 布尔类型布尔类型 bool 枚举类型枚举类型 enum例例2-6a = 3+5*4;分析:这是一个赋值表达式,它由运算符(分析:这是一个赋值表达式,它由运算符(=)、左)、左部量(左值)、右部量(右值)三
7、部分构成,右部量部量(左值)、右部量(右值)三部分构成,右部量通常是一个算术表达式。该表达式先计算右部量,然通常是一个算术表达式。该表达式先计算右部量,然后 将 其 值 传 送 给 左 部 量 , 最 后 、后 将 其 值 传 送 给 左 部 量 , 最 后 、 a 的 值 是的 值 是 2 3 。例2-7if ( xy) z=x;else z=y; 分析:分析:(1)if语句中出现了三个表达式,分别是语句中出现了三个表达式,分别是xy、z=x、z=y。 E E E: 数据对象(运算元素),可以是常量、变量、数据对象(运算元素),可以是常量、变量、函数调用、函数调用、 表达式表达式 。 :操作
8、符,也即各种运算符,例如算术运算符、:操作符,也即各种运算符,例如算术运算符、关系运算符、赋值运算符等。关系运算符、赋值运算符等。例例2-8 分析下面所给的表达式的结构。分析下面所给的表达式的结构。 (a+b)*(c+d) 分析:分析:(1)这是一个算术表达式)这是一个算术表达式 EE1*E2(2)E1和和E2这两个数据对象本身又是表达式:这两个数据对象本身又是表达式: E1 (a+b);E2 (c+d) 例例2-8 分析下面所给的表达式分析下面所给的表达式的结构。(的结构。(a+b)*(c+d) 例例2-9 下面的表达式中包含有不同类型的数据对象,下面的表达式中包含有不同类型的数据对象,试问
9、如何进行类型转换?试问如何进行类型转换? float a; a=5/2; 例如:计算(例如:计算(a+ba+b)* *(c+d)(c+d),是先对(,是先对(a+ba+b)求值还是)求值还是先对(先对(c+dc+d)求值?实际上,这对最后的乘积都没有影)求值?实际上,这对最后的乘积都没有影响。求值次序取决于编译器。响。求值次序取决于编译器。 例例2-10 分析下列表达式的执行顺序。分析下列表达式的执行顺序。 d=a+b-c; d=a=3; 加减操作符自左向右结合;加减操作符自左向右结合; 赋值操作符自右向左结合。赋值操作符自右向左结合。 算术表达式算术表达式 关系表达式关系表达式 逻辑表达式逻
10、辑表达式 赋值表达式赋值表达式 条件表达式条件表达式 逗号表达式逗号表达式 I/O表达式表达式学籍管理学籍管理注册管理注册管理成绩管理成绩管理学籍异动学籍异动成绩登记成绩登记学分统计学分统计成绩查询成绩查询成绩录入成绩录入成绩修改成绩修改成绩删除成绩删除 下面程序块就是下面程序块就是一个典型的顺序结一个典型的顺序结构:构:int a;cin a;cout a; #include #include void main()main() int x,y; cin x; if (x0) y=0; else y=1; cout ”y=”yb) max = a; /a大于大于b else max = b;
11、 /a小于等于小于等于b if (ab) temp=a; a=b; b=temp; 注意:该注意:该if语句的分支是复语句的分支是复合语句。合语句。 例例2-17 如果如果a比比b大则大则a,b互相交换。互相交换。 问题:为什么要使用问题:为什么要使用temp变量?变量? 注意:当表达式的值等于注意:当表达式的值等于0则条件不成立,反之成立。则条件不成立,反之成立。 exps1s2tf (1) 判断当前字符是否为小写字母:判断当前字符是否为小写字母:a=ch=z (2) 小写字母转换成大写小写字母转换成大写:ch-32 理解并掌握了以上两个实现要点,问题便迎刃而解。理解并掌握了以上两个实现要点
12、,问题便迎刃而解。/输入要转换的字符输入要转换的字符/判断是否为小写字母判断是否为小写字母/将小写字母转换成大将小写字母转换成大写字母并输出写字母并输出/将所输入的字母原样输出将所输入的字母原样输出该程序有语法错,该程序有语法错,请问错在哪里?请问错在哪里?S1是一个是一个if语句语句/0 x0&x100 s2该该if语句出现在另语句出现在另一个一个if语句的语句的else子子句中。句中。问题:如果少掉嵌套的问题:如果少掉嵌套的if语句,会出现什么样的结果?语句,会出现什么样的结果?注意:注意:u u 123因为加了一对花括因为加了一对花括号,等于限制了括号,等于限制了括号中的号中的ifif语句是没语句是没有有elseelse的,所以仅的,所以仅有的一个有的一个 elseelse就必就必须与第一个须与第一个ifif配对。配对。这就取代了这就取代了“最近最近匹 配匹 配 ” 规 则 。规 则 。开始开始输入成绩输入成绩成绩成绩60显示成绩显示成绩将成绩转将成绩转换成换成E将成绩转将成绩转换成换成D将成绩转将成绩转换成换成C将成绩转将成绩转换成换成B60=成绩成绩7070=成绩成绩8080=成绩成绩90将成绩转将成绩转换成换成A结束结束 程序程序