第5章 循环结构程序设计

合集下载

C语言 第五章-循环结构程序设计

C语言 第五章-循环结构程序设计

执行过程如图所示。其中i为外循环的控制变 量,j为内循环的控制变量。
i =0 当 i <=10
j=0 当 j<=10
printf(“%d ”, i*j ) j++ i++
例4 编程打印“九九乘法表”。
分析:九九乘法表 1×1=1 1×2=2 1×3=3 … 2×1=2 2×2=4 2×3=6 … 3×1=3 3×2=6 3×3=9 … …… 9×1=9 9×2=18 9×3=27 …
i ++ ; } while ( i <= 100 ) ; printf ( " %d " , sum ) ; }
结果相同
同样是下列程序,但如果while后面的表达式结果一开始就是 假时,两种循环结果会不一样。
main ( ) /*程序1*/
{ int i , sum = 0 ; i = 101 ;
所以程序需要设计成二重循环。由于题目只 要求找到一组解,所以在循环过程中只要找到一组 满足条件的x, y, z就可以跳出循环。
跳出循环的方法可以采用break语句,但是, 因为是二重循环,所以要考虑使用break是否方便。
程序 百钱买百鸡问题。 void main ( ) { int x , y , z ;
打印第2行 ( i = 2 ) for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/
…… 打印第9行 ( i = 9 )
for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/

第5章 循环结构程序设计

第5章 循环结构程序设计
龙诚数码:
do-while语句的简单应用 do-while语句的简单应用
【例5.3】用辗转相除法求m和n的最大公约数 5.3】用辗转相除法求m
定义m、 、 定义 、n、r m<n T F m和n交换 和 交换 r=m%n m=n n=r 当r != 0时 时 输出最大公约数m 输出最: 算法和程序:
main( ) { int m,n,r; scanf("%d, %d",&m,&n); if (m<n) { r=m; m=n; n=r; } do { r=m%n; 程序运行情况如下: 程序运行情况如下: m=n; 24, 60 24, n=r; 12 }while(r!=0); while(r!=0 printf("%d\n",m); }
for语句的算法 for语句的算法
流程图 计算表达式1 计算表达式
表达式2 表达式 为真? 为真
15
N-S结构图 结构图 for (表达式 表达式 表达式 表达式1;表达式 表达式3) 表达式 表达式2;表达式 N 语句
Y 语句 计算表达式3 计算表达式
例如: 例如: 可部分或全部省略, 可部分或全部省略, main( ) 但“;”不可省略 { int i,sum; sum=0; for ( i=1; i<=100; i++) i=1 i<=100; sum=sum+i; sum=sum+i; printf("sum=%d\n",sum); }
龙诚数码:
18
for语句的简单应用 for语句的简单应用
【例5.4】求n! ,即计算p=1×2×3×…×n 5.4】 即计算p=1× 的值。 的值。

清华大学VB经典教案第五节——循环结构程序设计

清华大学VB经典教案第五节——循环结构程序设计

每循环一次,循环变量的值自动加一个
步长,然后判断循环变量的值是否“超 越”终值,如果“超越”,则结束循环,
否则进行下一次循环,用如图5-1所示
的流程图表示。
说明: (1)循环变量、初值、终值、步长都是数值类型; (2)步长可正可负,但不能为0,否则,循环将变成死循环或 无限循环;步长为1时,[Step <步长>]可以省略; (3)当初值小于终值时,步长为正;当初值大于终值时,步 长为负; 通过初值、终值、步长可以计算循环体的循环次数,计算公 式如下: 循环次数=Int((终值-初值)/步长)+1 注意:如果循环次数≤0,即当初值小于终值时,步长为负 ,或者当初值大于终值时,步长为正,则循环体一次都不执行。 (4)Exit For可以退出其所在层的For…Next循环,这一点在 多重循环中尤为重要。
分析:假设某个三位的正整数为n, 要判断n是否是“水仙花数”,关键是 要求出n的百位数字a、十位数字b和个 位数字c,即 百位数字a = n \ 100 十位数字b = n \ 10 Mod 10 个位数字c = n Mod 10
5.2 While…Wend循环 While…Wend循环用于循环次数未知的循环,其语法格式 如下: While <条件表达式> [<语句组>] Wend 当条件表达式的值为True时执行循环体,为False时结束 循环,用如图5-5所示的流程图表示。
入项;组合框是由文本框和列表框组合而成,因此,组合框 具有文本框和列表框的功能,既可以输入项也可以选择项,
但任意时刻最多只能选择一个项,选中的项将显示在组合框
中。
5.5.1 列表框 1.列表框的常用属性 (1)List属性 存放列表框中的所有项,是一个一维字符串数组,数组 名为List,下标为项的索引值,从上到下,第一个项的索引值 为0,第二个项的索引值为1,以此类推。 (2)ListCount属性 返回列表框中项的个数。 (3)ListIndex属性 返回当前选中项的索引值。若有多个项被选中,则返回 最后一个选中项的索引值;也可以给该属性赋一个整数值来选 中对应索引值的项;如果没有选中任何项,ListIndex属性值 为-1。 (4)Selected属性 判断列表框中的某个项是否被选中,选中为True,否则 为False。该属性是一个一维布尔或逻辑型数组,数组名为 Selected,下标为项的索引值。

C语言程序设计_05循环结构程序设计

C语言程序设计_05循环结构程序设计

5.2 DO…WHILE循环结构 5.2.1 DO…WHILE语句的格式 DO…WHILE语句的一般格式为: DO 语句 WHILE(表达式); DO…WHILE语句中的表达式表示循环的条件,可 以是任何表达式,常用的是关系表达式和逻辑表达 式。表达式必须加圆括号。语句是重复执行的部分, 称作循环体。
由亍循环体在表达式2乊后表达式3乊前执行所以把循环体语句放在表达式3的开头循环体语句不原来的i构成逗号表达式作为循环语句新的表达式3从而也就没有循环体语句了
第5章 循环结构程序设计
5.1 WHILE循环结构 5.2 DO…WHILE循环结构 5.3 FOR循环结构 5.4 与循环有关的控制语句 5.5 3种循环语句的比较 5.6 循环的嵌套 5.7 循环结构程序举例 本章小结
图5-6 FOR语句执行过 程
FOR语句的执行过程如图5-6所示。具体由以下几步 完成: (1)求表达式1。 (2)求表达式2,并判定其值为0或非0。若值为非0, 转步骤(3);否则结束FOR语句。 (3)执行语句,然后求表达式3。 (4)转向步骤(2)。 由FOR语句的执行流程可知,表达式1的作用是为循 环控制的有关变量赋初值,表达式2是循环控制条件, 表达式3用于修正有关变量,语句是重复执行部分。
【例5.7】输入20个数,求出其中的最大值与最小值。
5.3.3 FOR语句的各种变形 1.在FOR语句中省略表达式 FOR语句中的3个表达式可以部分或全部省略,下面 给出语句的4种基本变形。 (1)表达式1移至FOR语句前,但它后面的分号必 须保留。这时FOR语句的形式为: 表达式1; FOR(; 表达式2; 表达式3) 语句
(2)表达式3移至循环体语句之后,但它前面的分 号必须保留。FOR语句的形式为: FOR(表达式1; 表达式2;) { 语句; 表达式3; } 对于求P=5!的程序段,省略表达式3,将其放在循环 体中,则程序段写成:

第5章 循环结构1

第5章 循环结构1

说明:
(3)最简单的应用形式: for(循环变量赋初值;循环条件;循环变量增值) 例如:for(i=1;i<=10;i++) sum=sum+i; (4)三个表达式均可缺省,但起分割作用的两个分号 不可省略。 例如:for( ; ; ) i=1;for(;i<=10;i++) sum=sum+i; 或 for(i=1;i<=10;) {sum=sum+i;i++;} • 表达式1省略,应在for之前对循环变量赋初值 • 表达式2省略,则不判断条件,循环无终止进行下去 • 表达式3省略,则应另设法保证循环的结束
5.4
循环的嵌套
一个循环体内又包含另一个完整的循环结构称为循 环的嵌套。
① while() {… while() {…} } ② do {… do {…} while(); } while() ; ③ for(;;) { for(;;) {…} }
5.4
④ while() {… do {…} while(); … } 说明:
在许多问题中都需要用到循环结构,如
要求计算全校每个学生的平均成绩,计算两 个正整数的最大公约数和最小公倍数等都需
要用到循环控制。C语言中有三种循环语句, 分别是while语句、do…while语句和for语 句。
5.1 while循环语句
while循环语句是用来实现“当型”循环结构的。 它的特点是先判断表达式,后执行语句。 格式: while(表达式) 语句; 该语句的执行顺序是:先计算表达式的值,再判 断其值是否为“真”(即非0)。若结果为“真”, 则执行语句;此过程重复执行,直到表达式的值为 “假”(即为0)时,结束循环。其流程图和N-S图 分别如图5-1和5-2所示。

第5章 循环结构程序设计

第5章 循环结构程序设计

输入学生2的三门课成绩,并计算平均值后输出
scanf(“%f,%f,%f”,&s1,&s2,&s3);
aver=(s1+s2+s3)/3;
printf(“aver=%7.2f”,aver); 要对50个学生进行相同操作
重复50次
大多数的应用程序都会包含循环结构
循环结构和顺序结构、选择结构是结构 化程序设计的三种基本结构,它们是各 种复杂程序的基本构造单元
(1) 先求解表达式1 (2) 求解表达式2,若其值为真,执行循环体, 然后执行下面第(3)步。若为假,则结束循环, 转到第(5)步 (3) 求解表达式3 (4) 转回上面步骤(2)继续执行 (5) 循环结束,执行for语句下面的一个语句
5.4用for 语句实现循环
for(i=1;i<=100;i++) sum=sum+i; 等价于 用for语句更简单、方便 i=1; while(i<=100) { sum=sum+i; i++; }
要向计算机输入全班50个学生的成绩
分别统计全班50个学生的平均成绩 求30个整数之和 教师检查30个学生的成绩是否及格
5.1为什么需要循环控制
例如:全班有50个学生,统计各学生 三门课的平均成绩。
输入学生1的三门课成绩,并计算平均值后输出 scanf(“%f,%f,%f”,&s1,&s2,&s3); aver=(s1+s2+s3)/3; printf(“aver=%7.2f”,aver);
n 1
100
5.3用do---while语句实现循环
解题思路:
sum=0 i=1 sum=sum+i i=i+1

第5章 循环结构程序设计PPT课件

第5章 循环结构程序设计PPT课件

}
C语言程序设计
第5章 循环结构程序设计
§ 5.2 用while语句实现循环i=1w; hile (i<=100)
2、while语句的注意事项
{ sum=sum+i;
注意:
i++; }
(1) 循环体如果包含一个以上的语句,应该用花括弧括
起来,以复合语句形式出现
(2) 在循环体中应有使循环趋向于结束的语句。如果无
C语言程序设计
第5章 循环结构程序设计
§ 5.2 用while语句实现循环
1、while语句的一般形式
while语句用来实现“当型”循环结构 一般形式: while (表达式)
循环体语句
当表达式为非0值时,执行while 语句中的循环体语句 其特点是:
先判断表达式,后执行语句
C语言程序设计
第5章 循环结构程序设计
} 运行结果:
}
1↙ sum=55 再运行一次:
}说明:当while后面的表达式的第一次的
值为“真”时,两种循环得到的结果相
11↙ sum=0
同。否则,二者结果不相同
C语言程序设计
第5章 循环结构程序设计
§ 5.4 用for语句实现循环
1、for语句的一般形式
C语言中的for语句使用最为灵活,不仅可以用于 循环次数已经确定的情况,而且可以用于循环次数 不确定而只给出循环结束条件的情况,它完全可以 代替while语句
语句,转到第(5)步
(3) 求解表达式3
(4) 转第(2)步骤继续执行
(5) 循环结束,执行for语句下面的一个语句
C语言程序设计
第5章 循环结
执行表达式1
循环初始条件

