c语言程序设计一体化教学平台,C语言程序设计教学做一体化-模块.ppt

《C语言程序设计教学做一体化-模块.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计教学做一体化-模块.ppt(42页珍藏版)》请在人人文库网上搜索。

1、C语言程序设计 教学做一体化 主编 滕泓虬 中国水利水电出版社,模块五 循环结构程序设计,5.1 概述 5.2 goto语句以及用goto语句构成循环 5.3 while语句 5.4 do-while语句 5.5 for语句 5.6 循环嵌套 5.7 几种循环的比较 5.8 break语句和 continue语句 5.9 程序举例,C语言中,可用以语句实现循环:,(1) 用goto语句和if语句构成循环; (2) 用while 语句; (3) 用do-while语句; (4) 用for语句。,5.1 while语句,1、格式: while (表达式) 循环体;,2、执行过程:首先计算表达式的值。

2、,若表达式成立(非0),执行一遍循环体,再判断表达式,若成立再执行循环体当表达式不成立(其值为0)时退出循环,跳转到循环体之后的语句执行。,3、特点:先判断表达式,然后执行循环体。若表达式一开始就不成立,则循环体一次也不执行。,4、注意: (1)、循环部分为多个语句时,必须用大括号构成复合语句; (2) 、在while 语句之前应给循环变量赋初值。 (3)、循环体中应有语句修改控制条件,使循环趋向结束。,1+2+3+4+5=15,分析: 需要几个变量? 输入, 输出分别是什么? 程序大体可分为几个步骤?,实例5_1 :计算 sum=1+2+3+100,i =1; sum=0;,i =100,s。

3、um=sum+i; i= i+1;,(a) 结构流程图,(b) N-S流程图,假(0),真(非0),main( ) int i,sum = 0; i = 1; while ( i=100) sum = sum + i ; i = i +1; printf ( “%d” , sum) ; ,i + ;,5.2 dowhile 循环语句,1、格式:do 循环体; while (表达式);,2、执行过程:先执行一遍循环体,然后判断表达式,当表达式的值为非0(真)时,返回重新执行循环体;如此反复,直到表达式的值为0(假)时退出循环。,3、特点:先执行循环体,后判断循环条件(表达式)是否成立,即循环体至。

4、少执行一次。,4、推荐书写格式: do while();,例: 计算 sum=1+2+3+100,i=100,i=1,sum=sum+i; i=i+1;,真,假,main ( ) int i , sum; sum=0; i=1; do sum=sum+i; i+; while (i=100) ; printf(“sum=%dn”, sum); ,一般情况下,用while语句和do-while语句处理同一问题时,若二者的循环体一样,则结果也一样。但是如果while后面的表达式一开始就为假(0)时,两种循环的结果是不同的。,while语句和do-while语句的比较:,5.3 for语句,1、格式。

5、:,for (表达式1 ;表达式2 ;表达式3) 循环体;,其中: 表达式1规定循环控制变量的初始值; 表达式2指出循环条件表达式; 表达式3修改循环变量的值;,eg410.c,for语句最易理解的形式: for (循环变量赋初值;循环条件;循环变量增值) 循环体;,2、功能: 先求解表达式1,给循环控制变量赋初值; 求解表达式2,若为真(非0),执行循环体; 求解表达式3,它改变了表达式2中的某个变量; 返回; 直到条件为假(0),退出循环。,main() int i ,sum=0; for (i=1; i=100;i+) sum=sum+i; printf(“sum=%d”,sum); ,。

6、实例5_3 :计算 sum=1+2+3+100,(1) 可以省略表达式1 sum = 0 ; for ( ; i=100 ; i+ ) sum = sum+i ;,3. 说明,i=1;,(2) 可以省略表达式3 sum = 0 ; for ( i=1 ; i=100 ; ) sum = sum+i ;,i+ ;,(3) 同时省略表达式1和表达式3 sum = 0 ; i=1 ; for ( ; i=100 ; ) sum = sum+i ; i+ ; ,(4) 3个表达式都可以省略:,for ( ; ; ) 循环体;,while (1) 循环体;,表达式2一般不会省略, 若省略表达式2循环将不。

