C++005-C++选择与分支2

简介: C++005-C++选择与分支2

C++005-C++选择与分支2


在线练习:

http://noi.openjudge.cn/ch0104/


条件语句C++实现


C++ 有以下条件语句:


使用if指定的代码块将被执行,如果一个指定的条件是真

使用else指定的代码块将被执行,如果相同的条件为假

使用else if指定一个新的条件测试,如果第一个条件为假

使用switch指定的代码许多替代块被执行


else if 语句

如果if语句为假,则执行else if,else if也为假才执行else:

d646c7fa45d23a427448b5b7e294dc51_9cfc78977490418590c37e3e7073d018.png

d1ddd58a40aa85766ef543ead745cf2f_cb54bb6030a645a085cc56a4dabe668f.png


题目描述 根据成绩输出成绩等级ABCDE

题目描述

输入一个成绩,输出这个成绩对应的等级 如大于等于90 为A 每10分一个等级,小于60为E。


输入

输入整数。

输出

分数对应的成绩级别。

样例输入

85

样例输出

B


#include<iostream>
using namespace std;
int main()
{
    int x;
    cin>>x;
    if ( x >= 90 ) cout<<"A"<<endl;
    else if(x >= 80) cout<<"B"<<endl;
    else if(x >= 70) cout<<"C"<<endl;
    else if(x >= 60) cout<<"E"<<endl;
    else cout<<"E"<<endl;
    return 0;
}

if嵌套语句

c4527afd54ae71d095341ddb6de3fa4c_10f8e1dc454846a99f91c9978f38ae0d.png


题目描述 输出三个数中的最大值


0eac10a50ab518b140f4f6c08c37c3f3_fe836a5d1bb849a99f3637b435459219.png

分析思路:


fe738d91012293d6fbd67bc0b3f7994b_97d7c690d3ff43608ffdde8cb4bc3ff6.png

#include<iostream>
using namespace std;
int main()
{
    int a, b, c;
    cout << "请输入a,b,c三个数的值:" << endl;
    cin >> a >> b >> c;
    if (a > b)
    {
        if (a > c)
        {
            cout << "最大的数是:" << a << endl;
        }
        else
        {
            cout << "最大的数是:" << c << endl;
        }
    }
    else
    {
        if (b > c)
        {
            cout << "最大的数是:" << b << endl;
        }
        else
            cout << "最大的数是:" << c << endl;
    }
    system("pause");
    return 0;
}

题目描述 模拟游戏登录

34a3881c0f9276c5d8abb6a481d14d1f_953e3d3d480d4c3b93879b49de62150c.png


分析过程:

e2e21b0fe8fca05cc77c3b49ddc6ea6c_4f169f9259d8485c99b9e1139bb86285.png

#include<iostream>
using namespace std;
int main()
{
  int user, pw;
  cout << "用户名id和密码,均为纯数字用空格分割:" << endl;
  cin >> user >> pw;
  if(user==123){
        if(pw==456) {cout<<"登录成功";}
        else{cout<<"密码错误";}
  }
  else{cout<<"用户名错误";}
  system("pause");
  return 0;
}

switch语句

如果比较的条件为多个特定的值,基于switch可以简化代码。

switch语句格式


#include<iostream>
using namespace std;
int main() {
  switch (表达式)
  {
  case 常量表达式1: [语句块1] [break; ]
  case 常量表达式2: [语句块2] [break;]
  case 常量表达式3: [语句块3] [break;]
    .
    .
    .
  case 常量表达式n: [语句块n] [break;]
  [default:语句块n + 1;[ break;] ]
  }
  return 0;
}

三元运算符

题目描述 输出三个数中的最大值-基于3元运算符


基于3元运算符的办法

0eac10a50ab518b140f4f6c08c37c3f3_fe836a5d1bb849a99f3637b435459219.png

#include<iostream>
using namespace std;
int main()
{
  int a, b, c, d;
  cout << "请输入三个数a,b,c的值:" << endl;
  cin >> a >> b >> c;
  d = a > b ? a : b;
  d = d > c ? d : c;
  cout << "三个数中最大的数是:" << d << endl;
  system("pause");
  return 0;
}

题目描述 根据1-7输出星期1-星期日


4a2f1b59f4925fcbd6d5f6171bba2df5_3790b4ed08b44d4ca5bd0e61a1477f4d.png

#include <iostream>
using namespace std;
int main()
{
    int choice;
    cout << "Enter 1,2 ... 7: \n";
    cin >> choice;
    switch (choice)
    {
    case 1 :
        cout<< "星期一";
        break;
    case 2 :
        cout<< "星期二";
        break;
    case 3 :
        cout<< "星期三";
        break;
    case 4 :
        cout<< "星期四";
        break;
    case 5 :
        cout<< "星期五";
        break;
    case 6 :
        cout<< "星期六";
        break;
    case 7 :
        cout<< "星期日";
        break;
    default:
        cout << "请输入1-7的整数\n";
    }
    return 0;
}