C语言第5章

C语言第5章
= 1− 1 1 1 1 + − + −L 3 5 7 9
π
6
定义实型变量s=0; 整型变量n=1,k=-1;
1./(2*n-1)>=1e-4?
k=k*(-1); s=s+k*(1./(2*n-1)); n++; 输出4*s的值
程序如下: main() {int n=1,k=-1; float s=0; while(1./(2*n-1)>=1e-4) {k=-k; s=s+k/(2.*n-1); n++; } printf(“PI=%f”,s*4); } 运行结果为: PI=3.141397
1
一、什么是循环 所谓循环,就是重复执行某一程序段。 所谓循环,就是重复执行某一程序段。循环是所 有程序设计中都有的一种最重要的程序控制结构。 有程序设计中都有的一种最重要的程序控制结构。 正是有了循环,使得程序变得非常简单。 正是有了循环,使得程序变得非常简单。可用最 少的程序代码就可完成许多复杂的事情。 少的程序代码就可完成许多复杂的事情。同时循 环也是所有程序设计中最难的一种程序结构, 环也是所有程序设计中最难的一种程序结构,许 多同学对于其它程序结构都好理解, 多同学对于其它程序结构都好理解,但一遇到循 环就变糊涂了,不可理解了。 环就变糊涂了,不可理解了。这一点希望引起同 学们的极大注意。本书一共给出了三种循环: 学们的极大注意。本书一共给出了三种循环: 语句构成的循环; ⑴用while语句构成的循环; 语句构成的循环 语句构成的循环; ⑵用do-while语句构成的循环; - 语句构成的循环 语句构成的循环; ⑶用for语句构成的循环; 语句构成的循环
定义变量sum=0,i=1 接收用户的输入n sum=sum+i; i++; i<=n printf(“sum=%d\n”,sum); #include “stdio.h” main() { int i,sum,n; i=1;sum=0; printf(“\ninput n:”); scanf(“%d”,&n); do { sum=sum+i; i++; }while(i<=n); 9 printf(“sum=%d\n”,sum);}

