全国计算机等级考试2C课程第5讲 循环结构程序设计.ppt
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
真(非0)
while
expr
假(0)
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
18
辅助控制语句——break
break语句使用的场合
switch
expr
case 1
case case 2
case n
default
语句组1 break;
语句组2 …... break;
语句组n break;
for(;i<10;putchar(‘a’+i),i++)
putchar(‘a’+i);
;
}
}
运行结果:abcdefghij
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
13
小练习:
有以下程序(2010年3月)
#include <stdio.h>
main()
{
int a=l,b=2;
for(;a<8;a++)
while(m!=n)
{
while(m>n) m=m-n;
while(m<n) n=n-m;
}
printf(“%d\n”,m);
}
程序运行后,当输入14 63 <回车> 时,输出结果是 【1】 。
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
5
do~while循环
do~while语句
一般形式:
{ scanf(“%f”,&g);
sum=sum+g;
}
ave=sum/M;
printf(“No.%d ave=%5.2\n”,i.ave);
}
}
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
16
辅助控制语句——break
break语句;
功能: break语句用在循环语句和switch语句中,终止并 跳出循环体或开关体
作者:张旭仟 版权所有 欢迎盗版
15
嵌套for循环举例
例程:输入6个学 #define N 6 生5门课程的成绩,#define M 5
分别统计出每个 学生5门课程的平wenku.baidu.com
main() { int i,j;
float g,sum,ave;
均成绩。
for(i=1;i<=N;i++) { sum=0;
for(j=1;j<=m;j++)
……
23
辅助控制语句—— continue
注意:continue语句只结束本 次循环,而不终止整个循环的 执行,如有下面程序片段:
while(表达式1) {…
if(表达式2) continue; … }
其流程如右图所示:
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
24
辅助控制语句—— continue
{
b+=a;
a+=2;
}
printf(“%d,%d\n”,a,b);
}
程序运行后的输出结果是
A)9,18
B)8,11C)7,11
D)10,14
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
14
循环的嵌套
while循环、do while循环、for循环可以互相嵌套, 且层数不限。
(1) while() { …… while() { …… } …... }
全国计算机等级考试 2C课程
第五讲 循环结构程 序设计
概述
什么是循环?
循环结构是结构化程序设计的基本结构之一,它和顺序 结构、选择结构共同作为各种复杂程序的基本构造单元。
C语言可实现循环的语句:
while 语句 do ~ while 语句 for 语句 goto 语句(不考)
2020/8/16
无限循环: for(;;)
expr3
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
10
for循环
100
例 用for循环求 n n 1
#include <stdio.h> main() { int i,sum=0;
for(i=1;i<=100;i++) sum+=i;
printf("%d",sum); }
21
辅助控制语句—— continue
continue语句
功能:结束本次循环,跳过循环体中尚未执行的语句, 进行下一次是否执行循环体的判断
说明: continue语句仅用于循环语句中 一般形式:
continue;
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
22
辅助控制语句—— continue
main()
{
int i,j,m=1;
for(i=1;i<3;i++)
{
for(j=3;j>0;j--)
{
if((i*j)>3)
m=i*j;
}
}
printf("m=%d\n",m);
}
程序运行后的输出结果是
A)m=6
B)m=1
C)m=4
break; D)m=5
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
main()
{ int x=8;
for( ; x>0; x--)
{
if(x%3) {
printf(“%d,”,x--); continue;}
printf(“%d,”,--x);
}
}
程序的运行结果是
A)7,4,2
B)8,7,5,2
C)9,7,6,4
D)8,5,4,2
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
for语句既可以用于循环次数已经确定 执行流程:
的情况,也可以用于循环次数不确定 而只给出循环结束条件的情况,它完
for
全可以代替while语句 一般形式:
for([expr1]; [expr2] ;[ expr3])
expr1
假(0) expr2
真(非0)
循环体语句;
循环体
说明:
for语句中expr1, expr2 ,expr3 的类型可以 使任意的,也可省略,但分号” ;”不可省
100
n
n 1
#include <stdio.h>
main()
{ int i,sum=0;
i=1;
do
{ sum+=i;
i++;
}while(i<=100);
printf("%d",sum);
}
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
7
while和do~while比较
例 while和do~while比较
无限循环: while(1)
2020/8/16
循环体;
作者:张旭仟 版权所有 欢迎盗版
while 假(0)
expr 真(非0)
循环体
3
while循环
例程:用while循环求
100
n
n 1
#include <stdio.h>
循环条件
main()
{ int i,sum=0;
循环初值
i=1;
while(i<=100)
if(x>0&&x>max) max=x; } if(max!=-1) printf(“max=%d”,max); }
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
27
利用循环处理素数问题
例程:求100~200间的全部素数。
}while(i<=10); 句 它处 们理 的同 结一 果问 也题 一p时 样ri, 。nt若 但f("二 是%者如d循果",s环whu体imle一)后;样面,的则
printf("%d",sum)表; 达式一开始}就为假(0值)时,两种循环的
}
结果是不同的。
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
8
小练习:
以下程序运行后的输出结果是【1】 (2010年3月)
#include<stdio.h>
main()
{ int a=1,b=7;
do
{
b=b/2;
a+=b;
}while(b>1);
printf("%d\n",a);
}
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
9
for循环
for语句
#include <stdio.h>
main()
main()
{ int i,sum=0;
{ int i,sum=0;
scanf("%d",&i);
scanf("%d",&i);
while(i<=10)
do
{ sum+=i;
{ sum+=i;
i++;
i++;
一般情况下,用}while语句和用do-while语
(2) do { …… do { …… }while( ); …... }while( );
(3) while() { …… do { …… }while( ); ……. }
(4) for( ; ;) { …… do { …… }while(); …… while() { …… } …...
}
2020/8/16
{ sum=sum+i;
循环变量增值
i++; }
循环终值
printf(“ sum=%d\n",sum);
}
循环体
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
4
小练习:
有以下程序(2010年3月)
#include <stdio.h>
main()
{
int m,n;
scanf("%d%d",&m,&n);
语句组 break;
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
19
辅助控制语句——break
Break语句举例: 小写字母转换成大 写字母,直至输入非 字母字符
#include <stdio.h> main() { char c;
while(1) { scanf(“%c%*c”,&c);
说明: break只能用于循环语句和switch语句 break只能终止并跳出最近一层的结构
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
17
辅助控制语句——break
break语句使用的场合
while
假(0) expr
真(非0) …… break; ……
do
…… break; …...
continue语句的使用场合
for
expr1
expr2
假(0)
真(非0)
……
continue;
…...
expr3
do
…… continue;
…...
真(非0)
while
expr
假(0)
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
while 假(0)
expr 真(非0)
…… continue;
do 循环体语句;
while(表达式);
执行流程:
do
特点:先执行循环体, 后判断表达式
说明:至少执行一次 循环体
注意:循环体最后的 ‘“;”号不可丢掉
真(非0)
循环体
while expr
假(0)
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
6
do~while循环
例:用do~while循环求
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
11
for循环
For循环和while循环的比较
for语句最简单的使用,例如:
for(i=1;i<=100;i++) sum=sum+i;
如果用while循环表示,如下所示:
i=1; while(i<=100) { sum=sum+i;
i++; }
}
#include<stdio.h> main( ) { int i=0;
for(;i<10;) putchar(‘a’+(i++));
}
#include<stdio.h>
#include<stdio.h>
main( )
main( )
{ int i=0;
{ int i=0;
for(;i<10;i++)
显然,用for语句更简单、方便。
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
12
for循环
For循环的用法非常灵活
例如:要使用for循环输出10个字母可以有多种写法:
#include<stdio.h> main( ) { int i;
for(i=0;i<10;i++) putchar(‘a’+i);
26
利用循环寻找最大数问题
例如:从输入的若干个大于0的数中选出最大值。输-1结束
main() { int x,max,i;
printf(“Enter x(-1 to end): ”); do
scanf("%d",&x); while(x<0&&x!=-1); max=x; while(x!=-1) { scanf("%d",&x);
if(c>='a' && c<='z') putchar(c-'a'+'A');
else if(c>='A' && c<= 'Z') putchar(c);
else break;
} }
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
20
小练习:
有以下程序(2010年3月)
#include<stdio.h>
注意:break语句则是结束整 个循环过程,不再判断执行 循环的条件是否成立,如有 下面程序片段:
while(表达式1) {…
if(表达式2) break;
… }
其流程如右图所示:
2020/8/16
作者:张旭仟 版权所有 欢迎盗版
25
小练习:
有以下程序 (2008年4月)
#include <stdio.h>
作者:张旭仟 版权所有 欢迎盗版
2
while循环
while语句
一般形式:
执行流程:
while(表达式) 循环体语句;
特点:先判断表达式,后执行循环体
说明:
循环体有可能一次也不执行
下列情况,退出while循环
条件表达式不成立(为零)
循环体内遇break,return,goto等语句