if ifelse ifelse ifelse switch 2 sum 0
















![循环体中break和continue语句 [例4 -4, P 70]素数的判定问 题:除了1和自身,不能被 别的数整除 int i, m; scanf("%d", &m); for( i 循环体中break和continue语句 [例4 -4, P 70]素数的判定问 题:除了1和自身,不能被 别的数整除 int i, m; scanf("%d", &m); for( i](https://slidetodoc.com/presentation_image_h2/ff37d913f064c9b880ef3e1e953bc02a/image-17.jpg)









![[例4 -8,P 78] n个成绩的最高分 int n, i, grade, max; printf("Enter n: "); scanf ("%d", [例4 -8,P 78] n个成绩的最高分 int n, i, grade, max; printf("Enter n: "); scanf ("%d",](https://slidetodoc.com/presentation_image_h2/ff37d913f064c9b880ef3e1e953bc02a/image-27.jpg)
![[例4 -8,P 78] n个成绩的最高分 for( i = 1; i < n; i++ ) { [例4 -8,P 78] n个成绩的最高分 for( i = 1; i < n; i++ ) {](https://slidetodoc.com/presentation_image_h2/ff37d913f064c9b880ef3e1e953bc02a/image-28.jpg)

![[P 79] 如果一批成绩以负数结尾 求最高分 while( mark>=0 ) { if( max < mark ) max [P 79] 如果一批成绩以负数结尾 求最高分 while( mark>=0 ) { if( max < mark ) max](https://slidetodoc.com/presentation_image_h2/ff37d913f064c9b880ef3e1e953bc02a/image-30.jpg)









![[例4 -12,P 82]穷举算法(搬砖) for( men=0; men<=45; men++ ) for( women=0; women<=45; women++ ) 合计执行 [例4 -12,P 82]穷举算法(搬砖) for( men=0; men<=45; men++ ) for( women=0; women<=45; women++ ) 合计执行](https://slidetodoc.com/presentation_image_h2/ff37d913f064c9b880ef3e1e953bc02a/image-40.jpg)
![改进[1] for( men=0; men<=45; men++ ) 合计执行 for( women=0; women<=45; women++ ) 多少次循 { 改进[1] for( men=0; men<=45; men++ ) 合计执行 for( women=0; women<=45; women++ ) 多少次循 {](https://slidetodoc.com/presentation_image_h2/ff37d913f064c9b880ef3e1e953bc02a/image-41.jpg)
![改进[2] 编写循环程序时 注意代码的执行效率 for( men=0; men<=15; men++ ) 合计执行 for( women=0; women<=22; women++ ) 改进[2] 编写循环程序时 注意代码的执行效率 for( men=0; men<=15; men++ ) 合计执行 for( women=0; women<=22; women++ )](https://slidetodoc.com/presentation_image_h2/ff37d913f064c9b880ef3e1e953bc02a/image-42.jpg)


- Slides: 44
回顾分支结构 if � if/else if/…/else if/else � switch � 2
sum = 0; denominator = 1; flag = 1; item = 1. 0; item的初值有多重要? while( fabs(item) > 0. 0001 ) { item = flag * 1. 0/denominator; sum = sum + item; /* 准备下一项 */ flag = -flag; denominator = denominator + 2; } printf( "pi = %. 4 fn", sum * 4 ); 10
统计学生成绩 scanf("%lf", &grade); while( grade >=0 ) { sum = sum + grade; num ++; if( grade < 60 ) failed ++; /* 准备下个数据 */ scanf("%lf", &grade); } if( num != 0 ) printf("Grade average is %fn", sum/num); printf("Number of failures is %dn", failed); 12
计算整数的位数 count = 0; do { number = number / 10; count ++; } while ( number!=0 ); 改为下面的while循环如何? count = 1; while (( abs(number)>9 number!=0 ) ) { count ++; number = number / 10; } printf("it contains %d digitals. n", count); 16
循环体中break和continue语句 [例4 -4, P 70]素数的判定问 题:除了1和自身,不能被 别的数整除 int i, m; scanf("%d", &m); for( i = 2; i<=m/2; i++ ) if( m%i==0 ) break; if( i>m/2 && m!=1 ) printf("Yesn"); else printf("No!n"); 17
[例4 -8,P 78] n个成绩的最高分 int n, i, grade, max; printf("Enter n: "); scanf ("%d", &n); printf("Enter %d marks: ", n); scanf ("%d", &mark); max = mark; /* 剩余成绩循环处理 */ /* 次数未知,适合while语句 */ 27
[例4 -8,P 78] n个成绩的最高分 for( i = 1; i < n; i++ ) { scanf ("%d", &mark); if( max < mark ) max = mark; } printf("Max = %dn", max); 28
[P 79] 如果一批成绩以负数结尾 求最高分 while( mark>=0 ) { if( max < mark ) max = mark; scanf ("%d", &mark); } printf("Max = %dn", max); 30
#include<stdio. h> #include<math. h> int count, m, n, i; count = 0; for( m = 2; m<100; m++ ) { n = sqrt(m); for( i=2; i<=n; i++ ) if( m%i==0 ) break; if( i<=n ) continue; printf("%6 d", m); count ++; if( count%10==0 ) printf("n"); 36 }
[例4 -12,P 82]穷举算法(搬砖) for( men=0; men<=45; men++ ) for( women=0; women<=45; women++ ) 合计执行 for( child=0; child<=45; child++ ) 多少次循 if( men+women+child==45 && 环操作? men*3+women*2+child*0. 5==45 ) 45*45*45 { printf("men=%d, women=%d, child=%dn", men, women, child); } 40
改进[1] for( men=0; men<=45; men++ ) 合计执行 for( women=0; women<=45; women++ ) 多少次循 { 环操作? child = 45 -men-women; 45*45 if( child>=0 && men*3+women*2+child*0. 5==45 ) { printf("men=%d, women=%d, child=%dn", men, women, child); } 41 }
改进[2] 编写循环程序时 注意代码的执行效率 for( men=0; men<=15; men++ ) 合计执行 for( women=0; women<=22; women++ ) 多少次循 { 环操作? child = 45 -men-women; 15*22 if( men*3+women*2+child*0. 5==45 ) { printf("men=%d, women=%d, child=%dn", men, women, child); } } 42
作业 � 课本的习题 3和习题 4 http: //www. cad. zju. edu. cn/home/xgliu/C 2016 /homework-3 -4. doc 10月25日提交 44