C语言第5章循环结构程序设计1

C语言第5章循环结构程序设计1

(2)在循环体中应有使循环趋向于结束的语句。 比如上例中,循环结束的条件是“score>=0”, 那么当我们把这个班的成绩全部输入完后, 一定要输入一个负数,才能使程序往下执行。 (3)循环体语句有可能一次也不执行。比如说上 例中,当第一次输入的分数就为负数时,则 循环体一次也不执行。
§5.3 do …while语句
① ② ④ ③
for(i=1; i<100; i++) s=s+i; printf(″s=%d″, s); }
/*循环体语句*/
对于for循环,有一点非常重要,即条件测 试永远是在循环开始时进行,如果在循环开 始时条件为假,那么循环体语句就不会被执 行。如: int i=10; for (k=10;k!=i;k++) printf(″%d″,k); printf(″%d″,k);
2、循环控制变量必须在循环体内有所改变,才 能使while和do-while语句的循环控制条件表达 式的值不断改变,直至循环结束。否则会造 成死循环。例如: i=1; while(i<=100) putchar(′*′); i++; 这个循环永远不会结束,因为“i++;”语句 不属于循环体中的语句,循环控制变量i没有 在循环体内被改变。 程序应该作如下改变:
在使用while语句的时候,我们要注意以下 两个问题: (1)循环体如果包含一个以上的语句,应该用花 括号括起来,以复合语句的形式出现。如果 不加花括号,则while语句的范围只到while后 面的第一个分号处。比如上例中,while语句 中如无花括号,则while语句范围只到 “average+=score;”。
#include <stdio.h> main() {int i,n;long fac; Scanf(―%d‖,&n); i=1 while (i<=n) fac=fac*i; i++; } Printf(―%d!=%ld‖,n,fac); }