7、能停止。 从语法上讲是正确的,但一般没有实际意义。,5.4 循环语句的嵌套,一个循环体内又包含另一个完整的循环结构,称为循环嵌套。按嵌套的层次可分为两重嵌套、三重嵌套或多重循环。,循环嵌套流程的执行情况:,for (i=1; i=5; i+) for (j=1; j=3; j+) sum=sum+j; x=i+j; ,实例5_6 编写程序,在屏幕上显示如下图案:,* * * * *,实例5_7 编写程序,在屏幕上显示如下图案:,* * * * * * * * * * * * * * *,实例5_8 编写程序,在屏幕上显示如下图案:,* * * * * * * * * * * * * * *,f。

8、or (i=1; i=5; i+) for (j=1; ? ;j+) printf(“*”); printf(“n”); ,在设计循环嵌套时要注意:应该“在一个循环体内包含另一个完整的循环结构”,不论嵌套次数多少,要遵守这个原则。,while ( ) do while( ); ,do for ( ; ; ) while( );,5.5 break语句和continue语句,1、格式:,break;,2、功能:在循环体或switch语句中,执行到break语句时,终止当前语句的执行,程序流程转移到当前循环语句或switch语句的后继语句去执行,1. break语句,3、说明:,若是多重循环,br。

9、eak只能使流程跳出离break 最近的一层;,break只用于switch语句和循环语句;,实例5_11 计算 r=1到 r=10时的圆面积,直到面积大 于100为止。,main( ) int r ; float area = 1, pi = 3.1415;,for ( r = 1 ; r 100 ) break; printf (“%f ”, area ); ,1、格式:,continue;,2、功能:在循环体中,当执行到continue语句时,跳过循环体内位于其后的其它语句,接着进行下一次是否执行循环的判定;即“提前结束本次循环”,2 continue语句,3、说明:,、continue。

10、语句只能用于循环语句中,它是一种具有特殊功能的转移语句;,、continue与break不同:continue语句只结束本次循环,而不是终止整个循环的执行;而break语句则是结束整个循环,不再判断循环条件是否成立。,实例5_12 输出100200之间所有能被8整除的数。,main( ) int n ; for (n = 100 ; n = 200 ; n+) if (n % 8 != 0 ) /*如果n不能被8整除*/ continue; /*直接跳到n+处执行*/ printf (%5d, n); ,程序运行结果如下: 104 112 120 128 136 144 152 160 168。

11、 176 184 192 200,实例分析: (1)本实例要求输出100200之间所有能被8整除的数,即不能被8整除的数不用输出,所以可用continue语句跳过本次的输出printf (“%5d”, n);语句。 (2)本实例不使用continue,仅用if语句也可实现要求:if ( n % 8 = = 0 ) printf (“%5d”, n);,这里仅仅是举例说明continue的用法。,动手实践 若要输出100200之间所有不能被8整除的数,程序该怎么修改?,动手演练,基础练习 一 选择题 1、以下程序的输出结果是( ) # include main( ) int num = 0, i。

12、=1; while ( i = 7 ) num = num +i; printf(“%dn”, num ); A)1 B)2 C)3 D)4,2、以下程序的输出结果是( ) main( ) int num = 0; while ( num = 2 ) num = num + 1; printf(“%dn”, num ); A)1 B)1 C)1 D)1 2 2 2 3 3 4,3、以下程序段执行( )次。 x = 1 ; while ( ! x ) x = x * x ; A) 1 次 B)2次 C)死循环 D)0次,4、以下程序段执行( )次。 x = 0 ; while ( ! x ) x。

13、 = x * x ; A) 1 次 B)2次 C)死循环 D)0次 5、以下程序段执行( )次。 x = -1 ; do x = x * x ; while ( ! x ); A) 1 次 B)2次 C)死循环 D)0次,二 程序分析,1、下面程序的运行结果是: # include main( ) int i , sum=0 ; for ( i = 0 ; i = 5 ; i+ ) sum = sum + 1; printf(“sum = %dn”, sum ); ,二 程序分析,2、以下程序的输出结果是: main( ) int i , sum=0 ; for ( i = 0 ; i = 5。

14、 ; i+ ) sum = sum + i ; printf(“%dn”, sum ); ,3、程序的运行结果是: # include main( ) int i , j ,n, sum = 100; for(i = 5 ; i 0 ; i-) n = 0; for(j = 2 ; j=0 ; j-) n = n + i +j; sum = sum n; printf (“%d ” , sum ); ,# include main() char ch ; int digit =0, letter=0 , others=0; while ( ) if(ch = 0 ,4、以下程序的功能是从键盘上输入一行字符以回结束。分别求数字,字母和其它字符个数。在横线处填上正确的语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值