1、,IT Education & Training,Neusoft Institute of Information,Date: 2019年7月14日星期日,办公室:C7 EMAIL: 课件下载网址:ftp:/,任课教师:黄伟,第三章 结 构 化 程 序 设 计,授课要点,循环的嵌套结构,问题:打印如下图案,123456789 123456789 123456789 123456789 123456789,1 12 123 1234 12345,问题解答1,#include void main() int i,j;for(i=1;i=5;i+)for(j=1;j=9;j+)printf(“%d“
2、,j);printf(“n“); ,问题解答2,#include void main() int i,j;for(i=1;i=5;i+)for(j=1;j=i;j+)printf(“%d“,j);printf(“n“); ,问题:打印如下图案,* * * * *,* *,问题解答3,#include void main() int i,j;for(i=1;i=5;i+)for(j=1;j=i;j+)printf(“*“);printf(“n“); ,问题解答4,#include void main() int i,j;for(i=1;i=5;i+)for(j=1;j=5-i;j+)printf
3、(“ “);for(j=1;j=i;j+)printf(“*“);printf(“n“); ,问题:打印如下图案,* *,问题解答5,#include void main() int i,j;for(i=1;i=5;i+)for(j=1;j=5-i;j+)printf(“ “);for(j=1;j=2*i-1;j+)printf(“*“);printf(“n“); ,模仿练习,* * * * *,*,*,问题:求1!+2!+3!+20!的值,分析: 1、1-20分别求阶乘(p1,p2,p20),然后求各个阶乘的和。 2、两重循环解决问题内重循环:n!123n的实现外重循环:p1+p2+p3+p
4、4+ +p20的实现,双重循环代码分解,/*内重循环代码*/ int j; /*循环变量*/ p=1; for(j=1;j=i;j+)p*=j;,/*外重循环代码*/ int i; /*循环变量*/ int sum=0;/*求和结果*/ for(i=1;i=20;i+) sum=sum+p; /*累加*/ printf(“%d”,sum);,给出一个个i值,得到p值,双重循环代码块,while双重循环int i=1;int sum=0;while(i=20)int j=1;int p=1; while(j=i)p=p*j; /*累乘积*/j+;i=i+1;sum=sum+p;,相应的for双重
5、循环int i,j,sum=0;int p=1;for(int i=1; i=20; i+)for(int j=1;j=i;j+)p=p*j;/*累乘积*/sum=sum+p;,小组讨论并总结,循环嵌套的执行过程 “控制流程”编码中的常见错误。,结论1循环嵌套的执行过程,执行顺序: 1、语句1 2、判断表达式:如果为假,执行语句5;如果为真执行另一个循环语句块 3、执行语句2 4、判断表达式2:如果为假,执行语句4,转回表达式1;如果为真,循环执行语句3,结论2“控制流程”中常见错误,ifelse不配对 switch中表达式类型与case语句的值不匹配 无结束条件,死循环 循环次数不清楚 误用
6、break和continue,学以致用,寻找你身边的一个实际问题,构造出解决问题的表达式,描述解决问题的算法,以及编写解决问题的程序。例如:假设你在某公司工作,老板要你打印一张表,买主可以用它来购买多个特定部件的费用。单个部件的价格从1元到9元不等。N件东西的费用就是单价与数量相乘得出。因此,你要打印一张像下面这样的数字表: 某公司部件费用明细表1 2 3 4 5 6 7 8 92 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 274 8 12 16 20 24 28 32 36 2007年4月7日,作业,【练习1】将1、2、3、9打印15行。 【练习2】打印如下图案:*,【练习3】打印九九乘法表,如图所示,Neusoft Institute of Information,办公室:C7 EMAIL: 课件下载网址:ftp:/,