第5章 循环结构程序设计

第5章 循环结构程序设计

运行结果:
printf("%d\n",sum);
sum = 5050
}
while语句和用do-while语句的比较:
一般情况,用while循环语句和用do -while循环语句处理问 题时,若循环体部分一样,结果也一样。但是如果while循 环语句循环条件一开始为“假”,则循环结果不同。while 循环语句一次也不执行,而do -while循环语句不论条件是 否成立,先执行一次循环体语句。
循环变量不增值。无终止地执行循环体。
例5-7用for语句求1 + 2 + 3 + … + 100
#include <stdio.h> void main() {
int i,sum=0; /*将累加器sum初始化为0*/ for(i=1; i<=100; i++) sum += i;/*实现累加*/ printf("sum=%d\n",sum); } 程序运行的结果为: sum=5050 解析:先执行变量赋初值,然后判定循环继续条件, 如果为“真”,执行循环体语句,i 为运算项目和循 环变量,执行完一次,增加一次,最后累加和。
if(n%3!=0) /*循环体*/
printf("%5d",n);
}
§5.4 多重循环
• 当循环中的内嵌语句是循环语句时,称为循 环的嵌套使用。内嵌的循环中嵌套循环,称 为多重循环。
C语言程序设计技术基础
第5章 循环结构程序设计
第5章 循环结构程序设计
5.1 while 循环语句 5.2 do while循环语句 5.3 for循环语句 5.4 多重循环 5.5 break语句与continue语句 5.6 几种循环语句的比较 5.7 循环结构程序举例

大一C语言教材《C语言程序设计》第5章 循环程序设计

大一C语言教材《C语言程序设计》第5章 循环程序设计


复合赋值运算符
种类:+= -= *= /= %= 《= 》= &= 含义: 变量 op= 表达式 变量 = 变量

^= |= op 表达式
x%=3 x*=y+8 a+=3
x=x%3 x=x*(y+8) a=a+3
运算符和表达式

说明:

结合方向:自右向左 左侧必须是变量,不能是常量或表达式
例 int i; 例 3=x-2*y; i=2.56; //结果 i=2; a+b=3;

赋值转换规则:使赋值号右边表达式值自动 转换成其左边变量的类型
赋值表达式的值与变量值相等,且可嵌套g a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) //表达式值为5,a,b,c值为5 // b=5;a=5 //表达式值11,c=6,a=11 //表达式值10,a=10,b=4,c=6 //表达式值5,a=5,b=10,c=2
例 -i++ i=3;
-(i++) printf(“%d”,-i++);
//-3
无论是作为前缀还是作为后缀运算符,对于变量本身来 说自增1或自减1都具有相同的效果,但作为表达式来说却有 着不同的值。

j=3; k=++j; j=3; k=j++; j=3; printf(“%d”,++j); j=3; printf(“%d”,j++); a=3;b=5;c=(++a)*b; a=3;b=5;c=(a++)*b;

5.循环结构

5.循环结构

