内容正文:
第四章
循环程序设计
1
do……while
1、
2
do……while循环
4.2
do……while语句是一种称为“直到型”的循环。
一般形式:
do
{ 语句序列;
}while(表达式);
表达式
语句序列
假(0)
真(非0)
变量初始化
注意:
1、while(表达式)后面的“ ;”不能遗漏
2、do……while循环中,即使只有单一语句,“{}”也不能省略。
3
do……while循环
4.2
执行过程:
表达式
语句序列
假(0)
真(非0)
变量初始化
①、执行循环体中的语句,开始一个循环的周期。
②、计算表达式的值。如果表达式为非0,即循环条件为真,则转到①步,开始下一个循环周期;若表达式为0,即循环条件为假,则转到第③步。
③、结束do……while循环,转到执行do……while循环语句后的第1条语句。
do……while语句执行的特点:先执行循环体,后判断条件,至少执行一次循环。
4
do……while循环
4.2
例4-2:比较下面while语句与do……while语句:
#include < stdio . h>
main( )
{ char ch ;
ch=getchar() ;
do
{ putchar(ch) ;
ch=getchar( ) ;
} while(ch!='*');
}
输入:ABC*
输入:*AB* #include < stdio . h >
main( )
{ char ch ;
ch=getchar() ;
while(ch!='*')
{ putchar(ch);
ch=getchar( );
}
}
输入:ABC*
输入:*AB*
观察这两个程序,找同学试着说出程序的功能
5
do……while循环
4.2
例4-2:比较下面while语句与do……while语句:
#include < stdio . h>
main( )
{ char ch ;
ch=getchar() ;
do
{ putchar(ch) ;
ch=getchar( ) ;
} while(ch!='*');
}
输入:ABC*
输入:*AB* #include < stdio . h >
main( )
{ char ch ;
ch=getchar() ;
while(ch!='*')
{ putchar(ch);
ch=getchar( );
}
}
输入:ABC*
输入:*AB*
6
do……while循环
4.2
例4-3:输入一个整数,按相反次序输出。例如:输入54321,输出12345。
分析:前面我们曾用if语句编写过,输入三位数、四位数然后反次序输出的题目,但这道题目没有说是几位数,因此用以前的模式编写显然不行了。
用循环编写,循环体应该是什么呢?
循环体就是将输入的数,每一位分解出来,然后输出来
7
do……while循环
4.2
例4-3:输入一个整数,按相反次序输出。例如:输入54321,输出12345。
定义变量:输入的数num,提取的数b
如何提取:
假设五位数54321,以前我们是怎么做的?
提取1,我们用的办法是除10取余,
提取2,我们用5432再除10取余,
提取3,我们用543再除10取余,
提取4,我们用54再除10取余
8
do……while循环
4.2
假设五位数54321,以前我们是怎么做的?
提取1,我们用的办法是除10取余,
提取2,我们用5432再除10取余,
提取3,我们用543再除10取余,
提取4,我们用54再除10取余
54321%10
然后54321/10,得到5432
5432%10
然后5432/10,得到543
543%10
然后543/10,得到54
54%10
从上面过程可以看出,循环体的内容就是每次循环%10,然后将提取出的数输出,剩下的部分继续循环。
9
do……while循环
4.2
例4-3:输入一个整数,按相反次序输出。例如:输入54321,输出12345。
定义变量:输入的数num,提取的数b
循环体:
do
{ b=num%10;
printf(“%d”,b);
num=num/10;
}while(num);
10
do……while循环
4.2
例4-3:输入一个整数,按相反次序输出。例如:输入54321,输出12345。
定义变量:输入的数num,提取的数b
循环体:
do
{ b=num%10;
printf(“%d”,b);
num=num/10;
}while(num);
#include <stdio.h>
main( )
{ long num,b;
num=0;
b=0;
printf("请输入一个整数");
scanf("%ld",&num);
do
{b=num%10;
printf("%d",b);
num=num/10;
}while(num);
}
11
do……while循环
4.2
例4-3:输入一个整数,按相反次序输出。例如:输入54321,输出12345。
定义变量:输入的数num,提取的数b
循环体:
do
{ b=num%10;
printf(“%d”,b);
num=num/10;
}while(num);
#include <stdio.h>
main( )
{ long num,b;
num=0;
b=0;
printf("请输入一个整数");
scanf("%ld",&num);
do
{b=num%10;
printf("%d",b);
num=num/10;
}while(num);
}
12
do……while循环
4.2
例4-3:输入一个整数,按相反次序输出。例如:输入54321,输出12345。
定义变量:输入的数num,提取的数b
循环体:
do
{ b=num%10;
printf(“%d”,b);
num=num/10;
}while(num);
#include <stdio.h>
main( )
{ long num,b;
num=0;
b=0;
printf("请输入一个整数");
scanf("%ld",&num);
do
{b=num%10;
printf("%d",b);
num=num/10;
}while(num);
}
13
do……while循环
4.2
例4-3:输入一个整数,按相反次序输出。例如:输入54321,输出12345。
定义变量:输入的数num,提取的数b
循环体:
do
{ b=num%10;
printf(“%d”,b);
num=num/10;
}while(num);
#include <stdio.h>
main( )
{ long num,b;
num=0;
b=0;
printf("请输入一个整数");
scanf("%ld",&num);
do
{b=num%10;
printf("%d",b);
num=num/10;
}while(num);
}
14
do……while循环
4.2
例4-3:输入一个整数,按相反次序输出。例如:输入54321,输出12345。
定义变量:输入的数num,提取的数b
循环体:
do
{ b=num%10;
printf(“%d”,b);
num=num/10;
}while(num);
#include <stdio.h>
main( )
{ long num,b;
num=0;
b=0;
printf("请输入一个整数");
scanf("%ld",&num);
do
{b=num%10;
printf("%d",b);
num=num/10;
}while(num);
}
15
do……while循环
4.2
例4-3:输入一个整数,按相反次序输出。例如:输入54321,输出12345。
定义变量:输入的数num,提取的数b
循环体:
do
{ b=num%10;
printf(“%d”,b);
num=num/10;
}while(num);
#include <stdio.h>
main( )
{ long num,b;
num=0;
b=0;
printf("请输入一个整数");
scanf("%ld",&num);
do
{b=num%10;
printf("%d",b);
num=num/10;
}while(num);
}
16
do……while循环
4.2
例4-3:输入一个整数,按相反次序输出。例如:输入54321,输出12345。
#include <stdio.h>
main( )
{ long num,b;
num=0;
b=0;
printf("请输入一个整数");
scanf("%ld",&num);
do
{b=num%10;
printf("%d",b);
num=num/10;
}while(num);
}
思考:这道题目能否用while循环解决?
为什么?
不行,
原因是本题中无法确定循环次数。而用while循环需确定循环次数。
17
$$