5.1 if语句
5.1.1 if语句的表达形式
1)有的时候,并不是所有语句都要被顺序执行到,会有满足某种条件就执行这部分语句,满足另一条件就执行另一部分语句。这就需要条件分支结构。形式如下:
if(表达式1){ //依次计算表达式1、表达式2...只要碰到一个表达式i为真,就执行语句组i
语句组1; //后面的表达式不在计算,后面的语句也不会被执行。
} //如果所有表达式都为假,那么执行语句组n
else if(表达式2){
语句组2;
}
//可以有n多个else if
else if(表达式n-1){
语句组n-1;
}
else{
语句组n;
}
2)if语句可以没有else if,也可以没有else,也可以都没有
if(表达式1){
语句组1;
}
else{
语句组2;
}
if(表达式1){
语句组1;
}
else if(表达式2){
语句组2;
}
if(表达式1){
语句组1;
}
3)如果if语句组只有一条语句,可以不用{ }.
if(n > 4)
ptintf("%d", n);
例题:请输入一个整数,如果是奇数就输出it’s odd,如果是偶数就输出it’s even
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int n;
scanf("%d", &n);
if (n % 2 == 0)
printf("it's even.");
else
printf("it's odd.");
return 0;
}
5.1.2 if语句嵌套
1)在if语句组里还可以在写if语句
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int n;
cin>> n;
if (n > 0){
if (n % 2)
cout<<"good"<<endl;
}
else //else总是和与他同等级且最近的配对
cout<<"bad"<<endl;
return 0;
}
5.1.3 if语句常见错误
1)互相矛盾的多个条件,如果确实只希望执行其中一个分支,应该用if和多个else if,而不要写多个if.
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int n;
cin>> n;
if (n >= 0 && n < 5)
n = 8;
else if(n >= 5)
n = 12;
else
n = 100;
cout<< n <<endl;
return 0;
}
5.2 switch语句
1)有的时候,使用太多else if不够方便,这就引出了switch语句,用法如下:
switch(表达式){ //表达式的值必须是整数类型(int,char,short...)
case 常量表达式1: //常量表达式必须是整数类型的常量(int,char,short...)
语句组1; //表达式的值等于哪个常量表达式就执行哪个语句组。都不相等
break; //执行default
case 常量表达式2:
语句组2;
break;
....
case 常量表达式n:
语句组n;
break;
default:
语句组n+1;
}
常量表达式不能包含变量!!!
例题:输入一个整数1-7,对应输出周几,输入其他整数,则输出"illegal".
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int n;
cin>> n;
switch(n){
case 1:
cout<<"周1."<<endl;
break;
case 2:
cout<<"周2."<<endl;
break;
case 3:
cout<<"周3."<<endl;
break;
case 4:
cout<<"周4."<<endl;
break;
case 5:
cout<<"周5."<<endl;
break;
case 6:
cout<<"周6."<<endl;
break;
case 7:
cout<<"周日."<<endl;
break;
default:
cout<<"illegal."<<endl;
}
return 0;
}
switch语句在进入某个case后,会一直执行第一个碰到的“break”,即使这个break是在后面的分支里,如果没有碰到break,则会一直执行到switch语句末尾的},包括default部分的语句组也会被执行,所以要全部加上break!!!