switch后面必须有()和{};

在()中是需要判断的语句和变量(例如上面是判断sum变量的值);

在{}中是switch核心程序块,用于判断处理;

在{}中就是使用case关键字来判断;

case后面跟的必须是常量表达式(包括字符表达式)(格式如:case 1:语句;[break;]),表达式可以是C++任何的合法语句,但是其值只能是字符型常量或者整型常量,该常量表达式是用来判断()里面的表达式的值是否与该常量表达式的值相等;

每个分支case的常量表达式的值必须与某一值严格相等;

case 常量表达式: 其冒号‘:’后面就是判断为True后所要执行的语句,而且最容易让新学者犯错的是,在执行语句后没有加 break 这样可能会导致的错误的结果,如果没有加break的话会继续执行下去,甚至会把其他case后面的语句也执行了,这个结果会在后面讲;

所有的case 后面可以加上“ default:语句块;break; ” 而且default可以加也可以不加;

注意 case 后面的 常量表达式的值都是不能相等的;(若判断的值范围较大,则显然是用if语句优于switch语句。)

在判断过程中发现每个分支case的常量表达式都不符合,则如果有default语句到时候就会执行default语句后面的的语句,如果default没有,则什么也不执行;

而且,若switch的某一分支的语句不止一句,则所要求的的多条语句也不用写成语句块的形式,只需在最后的语句后面加上break;即可表示在此case的执行语句结束;


案例练习

题目描述 给定三个正整数,分别表示三条线段的长度,判断这三条线段能否构成一个三角形。

题目描述

给定三个正整数,分别表示三条线段的长度,判断这三条线段能否构成一个三角形。


输入

输入共一行,包含三个正整数,分别表示三条线段的长度,数与数之间以一个空格分开。

输出

如果能构成三角形,则输出“yes” ,否则输出“no”。

样例输入

3 4 5

样例输出

yes


#include <iostream>
using namespace std;
int main()
{
    int a,b,c;
    cin>>a>>b>>c;
    if(a+b>c && a+c>b && c+b>a) cout<<"yes";
    else cout<<"no";
    return 0;
}

题目描述 判断是否式闰年。

题目描述

判断某年是否是闰年。


输入

输入只有一行,包含一个整数a(0 < a < 3000)

输出

一行,如果公元a年是闰年输出yes,否则输出no

样例输入

2006

样例输出

no


d5757e9843d8b5f4a270b2dc030fe26e_9b598cee0cea49afacd40c83ff12983f.png


#include <iostream>
using namespace std;
int main()
{
    int a;
    cin>>a;
    if(a%400==0 || a%100!=0 && a%4==0) cout<<"yes";
    else cout<<"no";
    return 0;
}


在线练习:


http://noi.openjudge.cn/ch0104/

14+18+19 +20 +21题


总结


本系列为C++学习系列,会介绍C++基础语法,基础算法与数据结构的相关内容。本文为C++条件表达式,包括if else if 和if 嵌套 switch语句和三元运算符邓,并介绍了分支语句的相关案例练习。

相关文章
|
6月前
|
存储 算法 编译器
|
5月前
|
C++
c++primer plus 6 读书笔记 第六章 分支语句和逻辑运算符
c++primer plus 6 读书笔记 第六章 分支语句和逻辑运算符
|
6月前
|
存储 安全 编译器
【C++从练气到飞升】03---C++入门(三)
【C++从练气到飞升】03---C++入门(三)
|
6月前
|
Unix 编译器 C语言
【C++从练气到飞升】01---C++入门(一)
【C++从练气到飞升】01---C++入门(一)
|
6月前
|
存储 自然语言处理 编译器
【C++从练气到飞升】02---C++入门(二)
【C++从练气到飞升】02---C++入门(二)
|
6月前
|
算法 C++
C++009-C++循环结构while
C++009-C++循环结构while
|
6月前
|
算法 C++
C++021-C++二分查找
C++021-C++二分查找
C++021-C++二分查找
|
6月前
|
算法 C++
C++020-C++因数,公因数,公倍数
C++020-C++因数,公因数,公倍数
C++020-C++因数,公因数,公倍数
|
6月前
|
算法 C++
C++019-C++暴力枚举
C++019-C++暴力枚举
C++019-C++暴力枚举
|
6月前
|
机器学习/深度学习 算法 搜索推荐
C++018-C++桶排序及其应用
C++018-C++桶排序及其应用
C++018-C++桶排序及其应用