C++基础16 多分支结构

多分支结构基本框架

if(条件1)
    语句1;       //满足条件1就执行
else if(条件2)
    语句2;       //不满足条件1,但是满足条件2执行
else if (条件3)
    语句3;       //不满足条件1和条件2,满足条件3执行
......
else 语句 n;     //不满足上面所有条件就执行

if开始,中间都是else if,最后是以else结束是对上面所有条件的否定

不同三角形

我们已经知道三角形的成立条件是任意两边之和大于第三边了。按照边长的特性我们还将三角形分为等边,等腰和一般三角形。

等腰三角形就是有两边相等,等边三角形就是三边都相等,一般三角形就是任意两边都不等。

训练:特殊三角形

输入三角形的三边,判断它是何种类型的三角形?是等边的话输出'DB',仅是等腰的话输出'DY',除此之外都属于一般三角形,输出'YB',如果不能构成三角形则输出'NO'。(1<=a<=10,1<=b<=10,1<=c<=10)

【输入格式】三个整数a,b,c,分别代表三条边的边长

【输出格式】DB或者DY或者YB或者NO

【输入样例】3 4 3

【输出样例】DY

解析

判断是否是三角形:首先要判断这三条边是否能构成三角形,即要满足任意两边之和要大于第三边

是三角形:除去上面的情况,则能构成三角形,紧接着判断什么类型的三角形

参考代码

#include<iostream>
using namespace std;
int main( )
{
    int a,b,c;
    cin>>a>>b>>c;
    if(a+b<=c||a+c<=b||b+c<=a)
        cout<<"NO";
    else  if(a==b&&a==c)
        cout<<"DB";
    else  if(a==b||a==c||b==c)
        cout<<"DY";
    else  cout<<"YB";
    return 0;
}

训练:电脑故障

学校组织的某次竞赛一共有99位学生参加,考试结束后老师对编号从1-99的每一位同学的成绩进行名次标注,并在电脑上记录。结果电脑出现了故障,将第1名到第9名改为了10,20,30...90 名,将第10,20,30...90 名改为了第1到第9名。竞赛成绩前50名(包括50名)的同学获得奖励,后49名没有奖励。在电脑故障后随意输入一个同学的名次n,输出在电脑故障之前他应该是什么名次,和之前是否应该获得奖励。(1<=a<=100)

【输入格式】一个整数n,表示故障后的名次

【输出格式】故障前的名次和是否获奖,用空格隔开(获得奖励输出Yes,没有获得输出No)

【输入样例】70

【输出样例】7 Yes

解析

调整现在的10-90名:现在的10-90名其实是1-9名,将10-90调整回1-9,需要将这个数被10整除

调整现在的1-9名:现在的1-9名其实是10-90名,将1-9调整回10-90,需要将这个数乘以10

参考代码

#include<iostream>
using namespace std;
int main( )
{
    int n;
    cin>>n;
    if(n%10==0)     n=n/10;
    else if(n<10)    n=n*10;
    if(n<=50)    cout<<n<<" Yes";
    else    cout<<n<<" No";
    return 0;
}