清华大学_C++课程_第4讲程序结构设计(上)_351004468

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
复合语句的右括号后面没有分号 复合语句中所定义的变量只在该符合语句中有效。 在复合语句的嵌套中,如果内层和外层都作了说明,则
按照局部优先的原则,内层结果不带出外层。
24
4.2 顺序程序结构设计
25
4.2 顺序程序结构设计
26
4.2 顺序程序结构设计
例:编写一个能将三位整数颠倒过来的程序。 算法思想: 先取出个位数, 再取出十位数, 最后取出百 位数, 然后按个位、十位、百位的顺序输出。 算法重点:学会数的分解方法
34
35
例:编程输入公元年号,并判断是否是闰年 闰年的2个条件:能被4整除,但不能被100整除,能 被100整除,有能被400整除 算法重点:关系表达式的应用
36
4.3.1 if 语句
例:输入3个整数,将他们按从大到小的顺序输出。
输入 a,b,c y y b>c a b c a>b n y a>c b a c b
(1)getchar( )函数的调用形式:
char ch;
ch=getchar( ); getchar( )从键盘上读入一个字符,等待换行。使用该函数 必须在程序的头部使用文件包含命令: #include <iostream>
(2)getche( ) 从键盘上读入一个字符,不等待换行
#include <conio.h>
18
4.1.3 格式数据输出和输入
说明
① 输入函数中格式控制字串中不允许使用转义字符。
② 格式字串中普通字符在输入时要原样输入,如: scanf (″%f, %f, %d″, &x, &y, &z); 输入数据必须用逗 号分隔, 如: 3.0, 4.0, 5 ③ 如果数据本身可以将数据分隔时, 输入数据不需用 分隔符,如:scanf(″%d%c%d″, &v1, &v2, &v3); 可这样输入: 30a18
表达式 Y 语 句1 If语句的下一语句 分支结构程序的执行流程
29
4.3 分支结构程序设计
N 语 句2
4.3.1 if 语句
if 语句有三种格式: 格式1: if (条件) 语句; 功能:计算表达式的值,非0时,执行语句;否则执 行if语句的下一条语句
表达式 Y N
语 句
If语句的下一语句 (a)if语句格式1的执行流程
10
4.1.2 字符数据输出和输入
11
4.1.3 格式数据输出和输入
格式输出:printf()函数
① 调用格式:printf(格式字串, 输出参数表)。
② “格式字串”用来描述输出数据的格式, 由“格式说 明符”和“普通字符串”组成。
③ “格式说明符”由“%”和“格式字符”组成, 不同的 格式说明符对应不同类型数据输出, “普通字符串” 原样输出 ④ “输出参数表”可以是表达式。如果是常量, 直接输 出; 如是变量, 输出其值; 如是表达式, 先计算表达 式值, 再输出。 ⑤ 例如:printf(″%2d*%2d=%2d″, i, j, i*j)
顺序语句1顺序语句2顺序结构的下一句2442顺序程序结构设计用一对花括号括起来的0个或多个语句在语法上相当于一个语句在复合语句的嵌套中如果内层和外层都作了说明则按照局部优先的原则内层结果不带出外层
第4讲: 程序的结构设计(上)
黄永峰 2009.10.26
1
2
课前答疑
1.如何实现VC6.0 编辑程序时,自动显示有 关标识符等。 2. 教材中的double 和float 类型为什么没有负 数范围?
39
课间练习:见教材第3章习题11.
40
4.3.2 条件运算符
条件运算符是C++唯一的三目运算符。其格式为: <表达式1> ? <表达式2> : <表达式3> 它的执行流程如下图所示:
表达式1 表达式2 表达式3
if语句的下一条语句 图:条件表达式求值示意图
41
4.3.2 条件运算符
说明: 条件运算符的执行顺序是: 计算表达式1的值, 若 为非0(真), 则计算表达式2, 其整个表达式的值 是表达式2的值;若表达式1的值为0(假), 则计算 表达式3, 其整个表达式的值是表达式3的值。
32
4.3.1 if 语句
表达式1 真 表达式2 真 表达式3 真 表达式n 真 语句1 语句2 语句3 „ 语句n 语句n+1 假 假 假 假