补充说明: 补充说明: (2) 如果表达式2省略,即不判断循环条件,循环无终 止地进行下去.也就是认为表达式2始终为真. 例如: 例如:for(i=1; ;i++) sum=sum+i; 表达式1是一个赋值表达式,表达式2空缺.它相当于: i=1; while(1) {sum=sum+1;i++;}
补充说明: 补充说明: (7) 表达式一般是关系表达式(如i<=100)或逻辑表达式 (如a<b && x<y),但也可以是数值表达式或字符表达 式,只要其值为非零,就执行循环体.
5.5 用for 语句实现循环
补充说明: 补充说明: ① for(i=0;(c=getchar())!=′\n′;i+=c); 在表达式2中先从终端接收一个字符赋给c,然后判 断此赋值表达式的值是否不等于′\n′(换行符),如 果不等于′\n′,就执行循环体.即不断输入字符, 将它们的ASC∏码相加,直到输入一个"换行"符为止. . 注意: 注意:此for语句的循环体为空语句,把本来要在循环 体内处理的内容放在表达式3中,作用是一样的.可见 for语句功能强,可以在表达式中完成本来应在循环体 内完成的操作.
5-5. 用for 语句实现循环
补充说明: 补充说明: (5) 3个表达式都可省略,如: 如 for(; ;) 语句 相当于 while(1) 语句 即不设初值,不判断条件(认为表达式2为真值), 循环变量不增值.无终止地执行循环体.
5-5. 用for 语句实现循环
补充说明: 补充说明: (6) 表达式1可以是设置循环变量初值的赋值表达式, 也可以是与循环变量无关的其他表达式.如: 如 for (sum=0;i<=100;i++) sum=sum+i; 表达式3也可以是与循环控制无关的任意表达式.

c5第五章 循环结构程序设计

c5第五章 循环结构程序设计

conio是Console Input/Output(控制台输 入输出)的简写,其中定义了通过控制 台进行数据输入和数据输出的函数,主 要是一些用户通过按键盘产生的对应操 作,比如getch()、putch()函数等等。
2
附件: warning C4013: „system‟ undefined; assuming extern returning int 警告信息的解决

4
5.1 while语句
1、while 语句 常称为“当型”循环语句。
表达式
!0 循环体
0
5
2 、while 语句的形式: while (表达式)
循环体;

特点:先判断表达式,后执行语句。 说明: – 循环体有可能一次也不执行 – 循环体可为任意类型语句 – 下列情况,退出while循环 • 条件表达式不成立(为零) • 循环体内遇break,return,goto – 无限循环:
7
例 (ch5_02.c)显示1~10的平方
#include <stdio.h> #include <conio.h> main() { int i=1; while(i<=10){ 运行结果: 1*1=1 2*2=4 3*3=9 4*4=16 5*5=25 6*6=36 7*7=49 8*8=64 9*9=81 10*10=100 8
printf("%d*%d=%d\n",i,i,i*i);
i++; } getch(); }
5.2 do--while语句
1、do--while语句 常称为“直到型”循
环语句。
循环体
!0
表达式
0

C语言程序设计循环结构程序设计

C语言程序设计循环结构程序设计


体现式

语句
假如体现式旳值一开始就为0,则语 句一次也不会被执行。
上一页
下一页
while语句举例
问题: 求学生旳平均成绩,以输入负数成绩为结束
算法分析:
1. 定义变量score存储学生成绩,定义s=0存储累加旳成绩,
定义n=0统计录入旳成绩数目。
2. 输入第一种学生旳score
3. 若score>=0,执行第4步,不然执行第7步
上一页
下一页
例: 求 1+2 +…+99
分析:用变量i从1到99循环, 把i旳值累加到变量s中,最 终输出s旳值。
程序如下:
#include<stdio.h> main( ) { int i,s=0;
for(i=1;i<=99;i++) s=s+i;
printf(“s=%d”,s); }
上一页
下一页
在某些情况下,for语句中旳体现式1、2、3都能够 省略,而改用其他旳方式来实现这些功能。我们还用 上面旳例子阐明for语句省略体现式旳情形。
上一页
下一页
1.省略体现式1: #include<stdio.h> main( ) { int i=1,s=0;
for(;i<=99;i++) s=s+i;
因为do-while语句至 少要被执行一次,特
别要注意n和s旳取值 问题!
s=s+score;
}while(score>=0);
if(n>1) printf (“ \n %f” ,(s-score)/(n-1));
else printf(“no student score!”);

vb第5章循环结构程序设计

vb第5章循环结构程序设计

输入m,n
大数放m,小数放n 除数d=1
当d<=n 如果m、n都能 被d整除, 则max ← d d=d+1 输出max
求两个正整数的最大公约数。

分析:求最大公约数可以用
[例5.4]输入两个正整数,递减法求最 大公约数。 输入m,n
大数放m,小数放n 除数d=n
当d>=1
如果m、n都能被d 整除,则max ← d, 退出循环
输入m,n 大数放m,小数放n 求得m对n的余数r 当r<>0 m←n n ←r 求m对n的余数r 输出n
求两个正整数的最大公约数。

分析:求最大公约数可以用
[例5.4]输入两个正整数,递增法求最 大公约数。 输入m,n
大数放m,小数放n 除数d=1
当d<=n 如果m、n都能 被d整除, 则max ← d d=d+1 输出max
步长为正时,超过—循环变量大于终值使循环结束 步长为负时,超过—循环变量小于终值使循环结束 5、一般在循环体中不对循环变量重新赋值, 否则影响循环的次数控制。
步长为负时
0
1.5
3
初值送循环变量
For I = 3 To 0 Step -1.5 Print I Next Print "After For :"; I For I = 0 To 3 Step -1.5 Print I Next Print "After For :"; I
说明: (l)条件为True ,(循环体语句列)将被重复执行
作业:



例题 5-1、5-4 ~ 5-6 选做5-2、5-3 5.6习题

xt5-1 ~xt5-4 选做xt5-5

VB第5章 循环结构程序设计

VB第5章 循环结构程序设计

教案讲稿第五章循环结构程序设计[旧课复习]:复习内容:1.多分支选择结构语句2.选择结构的嵌套复习目的:学生回顾多分支选择结构的实现语句和嵌套语句的使用复习时长:大约8分钟[新课导入]:导入方式:以日常生活中的实例让学生理解什么是循环结构导入目的:增强学生的理解能力导入时长:大约7分钟[新课讲授]:重点:Do…Loop和For…Next循环语句的使用难点:多重循环语句的使用方法:运用多媒体辅助教学,采用讲授法和案例教学法5.1循环语句循环结构是专门用于实现有规律的重复性操作的算法结构,是结构化程序设计的3种基本结构之一。

所谓循环,是指在一定的条件下多次重复执行一组语句。

循环结构由两部分组成。

(1)循环体:即要重复执行的语句序列。

(2)循环控制部分:指定循环条件来控制重复次数的语句。

正常情况下,循环次数必须是有限的。

5.1.1 Do…Loop语句若事先不知道循环次数,只知道循环结束条件,可以使用Do…Loop循环。

Do…Loop循环语句有前测型循环和后测型循环两种语法结构。

1. 前测型Do…Loop循环前测型循环是先判断条件,根据条件成立与否决定是否执行循环体,这种情况下,循环体有可能一次都不被执行。

前测型循环有两种语法格式:格式1(当型前测型):Do While〈条件〉[〈语句列1〉][ Exit Do ][〈语句列2〉]Loop格式2(直到前测型):Do Until 〈条件〉[〈语句列1〉][ Exit Do ][〈语句列2〉]Loop说明:(1)当VB执行Do While…Loop循环时,先判断指定的条件,若条件为True,执行循环体,条件为False时退出循环;当执行Do Until…Loop循环时,先判断指定的条件,若条件为False,执行循环体,条件为True时退出循环。

(2)〈条件〉是条件表达式,为循环的条件,其值为True或False。

如果省略条件即条件为Null,则条件会被当作False。

第5章 循环结构程序设计

第5章 循环结构程序设计
计举例
例5.8 例5.9 例5.10 例5.11 例5.12
– 三种循环的比较:
• 三种循环可用来处理同一问题,一般它们可以互相代替。 • do-while循环类似于while循环。do-while循环至少要执 行一次循环体,而while和for循环在进入循环体之前,首先 要判断循环条件,如果条件不成立,则循环体一次也不执 行就结束循环流程。 • while和do-while循环,在while后面指定循环条件。而 for循环可以在表达式3中包含促使循环结束的操作,甚至可 以将循环体中的操作全部放到表达式3中。 • 用while和do-while循环时,循环变量初始化的操作应在 while和do-while之前完成。而for语句可以在表达式1中实 现循环变量的初始化。 首页 上一页
5.2 实现循环结构的语句
• while语句
while语句用于构成“当型”循环结构。 形式: while (表达式 表达式) 表达式 {循环体语句 循环体语句 } 其流程如右图所示: 例5.1 例5.2

关于while循环结构的注意事项:
• while循环结构的特点是“先判断,后执行”。 • 若循环体中包含多个语句,则应以复合语句的形式出现。 • 循环体内要有促使循环结束的条件。否则会形成“死循 环”。 • 为使循环能正确开始运行,要做好循环前的准备工作。 首页 上一页
5.3 循环嵌套的概念及实现
循环的嵌套是指:在一个循环体内又包含了另一个完整的循 环结构。三种循环不仅可以自身嵌套,而且还可以互相嵌套。 例5.6 例5.7
– 使用循环的嵌套结构的注意事项
• 外层循环应“完全包含”内层循环,不能发生交叉。 • 嵌套的循环控制变量一般不应同名,以免造成混乱。 • 嵌套的循环要注意正确使用“缩进式”书写格式来明 确嵌套循环的层次关系,以增加程序的可读性。

C语言程序设计教程(第4版)_第5章_循环结构

C语言程序设计教程(第4版)_第5章_循环结构

