程序控制语句
一 选择控制
1if语句
if语句是用来判定所给定的条件是否满足,
根据判定的结果(真或假)决定执行给出
的两种操作之一。
if语句(条件选择语句)
if语句的三种形式
形式一:
格式: if (expression)
statement
形式二:
格式:if (expression)
statement1
else
statement2
形式三:
格式:
if ( expr1 ) statement1
else if (expr2 ) statement2
else if (expr3 ) statement3
…...
[ else statementn ]
复合语句:用 {…}括起来的一组语句
一般形式: { [数据说明部分;]
执行语句部分;
}
说明:
"}"后不加分号
语法上和单一语句相同
复合语句可嵌套。
if (expr1)
if (expr2) 语句1
else 语句2
else
if(expr3) 语句3
else 语句4
内嵌if
每个else只与它前面最近的那个尚未配对的if相配对。
注意,若没上述规定的话,如下形式的语句将产生二义性(两
个if将"争夺"
同一个else!)。
if ( <表达式1> )
if ( <表达式2> ) <语句1>
else <语句2>;
例: if (a==b)
if(b==c)
cout<<"a==b==c";
else
cout<<"a!=b";
修改: if (a==b)
{ if(b==c)
cout<<"a==b==c";
}
else
cout<<"a!=b";
实现if ~ else 正确配对方法:加{ }
2 switch语句
switch( 表达式)//表达式必须为整型或字符型
{ case E1:
语句组 1;
break;
case E2:
语句组 2;
break;
…….
case En:
语句组 n;
break;
[default:
语句组 ;
break;]
}
E1,E2,…En是常量表达式,且值必须互不相同
语句标号作用,必须用break跳出
case后可包含多个可执行语句,且不必加{ }
switch可嵌套
多个case可共用一组执行语句
如: ……
case 'A':
case 'B':
case 'C':
cout<<"score>60\n";
break;
……..
例 switch(score)
{ case 5: cout<<"Very good!";
case 4: cout<<"Good!";
case 3: cout<<" Pass!";
case 2: cout<<" Fail!";
default : cout<<" data error!";
运行结果:score为5时,输出:
Verygood!Good!Pass!Fail!dataerror
3while
一般形式:while(表达式)
循环体语句
特点:先判断表达式,后执行循环体(当型)
说明:
循环体有可能一次也不执行
循环体可为任意类型语句
下列情况,退出while循环:
条件表达式不成立(为零)
循环体内遇break,return,goto
无限循环:
while(1)
循环体;
例如: 求1~10的平方
#include <iostream>
using namespace std;
void main()
{ int i=1, j;
while(i<=10)
{
j=i*i;
cout<<i<<"*"<<i<<"="<<j;
i++;
}
}
输出结果
运行结果:
1*1=1
2*2=4
3*3=9
4*4=16
5*5=25
6*6=36
7*7=49
8*8=64
9*9=81
10*10=100
4do while
一般形式:
do
循环体语句
while(表达式);
特点:先执行循环体,后判断表达式(直到型)
说明:
至少执行一次循环体
do-while可转化成while结构
while和do~while比较
#include <iostream>
using namespace std;
void main()
{ int i,sum=0;
cin>>i;
do
{ sum+=i;
i++;
}while(i<=10);
cout<<sum;
}
#include <iostream>
using namespace std;
void main()
{ int i,sum=0;
cin>>i;
while(i<=10)
{ sum+=i;
i++;
}
cout<<sum;
}
4for
一般形式
for([表达式1];[表达式2];[表达式3])
循环体语句
1.先求解表达式1;
2.求解表达式2,若其
值为真(非0),则执
行循环体的内容,
然后执行表达式3。
若为假(0),则结束
循环,执行for语句
下面一条语句。
3.若表达式为真,执
行指定的语句后,
求解表达式3。
4.返回第2步执行。
用for循环求 1~100的和
#include <iostream>
using namespace std;
void main()
{ int i,sum=0;
for(i=1;i<=100;i++)
sum+=i;
cout<<sum;
}
for语句中表达式1、表达式2、表达式3类型任意
,都可省略,但分号;不可省
无限循环: for(;;)
for语句可以转换成while结构
表达式1;
while(表达式2)
{
循环体语句;
表达式3;
}
几种循环的比较
1.三种循环均可处理同一问题;
2.for和while语句为先判断后执行,do-while语句则
先执行后判断;
3.do-while和while 语句多用于循环次数不定的情况,
for语句用于循环次数确定的情况;
4.do-while语句更适合第一次肯定执行的情况;
5.do-while和while语句只有一个表达式,用于控制循
环是否进行。for语句有三个表达式,不仅可以控
制循环是否进行,而且能为循环变量赋初值及不
断修改其值。故for语句功能更强,更灵活。
break语句和continue语句
1 break语句
一般形式:break;
功能:在循环语句和switch语句中,终止并
跳出循环体或开关体
说明:
break只能终止并跳出最近一层的结构
break只能用于循环语句和switch语句
2 continue语句
一般形式:continue;
功能:结束本次循环,跳过循环体中尚未执行的语句,
对于while 和 do-while,进行下一次是否执行循环体的判断。
对于for(e1;e2;e3),先执行e3,再进行下一次是否执行循环体的判
断。
说明:
仅用于循环语句中
continue 语句仅结束本次循环,
break语句则是结束整个循环过程。