C语言循环控制

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例如: … for( i=1; i<=100 ; ) {… i++; }
41
• 表达式1、3省略,但不能省略分号。但要将在for语 句前赋初值,并将表达式3包含到循环体中。此时相当 于while循环。
例如: … i=1; for(; i<=100 ; ) {… i++; }
42
• 表达式2省略,但不能省略分号。但要在循环体中控 制循环的结束。
/*Testing*/
{
y=y*x;
count++;
/*Incrementing*/
}
/* End of Loop*/
printf("\nx=%f; n=%d; x to power n=%f\n",x,n,y);
}
ቤተ መጻሕፍቲ ባይዱ20
while 循环控制语句:例
例:编程计算1+2+22+23+...+264
void main() {
答案: (D)
(A) n = 0
(B) while构成无限循环
(C) n = 1
(D) n = -1
23
课堂练习:while 语句
◆ 3. 下面程序执行的结果是( )。 void main( ) {
int n = 1 ; while ( n = 1 ) n = n - 1; printf(“n = %d\n”, n) ; }
初始值:i=1,sum=0;
i++; }
循环条件:i<=100
}
循环控制:i++;
将内嵌语句用大
括号括起来形成
复合语句。 15
例2
#include <stdio.h>
main( )
循环控制方式之二:标志法
{ char c;
只要满足一定条件,需要多少次就运行多少次。
c=getchar( );
while(c!=‘\n’)
例如: … for(i=1; ;i++ ) {… if(i>100) break; … }
43
• 表达式1、2、3省略,但不能省略分号。但要在循环 体中控制循环的结束。此时,相当于while(1)语句。
例如: … i=1; for(; ;) {… if(i>100) break; i++; … }
{ case 0: case 1: putchar(c+4); case 2: putchar(c+4);break; case 3: putchar(c+3); default:putchar(c+2);break;
} } }
19
Example 6.1-Program
main()/*计算y=xn */
printf(“%c”, ch); } }
答案: ABCDEF
46
课堂练习:for语句
◆ 2. 写出下面程序运行的结果。
void main( ) {
答案: AbBcC
char ch = ‘a’; int n;
for(n = 1; n <= 5; n = n + 1)
{
if(n%2 == 0) ch = ch + 33;
16
初始值:无; 循环条件:(c=getchar( ) )!=‘\n’ 循环控制:输入的字符
17
while(c=getchar( )!=‘\n’) × while((c=getchar( ))!=‘\n’)
18
#include <stdio.h> main( ) { char c;
while((c=getchar( ))!=‘\n’) { switch(c-’2’)
{ switch(c-’2’)
{ case 0:
case 1: putchar(c+4);
case 2: putchar(c+4);break;
case 3: putchar(c+3);
default:putchar(c+2);break;
}
c=getchar( ); } }
while((c=getchar( ))!=‘\n’) 表达更为简洁。
{
temp = temp * 10 + a ;
44
表达式1、3可以是一个简单的表达式,也可以是逗 号表达式。
如: sum=0; for (i=1;i<100;i++) 可以写为: for(sum=0,i=1;i<100;i++)
45
课堂练习:for语句
◆ 1. 写出下面程序运行的结果。 void main( ) {
char ch; for(ch = ‘A’; ch < ‘G’; ch = ch + 1) {
程序的结构:
顺序结构 选择结构 循环结构
1
第6章 循环结构
OUTLINE
C语言的三种循环语句
while语句 do…while语句 for 语句
与循环语句相关的程序控制语句
即: break、continue、goto语句
3
本章学习注意事项
各循环语句的执行过程 循环的初始条件 循环何时终止,如何控制?
printf(“%d”, bin);
}
}
27
课堂练习:while 语句
◆ 7. 写出下面程序运行的结果。
void main( )
答案:sum=6
{
int num=123, sum=0;
while(num)
{
sum=sum+num%10;
num=num/10;
}
printf(“sum=%d”, sum);
{ sum+=i; i++;
} while(i<=100); }
采用的是什么循环 结束控制方法? 计数法
32
应用 例:
main() { int i,flag;
采用的是什么循环 结束控制方法?
i=0; flag=0; do
标志法
{ i++;
if(i%3==2&&i%5==3&&i%7==2)
flag=1;
答案: (B)
(A) n = 0
(B) while构成无限循环
(C) n = 1
(D) n = -1
26
课堂练习:while 语句
◆ 6. 写出下面程序运行的结果。
void main( )
答案:
{ int num=18, bin=0;
01001
while(num)
{
bin=num%2; num=num/2;
2a:printf(“this is a book!”); … goto 2a;
×
语句标号仅对goto语句有意义,通常只给goto语句要 转去的语句加标号。
8
用if和goto语句构成循环
格式:
语句标号:if(表达式) {语句; goto 语句标号;}
循环体
执行过程:
当if中的表达式为真时,执行循环体,为假时跳出 循环,执行循环体下面的语句。
12
执行过程用流程图表示为:
表达式
flase
true
循环体
13
循环控制的实现。 考察下列各例,总结控制循环执行的方式。
14
循环控制方式之一:计数法
例6-1`、
i不仅参与运算,还要控制循
main()
环。
{ int i=1,sum=0; 这后面没有注分意号:循环体用{}括起来;
while(i<=100) { sum+=i;
{
int count, n;
float x, y;
printf("Enter the values of x and n:");
scanf("%f %d", &x, &n);
y=1.0;
count=1;
/*Initialization*/
/* Loop Begins */
while (count <= n)
答案: (B)
(A) n = 0
(B) while构成无限循环
(C) n = 1
(D) n = -1
24
课堂练习:while 语句
◆ 4. 下面程序执行的结果是( )。 void main( ) {
int n = 1 ; while ( n = n -1 ) n = n - 1; printf(“n = %d\n”, n) ; }
答案: (A)
(A) n = 0
(B) while构成无限循环
(C) n = 1
(D) n = -1
25
课堂练习:while 语句
◆ 5. 下面程序执行的结果是( )。 void main( ) {
int n = 2 ; while ( n = n -1 ) n = n - 1; printf(“n = %d\n”, n) ; }
4
if与goto构成的循环
5
请先看下面一段程序:
main( ) { int s=0,i=1;
loop: if ( i<100 ) { s=s+i; i=i+1; goto loop; }
printf(“s=%d\n”,s); }
loop: 语句标号
goto loop: 无条件转向语句 if与goto构成了循环
9
说明:goto语句容易造成程序不清晰,不利于实现
结构化程序设计,因此,最好不用在程序中使用它。
10
while语句
实现当型循环
11
格式: while(表达式) {循环体;}
执行过程: 先求解表达式的值。 判断表达式的值,为真则执行循环体。 再判断表达式的值,重复上述工作。当表达式的 值为假时退出循环。
{…}
while(i);
执行0次
执行1次
除循环体一次都不执行的情况外,while与 do…while可以互相转换。
35
for语句
步长型循环
36
格式: for(表达式1;表达式2;表达式3) {循环体;}
执行过程: 执行表达式1(初始化表达式); 判断表达式2,为真则执行循环体,否则退出循环; 执行表达式3(修正表达式); 再判断表达式2,… 重复上述过程,直到表达式2值为假。
答案: (A)
(A) n = 0
(B) while构成无限循环
(C) n = 1
(D) n = -1
22
课堂练习:while 语句
◆ 2. 下面程序执行的结果是( )。 void main( ) {
int n = 0 ; while ( n == 0 ) n = n - 1; printf(“n = %d\n”, n) ; }
6
无条件转向语句:goto
格式: goto 语句标号;
功能: 将程序控制转移到“语句标号”标识的语句执行。
7
语句标号:
用标识符表示
用来标识语句,它出现在语句的前面,用冒号 ( :) 与语句分开,使用格式为:
语句标号:语句;
p1:printf(“hello!”); printf(“world!”); …. goto p1;
}while(flag!=1);
printf(“i=%d\n”, i);
}
33
while与do..while:
while:先判定表达式,后执行循环;
do…while:先执行循环,再判断表达式;
即:do…while语句的循环体至少会被执行一次。
int i=0;
int i=0;
while(i)
do
{…}
}
28
do while 循环
直到型循环
29
格式: do {循环体;} while(表达式);
执行过程: 先执行循环体。 再求解表达式的值,判断,为真则执行循环体,否
则退出循环。
30
执行过程用流程图表示为: 循环体语句 flase 表达式
true
31
例1_2 main() {
int i=1,sum=0; do
else ch = ch – 32;
printf(“%c”, ch);
}
} 47
课堂练习:for语句
◆ 3. 写出下面程序运行的结果。
void main( ) {
答案: sum=2468
int a=2 , i , sum=0 , temp=0 ;
for ( i = 1 ; i <= 4 ; i = i + 1 )
double sum=0,p=1; int i=1; while(i<=64) {
sum+=p; p*=2; i++; } printf(“%.7le\n”, sum); getch(); }
21
课堂练习:while 语句
◆ 1. 下面程序执行的结果是( )。 void main( ) {
int n = 0 ; while ( n = 0 ) n = n - 1; printf(“n = %d\n”, n) ; }
37
执行过程用流程图表示为:
求解表达式1
表达式2
true
循环体语句
flase
求解表达式3
for语句
for语句的下一语句
38
一般说来,for 语句的格式可以理解为如下形式:
for(初始化表达式 ; 条件表达式 ;修正表达式) { 循环体语句 }
例如:求1——100的和 int i, sum=0; for(i=1; i<=100 ; i++) {sum=sum+i;}
i=1
i<=100
F
T sum=sum+i
i++
39
由for语句流程图可以看出,可以有以下几种省略 形式: • 表达式1省略,但不能省略分号。但给循环变量赋初 值应在for语句前完成。
例如: … i=1; for(; i<=100 ; i++) { …}
40
• 表达式3省略,但不能省略分号。但要将表达式3包 含到循环体中。
相关文档
最新文档