5.1 for语句
程序流程图: 程序:example5_2.c 思考: ①该算法的缺点; ②设计更好的算法。 ③假如输入的数可以为任意整数, 如果a≤b,计算 i ; 如果a>b,则计算 i 。 请设计算法并编写程序验证。
i b ia ia i b
5.1 for语句
例3:编写程序,从键盘输入m和n的值,用符号“*”在屏幕 上打印出如下所示具有m行n列的矩形图案。 ******* ******* ******* ******* ******* ******* ******* ******* 分析: ①图案有规律,共有m行,每行有n个*号。 ②可采用循环嵌套的方式: 第1层(外层)控制行数,用i来表示,输出m行“*” ; 第2层(内层)控制列数,用j来表示,输出n列“*” 。
100
5.1 for语句
for语句所具有的特性。 1.<初始表达式>可以省略,但须保留分号(;),同时在for之 前必须给循环控制变量赋值,形式为: <初始表达式>; for(;<条件表达式>;<循环表达式>) <循环体语句> 2.<条件表达式>一般不可省略,否则为无限循环。 例如: for(i=1;; i++) sum =sum+i; 相当于条件总为真,程序会一直不停地执行直到“数据溢出”。
5.2 while语句
例7:编写程序,统计从键盘输入的字 符个数(回车换行符也是一个字符) ,当遇到结束标志时程序结束。 分析:关键是循环计数。
开始 count=0
(ch=getchar())!=EOF
F
设置一个累加器count(初值为0),
每次从键盘输入一个字符,只要该字 符的值不等于结束标志,累加器的值 就增1:count=count+1; 算法流程图如图所示。 程序: example5_7.c

《C语言程序设计》课件 《C语言程序设计》课件 第5章-循环结构程序设计

《C语言程序设计》课件 《C语言程序设计》课件 第5章-循环结构程序设计

