第六章循环控制结构
一、知识
1.条件控制的循环(特别地:标志变量控制的循环)
计数控制的循环
2.用于结构化程序设计的三种基本结构
①顺序结构 ②选择结构 ③循环结构
其中循环结构分为当型循环结构和直到型循环结构
3.for语句:
更适合于计数控制的循环
*需要注意两个分隔符";"不可缺少
for( ; ; )后加上分号,起延时的作用
逗号表示式:循环变量可以超过一个eg. for(i=1,j=n;i=j;i++,j- -)
4.while语句:
更适合于循环次数未知、条件控制的循环
*注意while( )后加上分号可导致死循环
while中的计数变量控制要注意是i++还是++i;
特别注意需要用while解决的问题很多需要反着找(逆向思维)
5.do-while语句:直到型循环
在循环底部进行循环条件测试,循环至少执行一次。(这说明在第一次判断为假的情况下do-while与while不等价)
适合于循环次数未知、条件控制的循环
6.局部变量与复合语句
局部变量在循环语句中定义的变量,只能在循环语句中使用,一般在循环内赋值或紧靠循环赋值
循环中常用复合语句来执行多个工作
7.一些新学的函数:
setw():cout<<setw(x)<<a<<endl;在cpp的<iomanip>中
//其中的setw(x)的作用是控制输出的a的宽度为x//
puts():就是printf(“...\n”) <studio.h>中
floor()/ceil():向下取整和向上取整<math.h>中
exit(code):结束程序:当code的值为0时,表示程序正常退出;当code的值为非0值时,表示程序出现某种错误后退出/在cpp的<cstdlib>中
rand( ):伪随机数生成(具体为啥是假的我现在都没搞懂233),产生[0,32767]之间的随机数 在cpp的<csdlib>中
产生[0,b-1]之间的随机数 magic=rand( )%b;
产生[a,a+b-1]之间的随机数 magic=rand( )%b+a;
真正随机需要设个种子需要加一条srand(a);a即是seed,任何数都可以
8.多组测试数据
有效输入重复,无效输入退出
while(scanf("%d",&x)!=EOF)
while(scanf("%d",&x)!=1)//注意这里是不等于输入的变量个数//
while(cin>>x)
上述的三条语句中内涵了输入语句,不需要在循环体中再写入
9.流程的转移控制
①goto语句:无条件转移到标号(label)所标识的语句处去执行
1 Label命名同变量名2 goto一般和if联用3没有特殊情况禁用
②break语句:用于退出switch或一层循环结构
(连跳可用goto)
③continue语句:用于结束本次循环、继续执行下一次循环
10.标志变量控制的循环
eg.
bool find=0;
for(i=1;!find;i++)
{
if(...){...;find=1;}//找到了//
}
二、应用
累加累乘问题/找最大最小
筛选同类/特殊数据并进行一定操作(eg.求一个整数含3的个数)
循环结构是解决递归,递推问题的主要手段之一(特别是需要暴力的时候)