P19-21:
- while死循环善于解决输入若干个数字的问题,所以当我们做题时发现题目中出现若干这样的字眼,或者在输入的时候发现需要输入很多数字,以某个条件作为结束标志,那么这个时候我们就可以选用while死循环来解决问题。
while(1){ 输入语句; if(表达式){ break; } 循环语句; }
- while(表达式)循环善于解决输入有限个数字,当满足某一条件时结束循环(循环次数不确定)这类题目。
输入数据; while(表达式){ 执行循环语句; }
- for循环善于解决输入确定个数字的题目,当我们发现题目输入描述中出现如下表述:
- 输入两行,第一行一个数字,第二行输入n个数
- 输入n+1行,第一行…,接下来n行,每行…
注意:由输入的数字大小决定循环次数的,可以使用for循环解决.
for(控制循环变量定义并赋初值;控制循环条件;控制循环变量变化){ 循环语句; }
- do-while语句:
do-while循环与while循环的不同在于:它先执行循环中的语句,再判断表达式是否为真;如果为真则继续循环,如果为假则终止循环,因此do-while循环至少要执行一次循环语句do{ 循环语句; }while(表达式);
- 三种循环的比较:
- while循环时当型循环,一般用于循环次数不定的情况,for循环一般用于循环次数确定的情况(也可以用于循环次数确定的情况)
- for循环和while循环都是先判断条件为真,再执行循环体,因此,可能出现循环一次也不执行的情况; 而do-while循环是先执行循环体, 再判断条件是否为真,因此循环至少会执行一次.
- 能用for循环解决的问题,一定能够用while循环解决
- 循环输入:
循环内使用输入语句,循环每执行一次就输入一次,循环执行n次,输入n次int n,a; cin>>n; for(int i = 0; i<n; ++i){ cin>>a; }
- 常用特殊变量:
- 计数器:定义一个变量用来计数,变量要赋初值为0,满足某一个条件时,计数器+1,形式:
int cnt = 0; 循环结构(){ if(表达式){ ++cnt; } }
- 累加器:变量用来求和,并且要初始化为0,形式:
int sum = 0; 循环结构(){ if(表达式){ sum = sum + 数据; } }
- 累乘器:变量用来求乘积,并且要初始化为1,形式:
int fac = 1; 循环结构(){ if(表达式){ fac = fac * 数据; } }
- 最大值:定义max,并且用一个很小的值将它初始化,利用if语句进行判断,形式:
if(a>max) max = a;
- 最小值:定义min,并且用一个很大的值将它初始化,利用if语句进行判断,形式:
if(a<min) min = a;
- 计数器:定义一个变量用来计数,变量要赋初值为0,满足某一个条件时,计数器+1,形式:
- 循环结合整数数位分离: 取个位:%10, 去个位: /10
cin>n; while(n != 0){ t = n%10;//取到个位数 n = n/10;//去掉个位数 }