《2 C语言上机-5循环结构-精品文档整理.pptx》由会员分享,可在线阅读,更多相关《2 C语言上机-5循环结构-精品文档整理.pptx(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 循环结构第五章 2习题:用用while语句实现循环语句实现循环循环体循环体N条件条件Y当型循环当型循环入口入口出口出口 3习题:循环体循环体N条件条件Yl当型循环当型循环条件条件 循环循环 次数次数Y循环体循环体 ?执行执行 3执行执行 2结束结束 循环体循环体Y ?循环体循环体Y ? ?N3次在循环入口处判断当条件为真时执行循环 4习题: while语句的一般形式如下: while (表达式) 语句“真真”时时执行循环体语句执行循环体语句“假假”时不执行时不执行循环条件表达式循环条件表达式while循环的特点是:循环的特点是:先判断条件表达式,后执行循环体语句先判断条件表达式,后执行循环体
2、语句 5习题:例5.1求1+2+3+100,即 解题思路: 这是累加问题,需要先后将100个数相加 要重复100次加法运算,可用循环实现 后一个数是前一个数加1而得 加完上一个数i后,使i加1可得到下一个数1001nn 6习题:int main() int i=1,sum=0; while (i=100) sum=sum+i; i+; printf(sum=%dn,sum); 复合语句复合语句不能少不能少 7 do-while语句的一般形式为:语句的一般形式为: do 语句语句 while (表达式表达式) 8习题:l直到型循环直到型循环在循环出口处判断,当条在循环出口处判断,当条件为真时继续
3、执行循环,件为真时继续执行循环,直到条件为假时为止。直到条件为假时为止。条件条件NY循环体循环体条件条件 循环循环 次数次数执行执行 3执行执行 2结束结束3次Y条件条件循环体循环体Y条件条件循环体循环体Y条件条件循环体循环体执行执行 4条件条件循环体循环体N4 4次 9习题: 例例5.2 用用dowhile语句求语句求: 1+2+3+100,即,即1001nn 10习题:解题思路:解题思路:i 100YNsum=sum+ii=i+1sum=0i=1 i=1; sum=0; do sum=sum+i; i+; while(i=100); 11习题:#include int main() int
4、 i=1,sum=0; do sum=sum+i; i+; while(i=100); printf(sum=%dn,sum); return 0; 12for语句的一般形式为语句的一般形式为 for(表达式表达式1;表达式;表达式2;表达式;表达式3) 语句语句设置初始条件,只执行一设置初始条件,只执行一次。可以为零个、一个或次。可以为零个、一个或多个变量设置初值多个变量设置初值执行执行 13习题:for语句的一般形式为语句的一般形式为 for(表达式表达式1;表达式;表达式2;表达式;表达式3) 语句语句循环条件表达式,用来判定是否继续循环条件表达式,用来判定是否继续循环。在每次执行循环体
5、前先执行此循环。在每次执行循环体前先执行此表达式,决定是否继续执行循环表达式,决定是否继续执行循环 14习题:for语句的一般形式为语句的一般形式为 for(表达式表达式1;表达式;表达式2;表达式;表达式3) 语句语句作为循环的调整器,例如作为循环的调整器,例如使循环变量增值,它是在使循环变量增值,它是在执行完循环体后才进行的执行完循环体后才进行的 15习题:for语句的执行过程语句的执行过程:(1) 先求解表达式先求解表达式1(2) 求解表达式求解表达式2,若,若其其值为真,执行循环体,然后执行值为真,执行循环体,然后执行下面第下面第(3)步。若为假,则结束循环,转到第步。若为假,则结束循
6、环,转到第(5)步步(3) 求解表达式求解表达式3(4) 转回上面步骤转回上面步骤(2)继续执行继续执行(5) 循环结束,执行循环结束,执行for语句下面的一个语句语句下面的一个语句 16习题:1.用for语句求 ? 1001nnInt main() int n ,sum=0; for(n=1; n=100; n+) sum += n ; printf(sum=%dn,sum); return 0; 171.打印出打印出ASC码序列中从码序列中从33127(十进制)的字符对照表。(十进制)的字符对照表。#include int main() int i;for (i=33; i128; i+)
7、printf(%d - %ct,i,i);练习: 182.求40以内的能同时被3和4整除的数?#include int main()int x=1;for(;x=40;+x)if(x%3)=0 & (x%4)=0)printf(num(3,4)=%dn,x);return 0; 193.3.编写程序,打印100100200200中不能被3 3整除的数。#include int main()int n;for(n=100;n=200; n+)if(n%3 !=0) /*n不能被3整除*/printf(%d,n); 20一个循环体内又包含另一个完整的循环结构,称为一个循环体内又包含另一个完整的循环
8、结构,称为循循环的嵌套环的嵌套内嵌的循环中还可以嵌套循环,这就是多层循环内嵌的循环中还可以嵌套循环,这就是多层循环3种循环种循环(while循环、循环、dowhile循环和循环和for循环循环)可以可以互相嵌套互相嵌套 21嵌套结构规则嵌套结构规则 外循环外循环内循环内循环交叉循环交叉循环外循环外循环入口入口内循环出口内循环出口内循环出口内循环出口外循环出口外循环出口 22例:输出小九九乘法表例:输出小九九乘法表?12 43 6 94 8 12 165 10 15 20 256 12 18 24 30 367 14 21 28 35 42 498 16 24 32 40 48 56 649 1
9、8 27 36 45 54 63 72 81 23#include int main() int i;int j;for (i=1;i=9;i+)for(j=1;j=i;j+)printf(%d ,i*j);printf(n); 24int main()int i , j ; for (i=1 ; i= 5 ; i+ ) /行 for ( j=1 ; j= 8 ; j+ )/列 printf (”*”) ; printf (“n”); 循环嵌套循环嵌套例例: : 打印如下图形:打印如下图形: * * * * * * * * * * * * * * * * * * * * * * * * * *
10、 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *4.3.4 break语句和continue语句 break语句可以用来从循环体内跳出循环体,即提前结束循环语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句,接着执行循环下面的语句 continue语句作用为结束本次循环,即跳过循环体中下面尚语句作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。未执行的语句,接着进行下一
11、次是否执行循环的判定。 continue和break的区别:continue语句只结束本次循环;break语句则是结束整个循环过程。while(表达式1) if(表达式2) continue; while(表达式1) if(表达式2) break; 例例: float pi=3.14159;for(r=1;r100) break; printf(r=%f,area=%fn,r,area);计算计算r=1r=1到到r=10r=10时的圆面积,直到面积时的圆面积,直到面积areaarea大于大于100100为止为止。在。在forfor循环内:当循环内:当area100area100时,执行时,执行
12、breakbreak语句,提语句,提前结束循环,即不再继续其余的几次循环前结束循环,即不再继续其余的几次循环。例例. 输输出出100200之间的不能被之间的不能被3整除的数。整除的数。#include void main()int n;for (n=100;n=200;n+) if (n%3=0) continue; printf(%d ,n);例例+1:输入正整数,判断是否为素数输入正整数,判断是否为素数(用用for 语句实现语句实现)#include math.hmain( ) int n , i , k ;scanf (%d , &n ) ;k = sqrt ( n ) ;for ( i
13、 = 2 ; i = k ; i + )if ( n % i = 0 ) break ; /找到因子,不需继续找if ( i = k ) printf (“n =%d : No !” , n ) ;/有= k的因子else printf ( n = %d : Yes ! , n ) ;循环的嵌套(多重循环):在循环语句中包含循环语句例例+2:反复输入正整数,判断是否为素数,直到输入反复输入正整数,判断是否为素数,直到输入0为止为止思考:while 语句是否可以用 for 语句实现?main( ) int n , i , k ;scanf ( %d , &n ) ;while ( n != 0
14、) k = sqrt ( n ) ;for ( i = 2 ; i k ) printf (n = %d : Yes !, n ) ;else printf (n = %d : No ! , n ) ;scanf (%d , &n ) ;main( ) int n , i , k ;scanf ( %d , &n ) ;while ( n != 0 ) k = sqrt ( n ) ;for ( i = 2 ; i k ) printf (n = %d : Yes !, n ) ;else printf (n = %d : No ! , n ) ;scanf (%d , &n ) ;例例+3:
15、求求100200间的全部素数间的全部素数#include math.hmain( )int n , i , k ;for ( n = 101 ; n = 200 ; n + ) k = sqrt( n ) ;for ( i = 2 ; i k ) printf ( %6d, n ) ;例例+4:用用/41 - 1/3 + 1/5 - 1/7 + 公式求公式求的近似值,直到最的近似值,直到最后一项的绝对值小于后一项的绝对值小于10e-6为止为止题目分析题目分析: 输入:输入:无无处理:处理:累加求和,求累加求和,求 n 个数据(实数类型)之和个数据(实数类型)之和 实现方法:实现方法:可用循环实
16、现,循环可用循环实现,循环n次,每次加入一个数据项次,每次加入一个数据项 通项形式通项形式: ( -1 )k+1 ( 1 / ( 2k-1 ) ) 循环次数:循环次数:未知未知,按按所所加入数据项的值加入数据项的值决定循环是否执行决定循环是否执行输出:输出:运算结果运算结果 输出数据类型输出数据类型 floatmain( ) float pi = 0.0 , t = 1.0 ;int n = 1 , k = 1 ;while ( t 1e-6 ) pi = pi + k * t ; n = n + 2 ;t = 1.0 / n ; k = - k ; / ( -1 )k+1 ( 1 / ( 2k-1 ) )pi = 4 * pi ;printf(“ n pi = %10.6f ” , pi ) ;例例+4:用用1 - 1/3 + 1/5 - 1/7 + 公式求公式求的近似值,直到最的近似值,直到最后一项的绝对值小于后一项的绝对值小于10e-6为止为止