新编C语言案例教程 教学课件 ppt 作者 樊秋月 陈明芳 单元 C语言程序设计的三种基本类型.ppt
文本预览下载声明
* 语句形式: for(表达式1;表达式2;表达式3) { 循环体 } for循环语句 说明: 表达式1:为循环变量赋初值 表达式2:作为控制循环的条件 表达式3:改变循环控制变量 求解表达式1 表达式2 语 句 求解表达式3 for语句的下一个语句 成立 不成立 * 用for编写程序,将个位数为6,且能被3整除的三位数全部打印输出(每行打印10个数据),最后输出这种数的个数。 . 条件? 语句(循环体) 真 假 (后续语句) for 计算表达式1 计算表达式2 计算表达式3 例: #include stdio.h main() { int count = 0, num; for (num = 126; num=996; num +=10) { if (num%3 == 0) { printf (%4d, num); count++; if (count%10 == 0) printf (\n); } } printf (Count = %d\n, count); } 解: 计算表达式1,为循环变量赋初值。再计算表达式2,若它成立,进入循环体,去执行语句;否则终止循环,去执行for的后续语句。执行完循环体后,去计算表达式3,修改循环条件。又计算表达式2,以判定是否进入下一次循环。 * 编写程序,求100~999之间所有的水仙花数。所谓“水仙花数”,即是一个三位数,它个位、十位、百位数字的立方和,恰好等于该数本身。 例: (1) 程序实现 (2) 分析与讨论 #include stdio.h main() { int i, j = 1; int nf, ns, nt; for (i =100; i=999; i++) { nf = i – i/10*10; ns = (i – i/100*100)/10; nt = i/100; nf = nf * nf * nf; ns = ns * ns * ns; nt = nt * nt * nt; if ((nf + ns + nt) == i) { printf (The %ds number is %d\n, j, i); j++; } } . 用for循环时,循环从100开始,到999止,每次加1。对该区间里的每个数进行测试,看是否满足“个位、十位、百位数字的立方和,恰等于该数本身”的要求。如果满足,就是所求。 . 这里又给出一种分离个位、十位等数字的方法。即若i是一个三位数,那么: nf = i – i/10*10; /* 个位数 */ ns = (i – i/100*100)/10; /* 十位数 */ nt = i/100; /* 百位数 */ 应该记住这些方法。 * 有关for语句的几点说明 (1)表达式1、表达式2和表达式3可以是任何类型的表达式。 (2)任何一个表达式都可以省略,但不能省略分号。 * 省略表达式1时,应在for语句前给循环变量赋初值; 如: i=1; for( ;i=100;i++) 省略表达式2,即认为表达式2始终为真,则应另外设计循环结束的语句,否则会是无限循环。(break) 省略表达式3时,在循环体内应含有修改循环控制变量的语句,并能保证循环正常结束。 如: for(i=1;i=100; ) { sum=sum+i; i++; } * (3)for语句中的表达式1和表达式3可以用逗号表达式。 例如,求n!的for循环可改写如下: for(fac=1,i=1; i=n; i++ ) fac *= i; 有关for语句的几点说明 * break和continue语句 . break语句的一般形式是: 例: 阅读下面的程序,它输出什么结果? #includestdio.h main() { int x; for(x = 1; x=10; x++) { if (x == 5) break; printf (%d\t, x); } printf (\nBroke out of loop
显示全部