首页 第五章 循环结构

第五章 循环结构

举报
开通vip

第五章 循环结构null第4章内容回顾第4章内容回顾多重if结构就是在主if块的else部分中还包含其他if块 嵌套if结构是在主if块中还包含另一个if 语句 C语言规定,嵌套if结构中每个else部分总是属于前面最近的那个缺少对应的else部分的if语句 switch结构也可以用于多分支选择。用于分支条件是整型表达式,而且判断该整型表达式的值是否等于某些值(可以罗列的),然后根据不同的情况,执行不同的操作 条件运算符是 if–else 语句的另一种表现形式 (条件表达式?:注意是它是一个表达式,而不是语句)Page */43 ...

第五章 循环结构
null第4章内容回顾第4章内容回顾多重if结构就是在主if块的else部分中还包含其他if块 嵌套if结构是在主if块中还包含另一个if 语句 C语言规定,嵌套if结构中每个else部分总是属于前面最近的那个缺少对应的else部分的if语句 switch结构也可以用于多分支选择。用于分支条件是整型表达式,而且判断该整型表达式的值是否等于某些值(可以罗列的),然后根据不同的情况,执行不同的操作 条件运算符是 if–else 语句的另一种表现形式 (条件表达式?:注意是它是一个表达式,而不是语句)Page */43 第5章 第5章循环结构Page */43预习检查预习检查循环结构的重要性 while与do-while的区别 for与while/do-while的区别 Page */43本章目标 本章目标 理解为什么使用循环结构 熟练掌握while循环的使用 熟练掌握do-while循环的使用 理解while 和 do-while 循环的区别 熟练使用for循环 理解 break 和 continue 语句的用法 熟练使用嵌套循环 Page */43本章结构本章结构循环的必要性循环结构跳转语句嵌套循环C语言的各种循环结构do-while与while比较For循环嵌套循环Page */435-1 循环的必要性5-1 循环的必要性int result1,result2,result3; int result4,result5; result1 = 1 * 10; printf("1 × 10 = %d \n",result1); result2 = 2 * 10; printf("2 × 10 = %d \n",result2); result3 = 3 * 10; printf("3 × 10 = %d \n",result3); result4 = 4 * 10; printf("4 × 10 = %d \n",result4); result5 = 5 * 10; printf("5 × 10 = %d \n",result5); 1 × 10 =10 2 × 10 =20 3 × 10 =30 4 × 10 =40 5 × 10 =50输出结果重复语句Page */435-1 循环的必要性5-1 循环的必要性1 × 10 = 10 2 × 10 = 20 3 × 10 = 30 4 × 10 = 40 5 × 10 = 500 + 11 + 12 + 1上个数字 + 1...重复 (上个数字 +1) × 10Page */435-2 C 语言中的各种循环5-2 C 语言中的各种循环需要多次重复执行一个或多个任务的问题考虑使用 循环来解决Page */435-3 while 循环5-3 while 循环while (表达式) { 语句; }while 循环的一般语法:while (index < 100) { . . . . . . index++; } 计算表达式的值,当值为真(非0)时,执行循环体语句,一旦条件为假,就停止执行循环体。如果条件在开始时就为假,那么不执行循环体语句直接退出循环。 工作原理示例Page */435-3 while 循环5-3 while 循环[<初始化>] while(循环条件) { <循环体> }循环条件中使用的变量需要经过初始化Page */435-3 while 循环5-3 while 循环while (index < 100) { . . . . . . index++; }while 循环主体中的语句必须修改循环条件的值,否则会形成死循环while (1)Page */435-3 while 循环示例5-3 while 循环示例例:用while语句求1~100所有整数的和。#include int main() { int i; int sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("%d\n",sum); }Page */435-3 while 循环示例#include int main () { int num=1,result; while (num<=10) { result=num*10; printf("%d × 10 = %d \n",num,result); num++; } }5-3 while 循环示例1null102输出: 1 × 10 = 102 × 10 = 20 3 × 10 = 30 4 × 10 = 40 5 × 10 = 50 6 × 10 = 60 7 × 10 = 70 8 × 10 = 80 9 × 10 = 90 10 × 10 = 10011100Page */435-4 do-while 循环5-4 do-while 循环do { 语句; } while (表达式);while 循环的一般语法:do { . . . . . . scanf(“%c”,&answer); } while (answer != ’n’);它先执行循环体中的语句,然后再判断条件是否为真,如果为真则继续循环;如果为假,则终止循环。 工作原理示例Page */435-4 do-while 循环示例 5-4 do-while 循环示例 例:用do-while语句求1~100所有整数的和。#include int main() { int i,sum=0; i=1; do { sum+=i; i++; }while(i<=100); printf("%d\n",sum); }Page */435-5 嵌套 while 循环5-5 嵌套 while 循环 嵌套 while 循环的语法while(i <= 10) { . . . while (i <= j) { . . . . . . } . . . }外循环内循环只有在内循环完全结束后,外循环才会进行下一趟。Page */435-5 嵌套 while 循环示例 问题描述: 用“*”打印一个直角三角形图案。 图案如下所示: * ** *** **** ***** ****** ******* ******** ********* **********5-5 嵌套 while 循环示例 int main() { int nstars=1,stars; while(nstars <= 10) { stars=1; while (stars <= nstars) { printf("*"); stars++; } printf("\n"); nstars++; } }内层循环控制每行打印*号的个数外层循环控制打印的行数输出: * ** *** **** ***** ****** ******* ******** ********* **********Page */435-5 嵌套 do-while 循环5-5 嵌套 do-while 循环 嵌套 do-while 循环的语法do { . . . do { . . . }while( . . .) . . . }while( . . . ) 外循环内循环只有在内循环完全结束后,外循环才会进行下一趟。Page */435-5 嵌套 do-while 循环示例 5-5 嵌套 do-while 循环示例 int x; char i, ans; ans='y'; do { x=0; printf("\n请输入字符序列:"); do{ i=getchar(); x++; }while( i !='\n' ); printf("\n输入的字符数为:%d", --x); printf("\n是否需要输入更多序列 (Y/N) ? "); ans = getchar(); getchar(); }while(ans =='Y' || ans == 'y');输出: 请输入字符序列:GOODMORNING 输入的字符数为: 11 是否需要输入更多序列 (Y/N)?N内存中的变量 x i ans 0 y检查条件判断是否按下回车键。如果否, 循环继续执行后续语句;如果是,循环回到开始处。如按下 Y/y, 则循环从开始处执行,否则循环停止Page */435-6 比较 while 和 do-while循环5-6 比较 while 和 do-while循环while(循环条件) { 循环体; }do { 循环体; }while( 循环条件);do-while 循环是先执行后判断,所以,即使开始条件为假,循环体也至少会被执行一次。while循环是先判断后执行,所以,如果条件为假,则循环体一次也不会被执行。 比较 while 和 do-while 循环的工作原理Page */435-6 通过示例比较5-6 通过示例比较int value, r_digit; value = 0; do { printf("\n请输入一个数:"); scanf("%d", &value); if( value <= 0 ) printf("该数必须为正数\n"); }while( value <= 0 ); printf("\n反转后的数为:"); do { r_digit = value % 10; printf("%d", r_digit); value = value / 10; }while( value != 0 ); printf("\n");int value, r_digit; value = 0; while( value <= 0 ) { printf("\n请输入一个数:"); scanf("%d", &value); if( value <= 0 ) printf("该数必须为正数\n"); } printf("\n反转后的数为:"); while( value != 0 ) { r_digit = value % 10; printf("%d", r_digit); value = value / 10; } printf("\n"); 该程序用 do- while 循环将数字左右反转同样的程序用 while 循环将数字左右反转Page */43阶段 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 1阶段总结1循环结构的特点是,在给定条件成立时,重复执行某程序段,直到条件不成立为止 while 循环用于在给定条件为真的情况下重复执行一组操作,while循环先判断后执行 do-while循环先执行后判断,因此循环将至少执行一次 在循环中,需要修改循环变量的值以改变循环条件,否则有可能形成死循环Page */435-7 for 循环for( 表达式1 ; 表达式2 ; 表达式3 ) { 语句; } for 循环的一般语法:5-7 for 循环counter = 0; inum = 1; cnt = 100;counter == 10; inum < 25; cnt >0counter ++; inum = inum + 1; cnt--分号用于分隔 for 循环的 三个表达式1、计算表达式1的值,通常为循环变量赋初值; 2、计算表达式2的值,即判断循环条件是否为真,若值为真则执行循环体一次, 否则跳出循环; 3、计算表达式3的值,这里通常写更新循环变量的赋值表达式,然后转回第2步重复执行;工作原理1234Page */435-7 for 循环示例1 5-7 for 循环示例1 #include int main() { int number,count,factorial=1; printf("\n 请输入任意一个正整数:"); scanf("%d",&number); for(count = 1; count <=number; count++) factorial=factorial*count; printf("\n %d的阶乘 = %d\n",number,factorial); }请输入任意一个正整数:551121206循环执行五次5的阶乘 = 120Page */435-7 逗号运算符5-7 逗号运算符for(i = 0 , j = max ; i <=max ; i++, j--) printf(“\n%d + %d = %d”,i, j, i + j);for语句中的三个表达式都可以是逗号表达式 逗号表达式就是通过“,”运算符隔开的多个表达式组成的表达式,但是表达式2中,只有最后一个表达式起作用 逗号表达式从左往右计算。逗号运算符在 C 语言运算符中的优先级最低Page */435-7 for 循环示例2 5-7 for 循环示例2 #include int main() { int i,j,max; printf("请输入一个值 \n"); printf("根据这个值可以输出以下加法表:"); scanf("%d",&max); for(i = 0,j = max ; i <=max ; i++,j--) printf("\n %d + %d = %d",i,j,i + j); printf("\n"); }循环执行max次初始化语句只执行一次请输入一个值 根据这个值可以输出以下加法表:5 0 + 5 = 5 1 + 4 = 5 2 + 3 = 5 3 + 2 = 5 4 + 1 = 5 5 + 0 = 5Page */435-7 for 循环的表达式5-7 for 循环的表达式for 循环中有三个表达式 for 语句中的各个表达式都可以省略 分号分隔符不能省略for(<初始化循环变量> ;<循环条件> ; <修改循环变量的值>) { <循环体语句>; }可省略不能省略Page */435-7 省略表达式5-7 省略表达式int num=0; for(;num <= 10 ;num ++) { printf("%d\n",num*2); } for(num=1;;num++) { ... } for(i=1;i<=100;) { sum=sum+1; i++; } for( ; ; ) { printf("这将一直进行下去"); i = getchar(); if(i == 'X' || i == 'x') break; } Page */435-7 各种循环比较5-7 各种循环比较1.一种循环可以解决的问题,使用另外两种同样可行,只是方便程度不同。 2.while循环一般用于循环次数不定的情况,for循环一般用于循环次数确定的情况(也可以用于循环次数不定的情况),do-while循环一般用于至少需要执行一次的情况。 3.for循环和while循环是先判断条件是否为真,再执行循环体,因此,可出现循环一次也不执行的情况;do-while循环是先执行循环体,再判断条件是否为真,因此,循环体至少执行一次。 5-8 转移控制语句5-8 转移控制语句break 中断循环语句的执行 continue 中断本次循环的执行,进行下一次循环5-8 break 语句5-8 break 语句break语句可以改变程序的控制流 break语句用于do-while、while、for循环中时,可使程序终止循环而执行循环后面的语句 break语句通常在循环中与条件语句一起使用。若条件值为真,将跳出循环,控制流转向循环后面的语句 如果已执行break语句,就不会执行循环体中位于 break 语句后的语句 在多层循环中,一个break语句只向外跳一层Page */43null5-8 break语句break 语句的两个用途: 跳出switch语句 跳出本层循环Page */435-8 break 语句示例问题描述: 统计从键盘输入的若干个字符中有效字符的个数,以换行符作为输入结束。有效字符是指第一个空格符前面的字符,若输入字符中没有空格符,则有效字符为除了换行符之外的所有字符。 #include int main() { int count=0,ch; printf("\n 请输入一行字符:"); while((ch=getchar())!='\n') { if(ch==' ') break; count++; } printf("\n 共有 %d 个有效字符。\n",count); }5-8 break 语句示例H0_ 请输入一行字符:Hello world 共有 5 个 有效字符1循环执行 5 次5Page */435-9 continue 语句5-9 continue 语句continue 语句只能用在循环里 continue 语句的作用是跳过循环体中剩余的语句而执行下一次循环 对于while和do-while循环,continue 语句执行之后的动作是条件判断;对于for循环,随后的动作是变量更新 Page */435-9 continue语句5-9 continue语句continue语句的作用: 立即结束本次循环Page */435-9 continue 语句5-9 continue 语句while(…) { …… …… continue; …… …… }while(…) { …… …… break; …… …… }跳出整个循环继续下一次循环Page */435-9 continue 语句示例问题描述: 求整数1~100的累加值,但要求跳过所有个位为3的数。 #include int main() { int i,sum = 0; for(i=1; i<=100;i++) { if( i % 10 == 3) continue; sum += i; } printf("sum = %d \n",sum); }5-9 continue 语句示例null0131循环执行到 i = 13 78输出: sum = 45701循环执行到 i = 101 1014570Page */435-10 使用循环语句应注意的问题5-10 使用循环语句应注意的问题在循环体内除了修改控制次数外,不要把循环变量修改成其它无关的值,防止循环失去控制。 在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU 跨切循环层的次数。低效率:长循环在最外层 for (row=0; row<100; row++) { for ( col=0; col<5; col++ ) { sum = sum + a[row][col]; } }高效率:长循环在最内层 for (col=0; col<5; col++ ) { for (row=0; row<100; row++) { sum = sum + a[row][col]; } }Page */435-10 使用循环语句应注意的问题5-10 使用循环语句应注意的问题如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。示例a的程序比示例b多执行了N-1 次逻辑判断。(循环中不改变条件) 效率低但程序简洁 for (i=0; i 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 :素数是指只能被1和它本身整除的数。算法比较简单,先将这个数被2除,如果能整除,且该数又不等于2,则该数不是素数。如果该数不能被2整除,再看则是否能被3整除。如果被3整除,并且该数不等于3,则该数不是素数,否则再判断是否被4整除,依此类推,该数只要是能被小于本身的某个数整除时,就不是素数。 5-11 嵌套循环示例2int main() { int i,j,n; n=0; for(i=100;i<=200;i++) { j=2; while(i%j!=0) j++; if(i==j) { printf("%4d",i); n++; if(n%8==0) printf("\n"); } } printf("\n"); } 输出: 从100到200之间所有的素数为: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199控制每行输出8个素数如果第一个能被整除的数等于该数本身,则说明该数为素数从2到i之间寻找第一个能被整除的数Page */435-11 嵌套循环示例35-11 嵌套循环示例3int main() { int i,num; char answer; do { printf("请输入一个数:"); scanf("%d",&num); printf("\n"); for (i = 1; i <= 10; i++) { printf("="); } printf("\n 该数是 %d",num); printf("\n\n 您是否还要输入其他的数(y/n)?"); fflush(stdin); answer = getchar(); } while (answer != 'n'); }输出: 请输入一个数: 58 ========== 该数是 58 您是否还要输入其他的数(y/n)? y 请输入一个数: 64 ========== 该数是 64 您是否还要输入其他的数(y/n)? n Press any key to continuePage */43阶段总结 2阶段总结 2for 循环与 while 循环类似,属于先判断后执行 for 语句中有三个表达式:表达式1通常用来给循环变量赋初值;表达式2通常是循环条件;表达式3用来更新循环变量的值 for 语句中的各个表达式都可以省略,但要注意分号分隔符不能省略 如果省略表达式2和表达式3需要在循环体内设法结束循环,否则会导致死循环Page */43阶段总结 2阶段总结 2break 语句用在循环中时,可以直接终止循环,将控制转向循环后面的语句 continue 语句的作用是跳过循环体中剩余的语句而执行下一次循环 嵌套循环时,必须将被嵌套的循环语句完整地包含在外层循环的循环体内Page */43
本文档为【第五章 循环结构】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_472922
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2013-07-09
浏览量:14