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

.
5.1.1 while语句
6
功能:计算表达式的值,为非0(逻辑真)时,
重复执行内嵌语句,每执行一次,就判断一次表
达式的值,直到表达式的值为0 时结束循环,转
去执行while后面的语句。
流程图 循环控制条件
N-S结构图
N
表达式非 0?
Y
语句
当表达式为真 语句
循环体
.
5.1.1 while语句(举例)
.}
5.1.2 do-while语句(说明:)
14
while和do-while都能实现循环控制,while结构程序通常 都可以转换成do-while结构。
区别: – do- while 语句先执行循环体再判断条件,循环体至 少执行一次; – while 语句先判断条件再执行循环体,循环体有可能 一次也不执行。
#include <stdio.h>
思路:
void main( )
{
求累加和:确定c变ha量r lcehn;,初值为0
确定循环条件:in输t入le字n=符0;不为0,即getchar()!=‘0’ printf("请输入字符:\n");
自学: P58例4-1; P61例4-2。
while((ch=getchar())!=‘0’) { putchar(ch);
到满足精度的要求,即最后一项的绝对值小于10-5时 循环停止。循环次数事先未知。
–以二维形式打印乘法九九表,属于双重循环问题。
.
循环结构类型
流
N
P成立
程 图
Y?
A
N-S
流
当P成立时
程 图
A
清华大学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循环结构程序设计

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,将其放在循环 体中,则程序段写成:
[工学]第05章 循环结构程序设计 (2)
![[工学]第05章 循环结构程序设计 (2)](https://img.taocdn.com/s3/m/90d7833fff00bed5b9f31d37.png)
22
i=i+c
2019/2/17
例:#include<stdio.h> 例:#include<stdio.h> main( ) main( ) { int i=0; { int i=0; for(;i<10;i++) for(i=0;i<10;i++) putchar(‘a’+i); putchar(‘a’+i); } } 运行结果:abcdefghij
2019/2/17
21
(7)表达式2一般是关系表达式(如 for语句说明4 i<=100)或逻辑 表达式(如a<b&&x<y),但也可以是数值表达式 或字符表达式,只要其值为非零,就执行循环体。分 析下面两个例子: ①for ( i=0;(c=getchar( ))!=‘\n’;i+ =c); i=0 此 for语句的执行过程见图 ,它的作 用是不断输入字符,将它们的ASCII 取一个字 码相加,直到输入一个“换行”符为 符=>c 止。 F ② for( ;(c=getchar( ))!=‘ \ n’;) C≠换行符 printf(“%c”,c);
15
思考:该程序是什么功能?
2019/2/17
5.3 for语句
for循环语句是C语言中功能最强的循环语句,它有
多个变化形式,并且可以很方便的代替其它的循环语
16
句。 for语句的一般形式
for(表达式1;表达式2;表达式3)循环体语句
2019/2/17
17
for执行流程
①先计算初值表达式1,它主要 用于循环开始前设置变量初值; ②接着计算循环控制逻辑表达式 2,它控制循环条件,决定循环 次数; ③如果表达式2为真,则执行循 环体语句,否则结束for循环; ④求解表达式3,它主要是对循 环控制变量进行修改。 ⑤转步骤②执行。
循环数据结构设计

循环 问题
while循环
循环条件: 余数r不为0 循环体:ba, rb 计算 a和b 的余数r ; 算法:
读入a、b a%b r r<>0 b a r b a%b r 输出b
#include <stdio.h> void main() {int a,b,r; scanf("%d%d",&a,&b); r=a%b; while(r) {a=b; b=r; r=a%b; } printf("%d\n",b); }
#include <stdio.h> void main() {int n,k,s=0; scanf("%d",&n); for( ;n!=0; ) { k=n%10; s=s+k; n=n/10; } printf(“%d\n",s);
几种循环的比较
#include "stdio.h" void main() {int s=0,i; for(i=1;i<=100;i++) s=s+i; printf("%d",s); }
分析程序运行结果
循环的嵌套
输出100 ~200间的所有素数。 “素数”:只能被1和自身整除的数。 如何判断一个数(n)是否是素数? 用2 ~n/2之间的数i除n, 都除不尽:n是素数; 有一个可以除尽:不是素数。 是一个循环过程,用什么循环? 循环条件:i<=n/2且n%i!=0 循环体: i++
0s,0n i=1,15 读入成绩g s+gs g>=60 n++ 输入s/15,n/15
机械工业出版社c语言各章节编程题参考答案(书中有)

else if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))printf(“This is a
if(b>c){temp=b;b=c;c=temp;}
if(c>d){temp=c;c=d;d=temp;}/*d已经为最大的数*/
if(a>b){temp=a;a=b;b=temp;}
if(b>c){temp=b;b=c;c=temp;}/*c已经为次大的数*/
if(a>b){temp=a;a=b;b=temp;}/*a已经为最小的数*/
printf(“ *** ”);
printf(“ ***** ”);
printf(“ *** ”);
printf(“ * ”);
}
3参考答案
#include <stdio.h>
main()
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: day=31; break;
case 4:
case 6:
case 9:
}
结束
5 解答:
S0:i=0;
S1:判断gi是否大于80,若大于转S3;
S2:i=i+1;
S3:打印i,gi
S4:若i<10,返回S1否则继续执行。
6 解答:求两个整数的最大公约数、最小公倍数
大一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;
c语言第5章循环结构程序设计课件
第五章 循环结构程序设计
典型例题(例5-8) :求两个整数的最大公约数、最小公倍数
12 8 4 mn r
84
0
mn r
最大公约数 4 最小公倍数 12*8/4=24
求最大公约数的N-S流程图
辗转相除法
7
第五章 循环结构程序设计
void main( )
{ int n, m, nm, r, t; printf( " Enter m, n= ? " ) ; scanf( " % d% d" , & m, & n) ; nm= n* m; if ( m< n)
例如: for(i=1;i<=n;) { t=t*i; i++; } (4)可以省略表达式1和表达式3,只有表达式2 , 即只给循环条件。
i=1; for(;i<=n;)
{t=t*i; i++;}
14
第五章 循环结构程序设计
(5) 3个表达式都可省略。 例如: for(;;) 语句 相当于 while(1)语句。
3
第五章 循环结构程序设计
例: 编程序求: s=1+2+3+……+100
main()
{ int s=0,i=1;
while (i<=100) { s=s+i;
思考:如何求n!
i++; }
printf("S=%d",s); }
4
第五章 循环结构程序设计 二、 do...while语句
Do-while语句的一般形式为:
(1) while( ) {… while( ) {…}
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!”);
C语言 循环结构程序设计模拟题
C语言循环结构程序设计模拟题-CAL-FENGHAI.-(YICAI)-Company One1第五章循环结构程序设计一、选择题1.while循环语句中,while后一对圆括号中表达式的值决定了循环体是否进行,因此,进入while循环后,一定有能使此表达式的值变为的操作,否则,循环将会无限制地进行下去。
(0级)A)0 B)1 C)成立 D)22.在do-while循环中,循环由do开始,用while结束;必须注意的是:在while表达式后面的不能丢,它表示do-while语句的结束。
(0级)A)0 B)1 C); D),3.for语句中的表达式可以部分或全部省略,但两个不可省略。
但当三个表达式均省略后,因缺少条件判断,循环会无限制地执行下去,形成死循环。
(0级)A)0 B)1 C); D),4.程序段如下int k=-20;while(k=0) k=k+1;则以下说法中正确的是。
(1级)A)while循环执行20次 B)循环是无限循环C)循环体语句一次也不执行 D)循环体语句执行一次5.程序段如下int k=1;while(!k==0) {k=k+1;printf("%d\n",k);}说法正确的是。
(1级)A)while循环执行2次 B)循环是无限循环C)循环体语句一次也不执行 D)循环体语句执行一次6.以下for循环是。
(1级)for(a=0,b=0;(b!=123)&&(a<=4);a++)A)无限循环 B)循环次数不定 C)执行4次 D)执行5次7.在下列程序中,while循环的循环次数是。
(1级)main( ){ int i=0;while(i<10){if(i<1) continue;if(i= =5) break;i++;}......}A)1 B)10 C)6 D)死循环、不能确定次数8.程序段如下int k=0; while(k++<=2) printf("%d\n",k);则执行结果是。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(4)表达式3常用来修改循环变量的值,可省略,而将其放在for循环体内。 for(i=1,j=2;i<5;) { …… i++,j++; …… }
12
5.2 三种循环结构
3. for语句使用说明
(3)while语句和do~while语句只有一个表达式, for语句有三个表达式。for语句的三个表达式可以部分 或全部省略,但是两个分号一定不能省略。
15
5.3 循环控制语句
5.3.1 break语句
只能用于循环语句和switch语句中; 功能是强制退出循环或强制退出switch语句.
29
1. 一般形式: goto 语句标号; 2. 说明:
语句标号的定义规则遵循标识符的命名规则; goto语句一般用在条件语句中; 功能是 转去语句标号所指定的语句执行;
例: s=0; i=2; loop1: s=s+i; i+=2; if(i<100) goto loop1; printf("s=%d\n",s) ;
(5)三个表达式可以省略其中之一、之二、也可以同时省略, 但是,表达式之间的两个分号不允许省略。 三个表达式同时省略后的for语句形式为: for( ; ; ) { 语句序列; }
(6)若for循环的循环体不为空,一定不能在表达式的括号后加分号, 否则,会被认为循环体是空语句而不能反复执行真正的循环体。 for(i=1;i<=10;i++); sum+=i;
例:int i,m,n; scanf("%d%d",&m,&n); for (i=n;i<=m*n;i++) if (i%m==0 && i%n==0) break; printf("%d",i);
16
5.3 循环控制语句
5.3.1 break语句
1. 一般形式
while(表达式1) { ……
if(表达式2) break; 语句1; …… } 语句2;
19
5.3 循环控制语句
5.3.2 continue语句
1. 一般形式
while(表达式1) { ……
if(表达式2) continue; 语句1; …… } 语句2;
2. 执行流程
20
5.3 循环控制语句
例5-7 输出100~200中不能被5整除的数,每行输出16个数。 分析:如果100~200中的某个数能被5整除,则不输出, 即跳过输出语句,用continue语句实现,然后继续检测 下一个数。
13
5.2 三种循环结构
例5-5 编程求斐波那契数列:1,1,2,3,5,8,13,21 34,……的前20项。
分析:该数列从第3项开始,每一项均为前两项之和,则 用通项可表示为:
FF12
1 1
Fn Fn1 Fn2
(n 1) (n 2) (n 3)
14
5.2 三种循环结构
27
5.6 循环结构程序典型例题
例5-12 用辗转相除法求两个正整数的最大公约数和最小公倍数。 分析:算法如图
28
5.6 循环结构程序典型例题
例5-13 打印所有水仙花数。水仙花数是指各Байду номын сангаас数字的立方和等 于该数本身的三位数。例如:153=13+33+53。 分析:设水仙花数为n,则n的取值范围是100~999,利用循环 对每一个n进行判断,若n的个位、十位和百位的立方和等于n 本身,则输出n。
N-S结构图 当表达式为真
语句
5
5.2 三种循环结构
例5-1 用while语句求n!(n为正整数)。
分析:求n的阶乘,即求从1到n的所有正整数的乘积, 共进行n-1次乘法运算。乘法运算是一个重复执行的 操作,而循环的条件是参与乘法运算的数值小于等于n。
6
5.2 三种循环结构
例5-2 输入一批自然数,求它们的累加和。当输入-1时, 结束求和过程。
21
5.4 循环的嵌套
一个循环结构内可以包含另外一个或多个完 整的循环结构,称为循环的嵌套或多重循环;
三种循环可以互相嵌套.
例: 写出下列程序段的运行结果 for(i=1;i<=2;i++) { for(j=1;j<=3;j++) printf(“*”); printf(“\n”); }
22
25
5.5 goto语句构成的循环
例5-10 输入三角形的三条边(直到满足三角形三边的条件 为止),判断三边构成的三角形是否为等边三角形。
分析:三角形的三边关系定理:“三角形任何两边的和大于 第三边”。
26
5.6 循环结构程序典型例题
例5-11 从键盘输入一个字符串,以回车结束。分别统计其中 字母、数字、空格和其它字符的个数。 分析:在学习数组之前,输入一个字符串只能通过循环实现, 每次循环输入一个字符,对每次循环输入的字符都要判断是 否为字母、数字、空格或其它字符。
3
5.2 三种循环结构
for循环 while循环 do~while循环
实现循环结构 的3种语句
条件 假 真 循环体
循环体后的语句 循环结构
4
5.2 三种循环结构
5.2.1 while循环
1. 一般形式 2. 执行流程
while (表达式) {
语句序列 }
循环体.只有1条语句 时可以省写{ }
2. 执行流程
17
5.3 循环控制语句
例5-6 从键盘输入一个大于2的正整数n,判断该数是否为素数。 分析:所谓素数是一个大于1的自然数,它除了能被1和它 本身整除外不能被其它整数整除。n是素数。
18
5.3 循环控制语句 5.3.2 continue语句
只能用于循环语句中; 功能是提前结束本次循环,继续执行下一次循环.
第5章 循环结构程序设计
1
目录
1
概述
2
三种循环结构
3
循环控制语句
4
循环的嵌套
5
goto语句构成的循环
6
循环结构程序典型例题
2
5.1 概述
循环结构的基本思想是重复,它通常由两大部分构成: 循环条件和循环体。循环条件用于控制循环是否继续执 行。当给定条件成立时,循环结构重复执行某个程序段, 这个被重复执行的程序段称为循环体。
5.2.4 几种循环的比较
(1)如果循环次数在执行循环之前就已确定,一般用 for语句。 如果循环次数是由循环的执行情况确定的, 一般用while语句或者do~ while语句;
(2)for语句和while语句先判断循环控制条件,后执行循环体; do~while语句是先执行循环体,后判断循环控制条件。 因此,do~while语句至少执行一次循环体, 而for语句和while语句可能一次也不执行循环体;
5.4 循环的嵌套
例5-8 输出如下所示的九九乘法表。
23
5.4 循环的嵌套
例5-9 百钱买百鸡问题。一百个铜钱买了一百只鸡,其中, 公鸡一只5钱、母鸡一只3钱、小鸡一钱3只,问一百只鸡中公 鸡、母鸡、小鸡各多少只?
分析:设公鸡、母鸡、小鸡的数量分别为x、y、z,可以 采用穷举法求解。
24
5.5 goto语句构成的循环
9
5.2 三种循环结构
例5-4 用do~while语句求数列
的前10项和。
分析:从第二项开始,每一项的分子可由前一项分子加1得到, 每一项的分母可由前一项分母加2得到,每一项的符号由前一 项取负得到。
10
5.2 三种循环结构
5.2.3 for循环
1. 一般形式
for ( 表达式1 ; 表达式2 ; 表达式3) {
分析:自然数的输入以及求和运算都是重复执行的, 因此,需要将输入语句和累加运算放在循环体中。 循环终止的条件是输入自然数的值为-1。
7
5.2 三种循环结构 5.2.2 do~while循环
1. 一般形式 2. 执行流程
do { 语句序列
} while (表达式);
8
5.2 三种循环结构
例5-3 用do~while循环处理不定数目的自然数累加和问题。 分析:此题与例5-1类似,但题目要求用do~while语句实现。 只需将例5-1中的while语句部分换成do~while语句即可。
语句序列 }
2. 执行流程
一般情况下: 表达式1—赋值表达式; 表达式2—关系表达式或逻辑表达式; 表达式3—赋值表达式.
11
5.2 三种循环结构
3. for语句使用说明
(1)三个表达式都可以是任意合法的表达式 for(i=1,j=2;i<5;i++,j++)
(2)表达式1通常用于赋初值,可省略,而将其放在for循环之上。 int i=1,j=2; for(;i<5;i++,j++)