下一语句 (a) 真 表达式1 真 表达式2 真 语句1 语句2 语句3 „ 表达式3 真 „ 真 表达式n 假 假 假 假 假
语句n (b)
语句n+1
12
4.1.3 格式数据输出和输入
格式说明字符
不同格式对应不同类型数据的输出 • d:带符号十进制整数形式输出(正数不输出符号) • o:无符号八进制整数形式输出(不输出前导符0) • x:无符号十六进制整数形式输出(不输出前导符0x) • u:以无符号十进制整数形式输出 • c:字符形式输出 • s:字符串形式输出, 输出至结尾符′\0′为止 • f:小数形式输出 • e:标准指数形式输出, 隐含1位整数, 6位小数 • g:根据给定的值和精度, 自动选择f与e中较紧凑的一种格式
30
4.3.1 if 语句
格式2: if (条件) 语句1; else 语句2; 功能:计算表达式的值,结果为非0,执行语句1; 否则执行语句2。
N 语 句2
表达式
Y 语 句1 If语句的下一语句
31
(b)if (条件1) 语句1; else if (条件2) 语句2; else if (条件3) 语句3; ... ... else if (条件n) 语句n; else 语句n+1; 功能:当条件1成立时,执行语句1;否则, 如果 条件2成立, 执行语句2, ... ..., 直到当条件n 成立时, 执行语句n, 否则执行语句n+1。
33
4.3.1 if 语句
例: 输入一个学生成绩,当成绩≥90时,打印 “Very Good”;当80≤成绩<90时,打印 “Good”; 当60≤成绩<80时,打印“Pass”; 当成绩<60分,打印“Fail” 算法思想:输入成绩,根据作出不同判断,打 印不同的结果 算法重点:同一问题,可以采用不同结构,效 率不一样
④ 无符号整型数据输入用% d、 % o、 % x描述 ⑤ 输入函数的返回值为输入数据的个数, 需要时可以 加以利用
19
4.1.3 格式数据输出和输入
20
4.1.3 格式数据输出和输入
小结:变量得到值三种方法 ① 静态赋值:定义时赋给初值,在编译时得到。例 如A=4; ② 动态输入:在执行时利用输入语句得到;利用输 入函数得到值更具一般性、通用性。例如: scanf(),cin等 ③ 文件读取:在执行时从数据文件中读取。 fread();
27
4.2 顺序程序结构设计
例:求一元二次 ax2+bx+c=0方程的根的程序。a,b,c的值由键 盘输入,且 b2-4ac>0 算法思想: 输入a,b,c的值,计算b2-4ac,算两个根,输出两个根 算法重点:学会算术函数的使用
28
在实际生活中, 经常会遇到许多需要判断的问 题, 程序设计中将这一类问题归结为分支问题 在C++语言中, 用if 和switch语句来实现分支 结构。这种语句特点是: 根据所给出的条件, 在给定的操作中选择一组语句去执行
21
4.2 顺序结构程序设计 C++程序结构根据语句执行流程,分为四类:

顺序结构 如:表达语句,函数调用语句 选择结构 如:if语句,switch语句 循环结构 如:for、while、do-while语句 模块结构 函数调用
22
4.2 顺序程序结构设计
顺序结构的程序由顺序语句组成, 所谓顺序语句是 指语句执行时按照程序存储顺序的所组成的语句。 顺序语句主要有:
8
4.1.2 字符数据输出和输入
9
4.1.2 字符数据输出和输入
putchar(字符变量)
char ch; putchar(ch ); putchar( )在显示器上输出一个字符。使用该函数包含命令: #include <iostream>
putch(字符变量) putch( )在显示器上输出一个字符。使用该函数包含命 令:#include <conio.h>
f: 用于输入实数, 可以用小数形式或指数形式输入。
17
4.1.3 格式数据输出和输入
附加格式字符用于进一步描述输入数据格式
l:用于输入长整型数据(%ld, %lo, %lx), 以及双 精度型数据(%lf, %le) h:用于输入短整型数据(%hd, %ho, %hx)。 n:域宽, 为正整数, 用于指明截取输入数据的位数。 只能用于整型数据输入。 *:表示跳过当前输入项。
C++的输入和输出由编译系统中定义的库函数来完成。在 C++语言中没有用于完成I/O操作的关键字 C++输出和输入是采用“流”(stream)来实现,流是来 自或发往外设的一个数据流。数据流是由一系列字节组成, 这些字节是按照“流”的顺序排列 cout是输出流对象名称, cin 是输入流对象名称,<<是流 插入运算符,>>是流提取运算符 格式:cout<<表达式1<<表达式2<<…
13
4.1.3 格式数据输出和输入
附加格式字符 ① l: 用于长整型数据输出(%ld, %lo, %lx, %lu), 以及双精 度型数据输出(%lf, %le, %lg) ② m:域宽, 描述输出数据所占宽度。 如果m大于数据实际 位数, 输出时前面补足空格; 如果m小于数据的实际位数, 按实际位数输出 ③ n:附加域宽, 指定实数小数的输出位数。 如果n小于小数 实际位数, 则四舍五入。如果用于字串, 表示从字串中截 取的字符数 ④ -: 输出数据左对齐, 缺省时为右对齐
3
本讲要点
C++语句与I/O操作
顺序结构程序设计 分支程序设计 参考教材第3章内容
4
4.1 C++语句和流操作
C++程序最小的独立单位是语句 (statement) “;”是C++语句的运算符 类型

– – – –
申明语句 执行语句(控制、函数、表达式) 空语句 复合语句
5
4.1.1 C++流操作
③格式字串可以包含普通字符, 普通字符在数
据输入时必须原样输入。
④输入数据默认用空格、 回车或TAB键分隔。
16
4.1.3 格式数据输出和输入
C++语言用不同的格式字符描述: d: 用于输入十进制整数。 o: 用于输入八进制整数。 x: 用于输入十六进制整数。 c: 用于输入字符数据。
s: 用于输入字符串数据。
表达式语句:在表达式的后面加一个分号。 空语句:仅有一个分号构成的语句。 复合语句:用大括号括起来的一组语句。 顺序语句1 顺序语句2 顺序结构的下一句
23
4.2 顺序程序结构设计
复合语句就是用花括号括起的一组语句
用一对花括号括起来的0个或多个语句,在语法上相
当于一个语句 如: { t = x ; x = y ; y = t ;}
cin>>变量1>>变量2<<…
调用这些函数调用时所需的一些预定义类型和常数都在 头部文件iostream,因此,#include <iostream>
6
4.1 C++语句和流操作

Cout 和cin 的格式控制(见p53表3.1)
7
4.1.2 字符数据输出和输入
getchar( )和getche( )
C
输入 a,b,c n n y
l=a s=b
a>b
l=b s=a
n
y a>c n a c c a
y b>c n c b y cl s
c>l y l,s,c 图2 c<s l,c,s
n n
b
b
a
a
图1
37
4.3.1 if 语句
38
4.3.1 if 语句
由上面的例子可以说明: (1)条件是表达式, 它必须用以对括号括起来。表 达式的值“非0”为真,“0”为假。 (2)整个if 语句在程序中被看作是一条语句。 (3)if 语句中的各语句可以是一条简单语句, 也可 以是 由{ }构成的一个复合语句。 (4)else总是和它上面的、离它最近的if 语句(未曾 配对过)配对。“往上就近原则” (5)格式3称为if 语句的嵌套格式, 用于解决多项 分支问题。
⑤ +: 输出正数时, 也加上“+”号
⑥ #: 作为o, x的前缀时, 输出结果前面加上前导符0、0x
14
4.1.3 格式数据输出和输入
15
4.1.3 格式数据输出和输入
scanf()函数
①格式为:scanf(格式字串, 输入参数表)
②格式说明符由“%”和格式字符组成。不同
格式说明对应不同类型的数据输入
相关文档
最新文档