第3章 C++程序设计初步(3)
6 选择结构和if语句
1 最简单的if语句(成绩判定1,两个数按从小到大输出)如果条件成立要执行多条怎么办??(成绩判定1,复合语句)常规的if语句(两个分支)(成绩判定2)在if与else之间可以写多条吗?多个分支怎么办(成绩判定3)
2 三角形的面积(先判断能否组成)
3 if语句的嵌套(先分两大情况,每一情况中再细分)
例如:学生选课。
男生:篮球,足球
女生:瑜珈,太极,健美操
#include
using namespace std;
int main()
{
// 学生选课。
//男生:篮球,足球
// 女生:瑜珈,太极,健美操
int gender;
int subject;
cout<<"请输入你的性别:1 男 2 女:"<<endl;
cin>>gender;
if(gender==1)
{
cout<<"请输入你的选课 1 篮球 2 足球:";
cin>>subject;
if(subject==1)
{
cout<<"打篮球的男生最帅了!!"<<endl;
}
else
{
cout<<"足球是世界上球迷最多的运动!!"<<endl;
}
}
else if(gender==2)
{
cout<<"请输入你的选课 1 瑜珈,2 太极,3 健美操:";
cin>>subject;
if(subject==1)
{
cout<<"练习瑜珈,调整身心!!"<<endl;
}
else if(subject==2)
{
cout<<"练习太极,打败色狼!!"<<endl;
}
else if(subject==3)
{
cout<<"学习健美操,练出好身材!!"<<endl;
}
else
{
cout<<"学校还没有那么多课程啊!!"<<endl;
}
}
else
{
cout<<"你输入的性别好奇怪啊!!"<<endl;
}
system("pause");
return 0;
}
例如:周末安排(朋友来:火锅?电影? 不来:学习?运动?在宿舍当猪)
4 else离不了if,if能离开else,注意配对关系。与前面距离最近并且没有配对的if配对。
5 条件运算符和条件表达式(唯一的三目运算)
?: 参与运算的有三个值,
表达式1?表达式2:表达式3
先计算表达式1的值
如果值为非0 则表达式2为整个表达式的结果
如果值为0 则表达式3为整个表达式的结果
#include
using namespace std;
int main()
{
int a,b,max;
cin>>a>>b;
max=a>=b?a:b;
/*
if(a>=b)
max=a;
else
max=b;
*/
cout<<max<<endl;
return 0;
}
6 多分支选择结构与switch。(判断与多个值中哪个相等,成绩判定4)
#include
using namespace std;
int main()
{
cout << " 爱情心理测试 " << endl;
cout << “如果你的5个手指头都破了,只能包一个,请问你要包哪一个?”<< endl;
cout << “请选择:1 大拇指, 2 食指, 3 中指, 4 无名指, 5 小指”<< endl;
int choose = 0;
cin >> choose;
//利用if语句进行判断
if (choose == 1)
{
cout << "你选择的是大拇指!\n";
cout << "你是幸运神,有人会爱你一生一世!\n";
}
else if (choose == 2)
{
cout << "你选择的是食指!\n";
cout << "你是痴情种,会用一生去爱一个人!\n";
}
else if (choose == 3)
{
cout << "你选择的是中指!\n";
cout << "你是花心大萝卜,一生会爱上很多人!\n";
}
else if (choose == 4)
{
cout << "你选择的是无名指!\n";
cout << "你是自恋狂,不爱别人爱自己!\n";
}
else if (choose == 5)
{
cout << "你选择的是小指!\n";
cout << "你是万人迷,会有很多人爱上你!\n";
}
else
{
cout << "输入错误!难道你有" << choose << "个手指头!\n";
}
getchar();getchar();
}
Switch语句的功能,根据switch后()中的值与{}中case后面的值比较是否相等。与哪个相等则执行相应 的语句。Case后面的值不允许重复。只能是常量(整型 字符)
如果与所有的值都不相等,如果有Default,则执行Default后面的语句。
与case后面的常量比较相等后,执行相应的语句直到遇到break
ALT+F8调整选中部分代码格式({}单独占一行)
#include
using namespace std;
int main()
{
cout << " 爱情心理测试 " << endl;
cout << “如果你的5个手指头都破了,只能包一个,请问你要包哪一个?”<< endl;
cout << “请选择:1 大拇指, 2 食指, 3 中指, 4 无名指, 5 小指”<< endl;
int choose = 0;
cin >> choose;
switch(choose)
{
case 1:
cout << "你选择的是大拇指!\n";
cout << "你是幸运神,有人会爱你一生一世!\n";
break;
case 2:
cout << "你选择的是食指!\n";
cout << "你是痴情种,会用一生去爱一个人!\n";
break;
case 3:
cout << "你选择的是中指!\n";
cout << "你是花心大萝卜,一生会爱上很多人!\n";
break;
case 4:
cout << "你选择的是无名指!\n";
cout << "你是自恋狂,不爱别人爱自己!\n";
break;
case 5:
cout << "你选择的是小指!\n";
cout << "你是万人迷,会有很多人爱上你!\n";
break;
default :
cout << "输入错误!难道你有" << choose << "个手指头!\n";
break;
}
}
#include
using namespace std;
int main()
{
char grade;
cout<<“请输入成绩等级:(ABCDE)”;
cin>>grade;
switch(grade)
{
case ‘a’:
case ‘A’:
cout<<“very Good!!!”<<endl;
cout<<“very Good!!!”<<endl;
break;
case ‘B’:
case ‘b’:
cout<<“Good!!!”<<endl;
break;
case ‘C’:
case ‘c’:
cout<<“OKOK!!!”<<endl;
break;
case ‘D’:
case ‘d’:
cout<<“pass!!!”<<endl;
break;
case ‘E’:
case ‘e’:
cout<<“fail!!!”<<endl;
break;
default:
cout<<“输入错误!!”<<endl;
}
}
#include
using namespace std;
int main()
{
int grade;
cout<<“请输入成绩等级(0-100):”;
cin>>grade;
switch(grade/10)
{
case 10:
case 9:
cout<<“very Good!!!”<<endl;
cout<<“very Good!!!”<<endl;
break;
case 8:
cout<<“Good!!!”<<endl;
break;
case 7:
cout<<“OKOK!!!”<<endl;
break;
case 6:
cout<<“pass!!!”<<endl;
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
cout<<“fail!!!”<<endl;
break;
default:
cout<<“输入错误!!”<<endl;
}
}
进阶问题:switch嵌套
int a,b,c=0;
a=1;b=1;
//a=1;b=2;
//a=2;b=1;
//a=2;b=2;
switch(a)
{
case 1:
switch (b)
{
case 1:
c++;
case 2:
c=c*5;
break;
}
case 2:
switch(b)
{
case 1:
c=c+5;
break;
case 2:
c=c+7;
}
}
cout<<c<<endl;
7 判断闰年
#include
using namespace std;
int main()
{
int year;
cin>>year;
if((year%400==0)||(year%4= =0&&year%100!=0))
{
cout<<year<<“年是闰年!”<<endl;
}
else
{
cout<<year<<“年不是闰年!”<<endl;
}
}
#include
using namespace std;
int main()
{
int year;
cin>>year;
if(year%4= =0)
{
if(year%100= =0)
{
if(year%400= =0)
{
cout<<year<<“年是闰年!”<<endl;
}
else
{
cout<<year<<“年不是闰年!”<<endl;
}
}
else
{
cout<<year<<“年是闰年!”<<endl;
}
}
else
{
cout<<year<<“年不是闰年!”<<endl;
}
}
作业:输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方之和等于该数本身