《《移动通信软件编程基础—C语言》第6章_循环结构II.ppt》由会员分享,可在线阅读,更多相关《《移动通信软件编程基础—C语言》第6章_循环结构II.ppt(71页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 移动通信软件编程基础 C语言 IC-MSP知识回顾 语句语句 表达式表达式 成立成立 不成立不成立 语句语句 表达式表达式 成立成立 不成立不成立 IC-MSP6循环结构 第章IC-MSP本章目标本章目标 掌握并熟练使用掌握并熟练使用for循环循环理解和掌握理解和掌握break和和continue语句的用法语句的用法熟练使用熟练使用while、do-while和和for循环的嵌套循环的嵌套IC-MSPfor循环的各种变形for(表达式表达式1;表达式表达式2;表达式表达式3)语句语句;分号不能省略分号不能省略 for循环中的三个表达式可以缺省,可以省略一个,循环中的三个表达式可以缺省,可以省
2、略一个,省略两个,甚至三个全省略,但不管怎么省略,省略两个,甚至三个全省略,但不管怎么省略,两个分号不能省略,而且这三个表达式的功能一定两个分号不能省略,而且这三个表达式的功能一定要在或前或后的其他地方以其他的形式表现出来。要在或前或后的其他地方以其他的形式表现出来。IC-MSP省略表达式1v 省略表达式省略表达式1 1,相当于省去了为循环变量赋初值,相当于省去了为循环变量赋初值,此时应在此时应在forfor语句之前给循环变量赋初值。语句之前给循环变量赋初值。IC-MSP省略表达式1示例#include void main()int iSum=0,n=1;for(;n=50;n+=2)iSum
3、=iSum+n;printf(50以内的奇数和以内的奇数和iSum=%d n,iSum);过程演示过程演示 for(n=1;n=50;n+=2)IC-MSP省略表达式2v省略表达式省略表达式2,即不判断循环条件,默认表达式,即不判断循环条件,默认表达式2始终为真,这时应在循环体内设置结束循环的条件,始终为真,这时应在循环体内设置结束循环的条件,以免造成循环体死循环。以免造成循环体死循环。IC-MSP省略表达式2示例#include void main()int iSum=0,n;for(n=1;n+)if(n=10)iSum=iSum+n;else break;printf(iSum=%d n
4、,iSum);过程演示过程演示 for(n=1;n=10;n+)IC-MSPfor循环各种变型省略表达式3v省略表达式省略表达式3 3,即省去修改循环变量的值,但此时,即省去修改循环变量的值,但此时应在循环体内设法结束循环。应在循环体内设法结束循环。IC-MSP省略表达式3示例#include void main()int iSum=0,n;for(n=1;n=100;)iSum=iSum+n;n+=2;printf(100以内的奇数和以内的奇数和iSum=%d n,iSum);过程演示过程演示 for(n=1;n=100;n+=2)IC-MSP三个表达式全省略IC-MSPbreak语句v b
5、reak语句的作用和一般形式为:语句的作用和一般形式为:/*从循环体内跳出循环体,提前结束循环,从循环体内跳出循环体,提前结束循环,接着执行循环下面的语句接着执行循环下面的语句*/break;IC-MSPbreak语句while()break;do break;while()for(;)break;IC-MSPbreak语句示例内存内存iNum1111=100?11%11!=0?#include void main()int iNum;for(iNum=11;iNum=100;iNum+)if(iNum%11!=0)break;printf(%d n,iNum);11IC-MSPbreak语句
6、示例内存内存iNum1212=100?11%11!=0?11#include void main()int iNum;for(iNum=11;iNum=100;iNum+)if(iNum%11!=0)break;printf(%d n,iNum);IC-MSPcontinue语句v continue语句的作用和一般形式为:语句的作用和一般形式为:/*/*跳过循环体中剩余的语句而执行下一次循环跳过循环体中剩余的语句而执行下一次循环*/continue;IC-MSPcontinue语句while()continue;do continue;while();for(;)continue;IC-MSP
7、continue语句示例内存内存iNum1111=100?11%11!=0?11#include void main()int iNum;for(iNum=11;iNum=100;iNum+)if(iNum%11!=0)continue;printf(%d n,iNum);IC-MSPcontinue语句示例内存内存iNum1212=100?12%11!=0?11#include void main()int iNum;for(iNum=11;iNum=100;iNum+)if(iNum%11!=0)continue;printf(%d n,iNum);IC-MSPcontinue语句示例内存
8、内存iNum1313=100?13%11!=0?11#include void main()int iNum;for(iNum=11;iNum=100;iNum+)if(iNum%11!=0)continue;printf(%d n,iNum);IC-MSPcontinue语句示例内存内存iNum9999=100?99%11!=0?11 22 33 44 55 66 77 88 99#include void main()int iNum;for(iNum=11;iNum=100;iNum+)if(iNum%11!=0)continue;printf(%d n,iNum);IC-MSPcont
9、inue语句示例内存内存iNum100100=100?100%11!=0?11 22 33 44 55 66 77 88 99#include void main()int iNum;for(iNum=11;iNum=100;iNum+)if(iNum%11!=0)continue;printf(%d n,iNum);IC-MSPcontinue语句示例内存内存iNum101101=100?11 22 33 44 55 66 77 88 99#include void main()int iNum;for(iNum=11;iNum=100;iNum+)if(iNum%11!=0)continu
10、e;printf(%d n,iNum);IC-MSPbreak和和continue区别区别vcontinuecontinue语句是跳过循环体下面未执行的语句,语句是跳过循环体下面未执行的语句,继续进行下一次循环继续进行下一次循环vbreakbreak语句是提前结束循环,不再进行条件判断语句是提前结束循环,不再进行条件判断vcontinuecontinue语句只能用于循环语句语句只能用于循环语句vbreakbreak语句只能用于循环语句和语句只能用于循环语句和switchswitch语句语句IC-MSP 对比对比do-while循环和循环和while循环循环 IC-MSPwhile循环嵌套循环嵌
11、套while().while().内内循循环环外外循循环环IC-MSPv 题目:题目:while嵌套循环输出九九乘法表嵌套循环输出九九乘法表while循环嵌套示例循环嵌套示例 IC-MSPv 题目:题目:while嵌套循环输出九九乘法表嵌套循环输出九九乘法表 1*1=1 1*2=2 1*3=3 1*1=1 1*2=2 1*3=3 1*9=91*9=9 2*1=2 2*2=4 2*3=6 2*1=2 2*2=4 2*3=6 2*9=182*9=18 3*1=3 3*2=6 3*3=9 3*1=3 3*2=6 3*3=9 3*9=273*9=27 9*1=9 9*2=18 9*3=27 9*1=9
12、 9*2=18 9*3=279*9=819*9=81 while循环嵌套示例循环嵌套示例 IC-MSPwhile循环嵌套示例循环嵌套示例 qq 内存内存 nm#include void main()int n,m;n=1;while(n=9)m=1;while(m=9)printf(%-4d,m*n);m+;printf(n);n+;n=1m=11 m=2112IC-MSPwhile循环嵌套示例循环嵌套示例 qq1 内存内存 n2m#include void main()int n,m;n=1;while(n=9)m=1;while(m=9)printf(%-4d,m*n);m+;printf
13、(n);n+;n=11 2 m=2m=33IC-MSPwhile循环嵌套示例循环嵌套示例qq1 内存内存 n9m#include void main()int n,m;n=1;while(n=9)m=1;while(m=9)printf(%-4d,m*n);m+;printf(n);n+;n=11 2 3 4 5 6 7 8 9 m=9m=1010IC-MSPwhile循环嵌套示例循环嵌套示例qq1 内存内存 n9m#include void main()int n,m;n=1;while(n=9)m=1;while(m=9)printf(%-4d,m*n);m+;printf(n);n+;n
14、=11 2 3 4 5 6 7 8 9 m=10IC-MSPwhile循环嵌套示例循环嵌套示例 qq1内存内存n10m#include void main()int n,m;n=1;while(n=9)m=1;while(m=9)printf(%-4d,m*n);m+;printf(n);n+;n=11 2 3 4 5 6 7 8 9 n=2122m=1IC-MSPwhile循环嵌套示例循环嵌套示例 qq10 内存内存 n10m#include void main()int n,m;n=1;while(n=9)m=1;while(m=9)printf(%-4d,m*n);m+;printf(n
15、);n+;n=102IC-MSPfor循环嵌套 for().for().内内循循环环外外循循环环IC-MSPv 题目:题目:for嵌套循环输出九九乘法表嵌套循环输出九九乘法表 1*1=1 1*2=2 1*3=3 1*9=9 2*1=2 2*2=4 2*3=6 2*9=18 3*1=3 3*2=6 3*3=9 3*9=27 9*1=9 9*2=18 9*3=279*9=81 while循环嵌套示例循环嵌套示例 IC-MSPforfor循环嵌套示例v 编写程序,输出编写程序,输出如图如图所示的所示的“九九乘法表九九乘法表”。1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=94*1=
16、4 4*2=8 4*3=12 4*4=169*1=9 9*2=18 9*3=27 9*4=36 9*9=81IC-MSPfor循环示例#include void main()int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%d*%d=%-2d,i,j,j*i);printf(n);内存内存iji=9?条件表达式成立,条件表达式成立,进入内循环进入内循环1IC-MSPfor循环示例 外循环1,内循环1#include void main()int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%d*%d=%-2d,i,
17、j,j*i);printf(n);内存内存ijj=1 i=1j=i?条件表达式成立,条件表达式成立,输出输出i,j,i*j11*1=111IC-MSP#include void main()int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%d*%d=%-2d,i,j,j*i);printf(n);内存内存ijj=2 i=1j=i?条件表达式不成立,条件表达式不成立,退出内循环,输出退出内循环,输出n换行换行121forfor循环示例 外循环1,内循环2 IC-MSP#include void main()int i,j;for(i=1;i=9;i+)f
18、or(j=1;j=i;j+)printf(%d*%d=%-2d,i,j,j*i);printf(n);内存内存iji=2i=9?条件表达式成立,条件表达式成立,进入内循环进入内循环122forfor循环示例 外循环2 IC-MSP#include void main()int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%d*%d=%-2d,i,j,j*i);printf(n);内存内存ijj=1 i=2j=i?条件表达式成立,条件表达式成立,输出输出i,j,i*j11*1=1122*1=2forfor循环示例 外循环2,内循环1 IC-MSP#inclu
19、de void main()int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%d*%d=%-2d,i,j,j*i);printf(n);内存内存ijj=2 i=2j=i?条件表达式成立,条件表达式成立,输出输出i,j,i*j11*1=1222*1=2 2*2=4forfor循环示例 外循环2,内循环2 IC-MSP#include void main()int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%d*%d=%-2d,i,j,j*i);printf(n);内存内存ijj=3 i=2j=i?条件表达式不成立,
20、条件表达式不成立,退出内循环,输出退出内循环,输出n换行换行132forfor循环示例 外循环2,内循环3 IC-MSP#include void main()int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%d*%d=%-2d,i,j,j*i);printf(n);内存内存ijj=9 i=9j=i?条件表达式成立,条件表达式成立,输出输出i,j,i*j11*1=1992*1=2 2*2=43*1=3 3*2=69*9=813*3=94*1=3 4*2=8 4*3=12 4*4=169*1=9 9*2=189*8=72forfor循环示例 外循环9,内
21、循环9 IC-MSP#include void main()int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%d*%d=%-2d,i,j,j*i);printf(n);内存内存ijj=10 i=9j=i?条件表达式不成立,条件表达式不成立,退出内循环,输出退出内循环,输出n换行换行1109forfor循环示例 外循环9,内循环10 IC-MSP#include void main()int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%d*%d=%-2d,i,j,j*i);printf(n);内存内存iji=10i
22、=9?条件表达式不成条件表达式不成立,退出外循环,立,退出外循环,执行外循环以外执行外循环以外的语句的语句11010forfor循环示例 外循环10 IC-MSPdo-while循环嵌套循环嵌套do .do .while().while()内内循循环环外外循循环环IC-MSPv 题目:题目:用用*打印直角三角形图案打印直角三角形图案*do-while循环嵌套示例循环嵌套示例#include void main()int i=1,j;do j=1;do printf(*);j+;while(j=i);printf(n);i+;while(i=5);过程演示过程演示 IC-MSPwhile和do-
23、while循环嵌套循环嵌套While().do .while().内内循循环环外外循循环环IC-MSPwhile和do-while循环嵌套循环嵌套do .while().while()内内循循环环外外循循环环IC-MSPwhile循环和for循环嵌套1 for().while().内内循循环环外外循循环环IC-MSPwhile循环和for循环嵌套2 while().for().内内循循环环外外循循环环IC-MSP题目:题目:用户任意输入一个整数,判断此数是否为素数?用户任意输入一个整数,判断此数是否为素数?while循环示例 IC-MSPwhile循环示例#include void main(
24、)int num,i;printf(Please input a number:);scanf(%d,&num);for(i=2;i num;i+)if(num%i=0)break;if(num=i)printf(%d是素数n,num);elseprintf(%d不是素数n,num);for(i=2;num%i!=0;i+);IC-MSP循环嵌套:break和continue语句IC-MSP输出输出300400间的全部素数。间的全部素数。v 题目:题目:int i,j,k;k=0;printf(300400之间的素数为:之间的素数为:n);for(i=300;i=400;i+)for(j=2;
25、j i;j+)break;if(i=j)printf(%4d,i);k+;if(k%5=0)printf(n);printf(n);过程演示过程演示 whilewhile循环和forfor循环嵌套示例示例 IC-MSP改进求素数的算法#include#include void main()int i,j,k=0,m;for(i=301;i 400;i+=2)m=sqrt(double)i);j=2;while(j m)printf(%4d,i);k+;if(k%5=0)printf(n);printf(n);IC-MSPdo-while循环和for循环嵌套1 for().do .while()
26、.内内循循环环外外循循环环IC-MSPdo-while循环和for循环嵌套2 do .for().while()内内循循环环外外循循环环IC-MSP*打印如图所示的星型图案:打印如图所示的星型图案:v 题目:题目:int i,j,k;/定义变量定义变量 i=1;do /外循环,控制次数外循环,控制次数 for(j=1;j=5-i;j+)/内循环输出空格内循环输出空格 printf();for(k=1;k=i*2-1;k+)/内循环输出内循环输出“*”printf(*);printf(n);i+;while(i=5);过程演示过程演示 while循环和for循环嵌套示例示例 IC-MSPv 题目
27、(课后例题):题目(课后例题):鸡兔同笼,共鸡兔同笼,共50只,腿共只,腿共160条,求兔子和条,求兔子和鸡各多少只?鸡各多少只?For循环例程IC-MSP#include void main()int i,j;for(i=1;i 50;i+)j=50-i;if(2*i+4*j=160)printf(鸡鸡%d只,兔只,兔%d只只!n,i,j);For循环例程IC-MSPv 题目:题目:公鸡公鸡5元一只,母鸡元一只,母鸡3元一只,小鸡元一只,小鸡1元三只。元三只。问问100元钱买一百只鸡,可以买公鸡母鸡小鸡元钱买一百只鸡,可以买公鸡母鸡小鸡各多少只?(要求公鸡,母鸡,小鸡都要有。)各多少只?(要
28、求公鸡,母鸡,小鸡都要有。)while和do-while循环嵌套示例循环嵌套示例#include void main()int i=1,j,k;while(i=20)j=1;do k=100-i-j;if(i*15+j*9+k=300)printf(i=%d,j=%d,k=%d,i,j,k);j+;while(j=33);printf(n);i+;IC-MSP用goto语句和if语句构成循环gotogoto语句为无条件转向语句,形式为:语句为无条件转向语句,形式为:goto goto 语句标号语句标号;例如:例如:goto loopgoto loop;(语句标号和标识符命名规则相同);(语句标
29、号和标识符命名规则相同)例:用例:用ifif语句和语句和gotogoto语句构成循环,求语句构成循环,求1-1001-100的累加和。的累加和。#include void main()int i=1,sum=0;loop:if(i=100)sum+=i;i+;goto loop;printf(sum=%d,sum);IC-MSP本章小结掌握典型例题及方法掌握典型例题及方法(1)(1)累加、连乘、累加、连乘、判断素数等判断素数等(2)(2)递推方法递推方法 IC-MSP总结 循环结构循环结构 for语句三个表达式语句三个表达式 循环变量赋初值循环变量赋初值 循环条件循环条件 循环变量增值循环变量
30、增值 for语句可以完全替换语句可以完全替换while语句语句 for语句的三个表达式都可以省略,但不管怎么省略,两个分号不能省略,语句的三个表达式都可以省略,但不管怎么省略,两个分号不能省略,而且这三个表达式的功能要在或前或后的其他地方以其他的形式表现出来而且这三个表达式的功能要在或前或后的其他地方以其他的形式表现出来 break 语句用在循环中时,可以直接终止循环,语句用在循环中时,可以直接终止循环,将控制转向本层循环后面的语句将控制转向本层循环后面的语句continue 语句的作用是跳过循环体中剩余的语句而执行下一次循环语句的作用是跳过循环体中剩余的语句而执行下一次循环 for语句嵌套的用法,可以和语句嵌套的用法,可以和while语句、语句、do-while语句可以互相嵌套语句可以互相嵌套 IC-MSP习题题目:题目:打印下列星型图案打印下列星型图案IC-MSP1.1.求求 1!+2!+3!+4!+5!1!+2!+3!+4!+5!2.2.求求1 1 3+5 3+5 7+.-99+101 7+.-99+101 习题 IC-MSP作业