程序设计基础第5章.ppt
程 序 设 计 基 础 主讲教师崔莉莉 6 控制循环流程的编程 学习目标 q循环流程 qwhile、for语句 qdo-while语句 qbreak、continue语句 q掌握程序调试工具的基本使用 断点的设置与应用技 能 三种基本程序结构 q顺序结构。A与B顺序操作,执行完A后,必定接着 执行B。是最简单的基本结构。 q选择结构。分支结构。必包含一个判断框,根据给 定条件P是否成立而选择是执行A还是B,无论P成立否 ,只能执行A或B之一。 A BA P B y n P A y n q循环结构。重复结构,即反复执行某一部分操作 当型结构。如P成立,执行A,完后再判断P,如 还是成立,再执行A,如此反复,当某一次P不成立,脱 离循环结构。特征先判断后执行。 直到型结构。先执行A,再判P,不成立再执行A ,再判断P,P还是不成立,再执行A,如此循环反复 ,直到某一次P成立脱离循环。特征先执行后判断。 P A y P A y n 前期知识 if 语句的2种格式 格式1 if 表达式 语句; 格式1的if语句执行过程 1. 求表达式的值,若为真(即值为非0),则执行2, 若为假(即值为0)则转到3; 2. 执行if语句中指定的内嵌语句A; 3. 整个if语句执行结束,继续执行后面的语句 格式2 if 表达式 语句1; else 语句2; 格式2的if语句执行过程 1. 求表达式的值,若为真(即值为非0)则执行2,若为假 (即值为0)则转到3; 2. 执行if语句中指定的内嵌语句1A,然后转到4; 3. 执行if语句中指定的内嵌语句2B; 4. 整个if语句执行结束,继续执行后面的语句。 各有一个分号 注意不要误认为格式2是两个语 句(if语句和else语句),它们同 属于同一个if语句。 例从键盘输入一学生的2个成绩,然后输出两者中的 高分。 确定算法 定义2个变量score1、score2,保存输入的2个成绩。 程序处理过程 1. 显示输入提示,从键盘接收2个成绩分别到score1、 score2; 2. 判断条件score1score2,成立执行3,否则转4; 3. 输出score1,转5; 4. 输出score2; 5. 结束运行。 分析步骤3或4并不总是被执行的,这2步到底执行哪 一步,取决于步骤2的控制,步骤2控制的依据是条件 score1 score2 显示输入提示 ↓ 从键盘接收2个成绩,分别存放到score1、score2 ↓ 计算表达式score1score2 结果值为非0↓ ↓结果值为0 输出score1 输出score2; ↓ 结束运行 这2步到底执 行哪一步,取 决于表达式的 计算结果 /* 源文件名ch4_01.cpp 功能取高分 */ include void main { float score1, score2; cout score1 score2; if score1 score2 { cout void main { float score1, score2; float t; cout score1 score2; if score1 include void main { float a,b,c,d; double s,x1,x2; cout a b c; d b * b - 4 * a * c; if d 。 2.使用函数time,定义include 。 srandtimeNULL; //为生成随机数做准备 rand; //生成随机整数 3.定义2个变量 obj、k, obj obj 8 1; //得到1到8之间的随机整数 include include include void main { int obj,k; srandtimeNULL; obj rand; obj obj 8 1; cout k; if k obj { cout k; if k obj { cout k; if k obj { cout include include void main { int obj,k; int num0; srandtimeNULL; objrand; objobj81; coutk; if kobj { coutobjcout void main { char n; //注意不能是int型 cin n; switch n { case ‘1’ //注意 1 是字符型 cout void main { char n; cin n; switch n { case 1 cout void main { char choice; cin choice; switch choice { case 0 cout void main { int sum0; int i; i 1; while i 100结束),该表达式起到 了控制循环次数的作用。 如无i ,则成无穷循环 ,即死循环,i的值永不改 变,循环永不结束。 6.2 do-while语句 do-while语句(直到型)一般格式 do 语句; while表达式; 与while语句不同的是,do循环中的语句至少会执行一 次,而while语句当条件第一次就不满足时,语句一次 也不会被执行。 特点先执行语句,后判断表达式。 有一个分号 do 循环体语句 while 表达式 ; 真 假 循环体语句 表达式 假0 真非0 一般形式 流程图 v特点先执行循环体,后判断表达式 v说明 l至少执行一次循环体 ldowhile可转化成while结构 表达式 循环体 假0 真非0 循环体 while循环 循环体语句 表达式 假0 真非0 do-while循环 include void main { int sum0; int i; i 1; do { sum sum i; i ; } while i void main { int sum0; int i; for i 1; i -99; i-4 s2s2i; s1s1s2; cout xy cout ij couts coutb//行号大于列号 coutb条件的一半结果 输出a的一行所 有内容后换行 int a,b; coutb cout define pi 3.14 void main { int r; float area; forr1;r100 break; cout100时,执行 break语句,提前结束循环 ,即不再继续执行其余的 几次循环 v功能结束本次循环,跳过循环体中尚未执 行的语句,进行下一次是否执行循环体的判断 v仅用于循环语句中 表达式 continue ; 假0 真非0 while 真非0 do continue ; . 表达式 假0 while 表达式2 continue ; . 假0 真非0 for 表达式1 表达式3 continue语句 例把100200之间的不能被3整除的数输出 include void main { int n; forn100;n void main { char ch[100]; int i,sum0; coutch; fori0;ch[i] \0 ;i { ifch[i] M continue; sumsum1; } cout using namespace std; int main { int i,j,n; cinn;//输入打印图形的行数 fori1;i using namespace std; int main { int i,j,n; cinn; fori1;i using namespace std; int main { int i,j,n; cinn; forin;i1;i-- { forj1;j using namespace std; int main { int i,j; fori1;i using namespace std; int main { int i,j,k; fori1;i using namespace std; int main { int x,p,q; cinx; px/10;//取商 qx10;//取余 cout using namespace std; int main { int x,p,q; cinx; whilep0 { px/10; qx10; cout using namespace std; int main { int n,m,d,s; forn100;n999;n { mn; s0; while m 0 //当商不为0时,继续拆数 { d m10; s d*d*d; //将拆出的每一位数进行累加 m m/10; } ifsn coutn“\t“; } coutendl; return 0; } 掌握程序调试工具的基本使用 断点的设置与应用技能 n断点的使用F9 n单步执行F10 练习 (一)教学与实验辅导(第3版)实验5