Page 28
参考代码
#include<stdio.h> void main() {
char ch; int char_num=0,int_num=0,other_num=0; while((ch=getchar())!=‘\n’) //回车键结束输入 {
if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z') char_num++;
printf("************\n ");
printf("************\n ");
printf("************\n ");
printf("************\n "); printf("************\n "); 等价 for(int i=1;i<=8;i++)
{ s=s+i;
i++; //表达式3移至循环体末尾
}
printf("s=%d",s);
}
<<C语言程序设计>>
Page 19
随堂练习
例 编程计算n的阶乘。
n!=1 2 3 ……〔n-1〕 n
思路:
类似于累加求和,每一次循环乘上一个数字,求和 将和初始化为0,这里应把积初始化为?
<<C语言程序设计>>
#include "stdio.h" void main( ) { int i,sum=0;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在循环体中: 输入每人的捐款数 累计捐款总数 用 if 语句检查是否达到10万元 如果达到就不再继续执行循环,终止累加
计算人均捐款数
14
在全系1000学生中征集慈善募捐,当总数达到 万时就 学生中征集慈善募捐, 例5.4 在全系 学生中征集慈善募捐 当总数达到10万时就 结束,统计此时捐款的人数以及平均每人捐款的数目 结束,统计此时捐款的人数以及平均每人捐款的数目.
12
5.6几种循环的比较 几种循环的比较
(1)一般情况下, 种循环可以互相代替. (1)一般情况下,3种循环可以互相代替. 一般情况下 for更适合于已知重复次数的循环 更适合于已知重复次数的循环。 while更适合于当 (2) for更适合于已知重复次数的循环。 while更适合于当 型循环, do---while更适合于直到型循环 ---while更适合于直到型循环。 型循环, do---while更适合于直到型循环。 (3)在while和do---while循环中,循环体应 (3)在while和do---while循环中,循环体应包含使循环趋 ---while循环中 于结束的语句。 于结束的语句。 while和do---while循环时 ---while循环时, (4) 用while和do---while循环时,循环变量初始化的操作 应在while和do---while语句之前完成。 for语句可以在 应在while和do---while语句之前完成。而for语句可以在 while ---while语句之前完成 表达式1中实现循环变量的初始化。 表达式1中实现循环变量的初始化。
10
5.5循环的嵌套 循环的嵌套
一个循环体内又包含另一个完整的循环结 称为循环的嵌套 构,称为循环的嵌套 内嵌的循环中还可以嵌套循环, 内嵌的循环中还可以嵌套循环,这就是多 层循环, 层循环,也称为多重循环 3种循环(while循环、do…while循环和for 种循环(while循环、do while循环和for (while循环 while循环和 循环) 循环)可以互相嵌套
for(i=1 i<=100;i++)//控制循环次数 i=1; ;i++)//控制循环次数, 变到100 共循环100 100, 100次 如:for(i=1;i<=100;i++)//控制循环次数,i由1变到100,共循环100次 printf("% ",i); //执行循环体 输出i 执行循环体, printf("%d ",i); //执行循环体,输出i的当前值
for(i = 1;i <= 100; sum = sum+i,i++ );
9
读读下列for 语句: 语句: 读读下列
for(sum=0,i=1 ; i<=100; i++) sum=sum+i; for(i=0,j=100 ; i<=j; i++,j-- ) k=i+j; ; for( ; (c=getchar())!='\n'; ) printf("%c",c); , for(i=0; (c=getchar())!='\n'; i+=c) ;
13
5.7 改变循环之行的状态
break语句提前终止循环 5.7.1 用break语句提前终止循环
break语句可以用来从循环体内跳出循环体,即提前结 语句可以用来从循环体内跳出循环体, 语句可以用来从循环体内跳出循环体 束循环, 束循环,接着执行循环下面的语句 在全系1000学生中征集慈善募捐,当总数达到 万时就 学生中征集慈善募捐, 例5.4 在全系 学生中征集慈善募捐 当总数达到10万时就 结束,统计此时捐款的人数以及平均每人捐款的数目 结束,统计此时捐款的人数以及平均每人捐款的数目. 算法思路: 算法思路:这是一个捐款数目的累加问题 思路 循环次数不确定,但最多循环1000次
如: for( i = 1; i <= 100;i++ ) sum = sum + i; for( i = 1; ;i++) { if( i > 100 )break; sum = sum + i; } i = 1; for( ; ; ) { if( i > 100) break; sum = sum + i; i++; } i = 1; for( ;i <= 100;i++ ) sum = sum + i; for( i = 1;i <= 100; ) { sum = sum + i; i++; }
运行结果: 运行结果: i=? 1 ↙ sum=55 sum=55 运行结果: 运行结果: i=? 11 ↙ sum=11 sum=11
6
5.4 用for语句实现循环 语句实现循环
for语句常用于循环次数已经确定的情况,但也可以用于循环次数不确定而只给出 for语句常用于循环次数已经确定的情况,但也可以用于循环次数不确定而只给出 语句 循环结束条件的情况
第5章 循环结构程序设计 章
5.1 为什么需要循环控制 5.2 用while语句实现循环 语句实现循环 5.3 用do---while语句实现循环 语句实现循环 5.4 用for 语句实现循环 5.5 循环的嵌套 5.6 几种循环的比较 5.7 改变循环执行的状态 5.8 循环程序举例
1
5.1为什么需要循环控制 为什么需要循环控制
思考: 语句的循环控制条件和循环体分别是那一部分? 思考: 1) 分析 while 语句的循环控制条件和循环体分别是那一部分? 2) sum 不赋初值行不行? 不赋初值行不行? 去掉i++行不行? i++行不行 4) 去掉i++行不行? 3) sum 赋成1行不行? 赋成1行不行? 去掉while下边的大花括号行不行? while下边的大花括号行不行 5) 去掉while下边的大花括号行不行?
运行结果: 运行结果: i=? 1 ↙ sum=55 sum=55 运行结果: 运行结果: i=? 11 ↙ sum=0 sum=0
程序2: 程序 : #include <stdio.h> void main() { int i,sum=0; printf("i=? "); scanf("%d",&i); do { sum=sum+i; i++; }while(i<=10); printf("sum=%d\n",sum); }
5.2
用while语句实现循环 while语句实现循环
例5.1 求
一般格式: 一般格式: while(表达式) while(表达式) 语句
∑ i (用
i =1
100
while语句) while语句) 语句
0
表达式
非0 语句
当满足条件表达式 P时 A块
#include <stdio.h> 这里加上分 int main() 号会怎样? 号会怎样? { int sum = 0,i = 1; while (i <= 100 i 100) { sum = sum + i; i++; i++; } printf("sum = %d\n",sum); return 0; }
语句
非0 表达式 0 A块 块 直到条件 P为假时停止
do { sum+=i; i++; }while(i<=100); printf("sum=%d\n",sum); return 0; }
• do-while循环的特点是: 循环的特点是: 循环的特点是
• 先无条件执行循环体语句,后判断循环条件表达式 无条件执行循环体语句,后判断循环条件表达式 执行循环体语句 循环条件
4
5.3 用do-while语句实现循环 do-while语句实现循环
一般格式: 一般格式: do 语句 while(表达式) while(表达式); 例5.3 求
∑ i (用
i =1
100
do-while语句) do-while语句) 语句
#include <stdio.h> int main() { int sum=0,i=1;
for语句完全可以代替while语句 for语句完全可以代替while语句 语句完全可以代替while
for(i=1;i<=100;i++) sum=sum+i; ⇔ i=1; while(i<=100) { sum=sum+i; i++;2 表达式2 非0 语句
11
输出以下4*5的矩阵。 的矩阵。 例5.6 输出以下 的矩阵 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 算法思路: 算法思路: 思路
可以用二重循环来处理此问题 外循环控制行数 内循环输出一行的数据
#include <stdio.h> int main() { int i,j; for (i=1;i<=4;i++) { for (j=1;j<=5;j++) printf ("%d\t",i*j); printf("\n"); } printf("\n"); return 0; }
i=1 i≤50 Y 输入一个学生成绩 求一个学生平均成绩 输出一个学生平均成绩 i=i+1
3
N
i=1; while( i<=50 ) { scanf("%f,%f,%f",&s1,&s2,&s3); aver=(s1+s2+s3)/3; printf(" aver%d=%7.2f" ,i,aver); i++; }
相关文档
最新文档