C++的流程控制语句
程序的三种基本结构
1、顺序
2、选择
3、循环
if语句
判断选择语句,有三种形式:
(1)if(表达式) 语句
if (a>b)
cout<<a;
(2)if(表达式) 语句1
else 语句2
if (a>b)
cout<<a;
else
cout<<b;
(3)if(表达式1) 语句1
else if (表达式2) 语句2
......
else if (表达式n) 语句n
else 语句n+1
注意:1) if 后可跟复合语句。
2) 注意 ;的位置。
3) 注意多重 if else 的搭配。
if (a>b)
{ a=1;
b=0;
}
else
{ a=0;
b=1;
}
if (i >j) i++;
if (i>j); i++;
if 总是与它上面最近的 else 配对,如要改变,用复合语句{ }。
注意书写格式,相互配对的语句要对齐。
例:输入两个实数,按代数值由小到大次序输出这两个数。
void main( void )
{
float a,b,t; //定义变量
cout<<“ Input 2 Real Number:\n";//在屏幕上的提示信息
cin>>a>>b; //给变量赋值 a:7, b:3
if(a>b)
{ t=a; a=b; b=t; }//交换数据,用中间变量
cout<<a<<‘\t’<<b<<endl;//输出变量
}
输出结果:
3 7
嵌套的条件语句(举例说明)
x=100; a=10; b=20; ok1=5; ok2=0;
if(a<b)
if(b!=15)
if(!ok1) x=1;
else if (ok2) x=10; x=-1;
x=-1
条件运算符
是C++中的唯一的三目运算符。
表达式1?表达式2 :表达式3
max=a>b?a:b ; // 求a, b中的大者
当 a=2 b=1 a>b为真,表达式的值等于a, max值为2
当 a=1 b=2 a>b为假,表达式的值等于b, max值为2
注意:
1. 条件运算符的优先级比赋值运算符高
x=(x=3) ? x+2 : x-3
2. 结合方向自左至右 a>b?a:c>d?c:d
3. 三个表达式的类型可不同 z=a>b?'A':a+b
x=9, y=6, z=5;
x=((x+y)%z>=x%z+y%z)?1:0;
cout<<"x= "<<x<<endl;
x=0
x=1; y=2; z=3; y=y+z=5
x+=y+=z; x=x+5=6
cout<<( z+=x>y?x++:y++)<<endl;
9
void main(void )
{ int x=1,y=2,z=3;
x+=y+=z;
cout<<x<y?y:x<<endl;
cout<<x<y?x++:y++<<endl;
cout<<x<<“,”<<y<<endl;
cout<<z+=x>y?x++:y++<<endl;
cout<<y<<“,”<<z<<endl;
x=3; y=z=4;
cout<<(z>=y&&y= =x)?1:0<<endl;
cout<<z>=y&&y>=x<<endl;
}
执行以下程序段后,变量a,b,c的值分别是:
int x=10, y=9;
int a,b,c;
a=(--x= =y++)?--x:++y; x=8 y=10 a=8
b=x++; b=8 x=9
c=y; c=10
void main(void )
{ int a=5,b=1,c=0;
if(a=b+c) cout<<“* * *\n”;
else cout<<“$ $ $\n”;
}
* * *
switch语句
多分支选择语句。if语句只有两个分支,而实际问题中常常需要用到多分支的选择。如,成绩分为A(100~85)、B(84~70)、C(69~60)、D(60以下)等。
cin.get(grade);
if(grade= =‘A’)
cout<<“100~85\n”;
else if (grade= =‘B’)
cout<<“84~70\n”;
else if (grade= =‘C’)
cout<<“69~60\n”;
else if (grade= =‘D’)
cout<<“no pass\n”;
else
cout<<“error\n”;
switch(表达式)
{ case 常量表达式1:语句1
case 常量表达式2:语句2
… …
case 常量表达式n:语句n
default:语句n+1
}
switch(grade) 如果grade为 ‘A’,则结果为
{ case ‘A’:cout<<“100~85\n”; 100~85
case ‘B’:cout<<“84~70\n”; 84~70
case ‘C’:cout<<“69~60\n”; 69~60
case ‘D’:cout<<“no pass\n”; no pass
default:cout<<“error\n”; error
}
其流程为:先计算表达式的值,然后顺序地与case子句中所列出的各个常量进行比较,若表达式的值与常量中的值相等,就开始进入相应的case语句执行程序,遇到case和default也不再进行判断,直至switch语句结束。如果要使其在执行完相应的语句后中止执行下一语句,可以在语句后加break。
switch(grade)
{ case ‘A’:cout<<“100~85\n”; break;
case ‘B’:cout<<“84~70\n”; break;
case ‘C’:cout<<“69~60\n”; break;
case ‘D’:cout<<“no pass\n”; break;
default:cout<<“error\n”;
}
注意:
1、switch与if不同,它仅能判断一种逻辑关系,即表达式是否等于指定的常量,而 if 可以计算并判断各种表达式。
2、case子句后必须为常量,常常是整型和字符型。
3、default可以省略,这时,不满足条件什么也不执行。
4、case和default只起标号的作用,顺序可以颠倒,颠倒时注意后面的break语句。
5、多个case语句可以共用一组程序。
case ‘A’:
case ‘B’:
case ‘C’: cout<<“pass!\n”;
void main(void )
{ int i=10;
switch(i)
{ case 9: i++;
case 10: i++; i=11
case 11: i++; i=12
default: i++; i=13
} cout<<“i=”<<i<<endl;
}
i=13
int x=1, y=0, a=0, b=0;
switch( x )
{ case 1:
switch( y )
{ case 0: a++; break; a=1
case 1: b++; break;
}
case 2:
a++; b++; break; a=2 b=1
case 3:
a++; b++;
} a=2b=1
cout<<“a=“<<a<<‘\t’<<“b=”<<b<<endl;