C++第六章:选择结构的程序设计

2023-10-30

一、选择语句

(1)if语句

        if语句的作用是计算给定的表达式,根据判断结果选择执行相应的语句

//形式1 
if (表达式)  语句1;

//例:
int a=5,b=1,t;
if(a>b)  t=a,a=b,b=t;
//形式2

if(表达式)  语句1;
else    语句2;

//例:
int x=5,y=6;
if(x>=y)   cout<<x<<endl;
else    cout<<y<<endl;

注:①if语句中的子语句既可以是一个简单语句,也可以是复合语句或控制语句,但必须是“一个语句”的语法形式。

if(a>b)
    x=a+b;
    y=a-b;
else
    x=a-b;
    y=a+b;

//错误,无大括号if语句只控制其下一句,即当a>b时x=a+b,而y=a-b不论条件是否成立,都会执行
//      else同理。
//正确代码
if(a>b)
{
    x=a+b;
    y=a-b;}
else
{
    x=a-b;
    y=a+b;}

//控制下面语句块

        ②if语句的表达式一般为关系、逻辑运算表达式,但也可以为其他表达式。

a=5,b=2;
if(a)    x=a*10;
//if(a)等价于a!=0

例:

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    double a,b,c;
    cin>>a>>b>>c;  //输入三遍长
    if(a+b>c && a+c>b && b+c>a) //判断能否构成三角形
    {
        double t,s;
        t=(a+b+c)/2.0;
        s=sqrt(t*(t-a)*(t-b)*(t-c));  //计算面积
        cout<<"area="<<s<<endl;
    }
    else
        cout<<"error\n";
        return 0;
}

  (2)switch语句

        switch语句作用是计算给定表达式,根据结果选择从那个分支入口执行

          ①形式

switch(表达式)
{
    case 常量表达式1 :    .....语句序列1
    case 常量表达式2 :    .....语句序列2
    case 常量表达式3 :    .....语句序列3
    .
    .
    .
    case 常量表达式n :    .....语句序列n
    default :     .....默认语句序列  //其它情况
}

     ②switch流程图

 (*********)

注:①switch语句中case分支的语句序列可以是一个语句,也可以是任意多的语句序列,也可以没有语句。

        ②如果case后没有语句,则一旦执行到这个case分支,什么也不做,继续往下执行。

例:

switch(n){
    case 7 : cout<<"setp5\n";
    case 6 : 
    case 5 : cout<<"setp4\n";
    case 4 : {
                cout<<"setp3  "<<"setp2\n";  }
    case 2 : cout<<"setp1\n";
    default : cout<<"setp10\n";
}

        ③switch语法中各各case分支和defalt分支的出现次序在语法上没有规定,但次序不同,可能会影响结果。

//1
switch(n){
    case 1 : cout<<"1\t";
    case 2 : cout<<"2\t";
    default cout<<"0\t";
}

//输入1  输出 1    2    0
//输入2  输出 2    0
//输入其他 3 输出 0
//2
switch(n){
    default cout<<"0\t";
    case 1 : cout<<"1\t";
    case 2 : cout<<"2\t";
}
//输入3  输出 0    1    2
//输入1  输出 1    2
//输入2  输出 2

        ④switch语法中default分支是可选的,若没有default分支且没有任何case标号相等时,switch语句将什么也不做,直接执行后续语句。

        ⑤switch语句的分支表达式可以是C++语言的任意表达式,但其值必须是整数(含字符类型)、枚举类型。

        ⑥switch语法中的case后表达式必须是常量表达式且互不相同。

case  c>=a && c<=b //错误

        ⑦在switch语句中任意位置上,只要执行break语句,就要结束switch语句的执行,转到后续语句。

break;
switch(表达式)
{
    case 常量表达式1 :    .....语句序列1    break;
    case 常量表达式2 :    .....语句序列2    break;
    case 常量表达式3 :    .....语句序列3    break;
    .
    .
    .
    case 常量表达式n :    .....语句序列n    break;
    default :     .....默认语句序列  //其它情况
}

含break语句的switch语句流程图:

 例:

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int g;
    cin>>g;
    switch(g){
        case 'A':  cout<<"85~100\n";  break;
        case 'B':  cout<<"70~84\n";  break;
        case 'C':  cout<<"60~69\n";  break;
        case 'D':  cout<<"<60\n";  break;
        default :  cout<<"error\n";
    }
    return 0;
}

二、选择语句的嵌套

     (1)if语句的嵌套

//形式1
if(表达式1)   语句序列1;
  else if(表达式2)   语句序列2;
    else if(表达式3)   语句序列3;
     else if(表达式4)   语句序列4;
    ......
       else if(表达式n)   语句序列n;
    else  语句序列m;

流程图:

 例:

#include<iostream>
using namespace std;
int main()
{
    int score;
    cin>>score;
    if(score>=90)  cout<<"A\n";
    else if(score>=80)  cout<<"B\n";
    else if(score>=70)  cout<<"C\n";
    else if(score>=60)  cput<<"D\n";
    else cout<<"E\n";
    retuen 0;
}

//形式2
if(表达式1)
{
    if(表达式2)
        语句1;
    else
        语句2;
}
else 
{ 
   if(表达式3)
        语句3;
    else 
        语句4;
}

流程图:

 注:else语句总和距离自己最近的上面的if相匹配。

例:

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    double x,y;
    cin>>X;
    if(x<-3.0)  y=x-1.0;
    else
        if(x>=-3.0 && x<=3.0)
            y=sqrt(9.0-x*x);
        else
            y=x+1;
    cout<<"x= "<<x<<" ,y= "<<y<<endl;
    return 0;
}

 

     (2)switch语句的嵌套

int a=15,b=21,m=0;
switch(a%3){
    case 0 : m++;
             switch(b%2) {
                default : m++;
                case 0 : m++; break;
                    }
        case 1 : m++;
}

例:

#include<iostream>
using namespace std;
int main()
{
    int y,m,d,Days;
    cin>>y>>m>>d;  //输入今天日期 
    switch(m){      //计算每月天数
        case 2 : Days=28;
                    if(y%4==0&&y%100!=0||(y%400==0))
                           Days++;
                 break;
        case 4:
        case 6:
        case 9:
        case 11: Days=30;
                 break;
        default : Days=31;
       }
    d++;
    if(d>Days)    d=1,m++;   //判断月末
    if(m>12)    m=1,y++;    //判断年末
    cout<<"明天是:"<<y<<"-"<<m<<"-"<<d<<endl;  //输出第二天日期
    return 0; 
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++第六章:选择结构的程序设计 的相关文章

随机推荐

  • ubuntu 安装openjdk

    在安装环境的过程中可能需要切换安装版本 安装openjdk sudo apt update sudo apt install openjdk 8 jdk sudo apt install openjdk 11 jdk 切换版本 sudo u
  • linux检查是否有D进程,Linux的CPU-Load虚高之进程的D状态

    写在前面 前几天从同事手里接盘了一个 HHKB 的键盘 虽说是顶级的配置 但是如果不提一句的话估计大家都不会意识到码出这篇博文的工具如此高大上 同时意味着我要持续吃土小半年了 就像之前博文提到的 我工作的重心从业务开发逐渐向基础平台建设转移
  • 模拟cisp-pte 综合题三个key

    1 拿到ip地址 扫端口 扫目录不多说 有1443端口 SQL sever数据库 和27666端口 2 扫出来这个地址 查看一下 访问一下 发现一个是后台 一个存在文件包含的网页 一个大概是上传地址 爆破一下后台发现不成功 试一下利用文件包
  • 虚拟主机的配置

    root localhost nmcli connection modify ens160 ipv4 addresses 192 168 171 137 24 root localhost nmcli connection up ens16
  • 21天Jenkins打卡Day15项目复制

    参考文章 http istester com jenkins 188 html
  • 【visual studio】使用 C++ OpenCV 读取图片失败,数据为空

    这里写自定义目录标题 图片路径问题 图片路径问题 F Documents test image Image BMP 需要改成 F Documents test image Image BMP
  • feign调用第三方接口服务

    前言 做个笔记 下次直接抄 这里需要拿到response的header做验签之类的操作 所以用feign Response来接收响应 正文 第三方接口调用的feign 自测OK import com mea pay common excep
  • 广告案例|10亿数据、查询<10s,论基于OLAP搭建广告系统的正确姿势

    由于流量红利逐渐消退 越来越多的广告企业和从业者开始探索精细化营销的新路径 取代以往的全流量 粗放式的广告轰炸 精细化营销意味着要在数以亿计的人群中优选出那些最具潜力的目标受众 这无疑对提供基础引擎支持的数据仓库能力 提出了极大的技术挑战
  • Google 每天处理约 20000TB 的数据

    Google 热衷于处理全球的信息 每天 他们花费大量时间探索更好的信息整理技术 他们目前使用的技术为 MapReduce 这是一种可以对数据进行并发处理的软件架构 鉴于其简单性与处理大规模数据的能力 MapReduce 是 Google
  • SpringBoot+vue(MyBatis + Shiro + Jwt + Druid + Redis + ElementUI )快速开发框架

    Jeebase 项目介绍 Jeebase是一款前后端分离的开源开发框架 基于springboot vue vue element admin 开发 二期会整合react前端框架Ant Design React 在实际应用中已经使用这套框架开
  • 1188C语言实验——各位数字之和排序

    题目描述 给定n个正整数 根据各位数字之和从小到大进行排序 输入 输入数据有多组 每组数据占一行 每行的第一个数正整数n 表示整数个数 后面接n个正整数 当n为0时 不作任何处理 输入结束 输出 输出每组排序的结果 示例输入 2 1 2 3
  • Using Field in Searching(使用字段搜索)

    Task 1 Use the Fields sidebar to examine search results In the app navigation bar i e the bar towards the top of the bro
  • React 从零开始学习(九)—— 落子有悔

    到目前为止 demo 的操作是不能回退的 点击格子以后 想要记录历史的操作 就需要 使用 slice 函数为每一步创建 squares 数组的副本 同时把这个数组当作不可变对象 这样就可以把所有 squares 数组的历史版本都保存下来了
  • 四大作用域

    四大作用域解读 1 page指当前页面有效 在一个jsp页面里有效 代表当前的jsppageContext 提供了获取 其他8大隐式对象的方法域对象setAttribute String name Object value 2 reques
  • Android面试家常菜:Handler消息机制全家桶一把梭,看完这篇还不懂,请砍我

    前言 Handler可以说小伙伴们用的非常多了 可以说Handler是支撑整个Android系统运行的基础 本质上Android系统都是由事件驱动的 而处理事件的核心就在于Handler 接下来我们就从简单的使用 到源码分析让你彻彻底底明白
  • Python 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

    给定排序数组和目标值 如果找到目标 则返回索引 如果没有 请返回索引按顺序插入的索引 您可以假设数组中没有重复项 Example 1 Input 1 3 5 6 5 Output 2 Example 2 Input 1 3 5 6 2 Ou
  • Axure实现弹框周围遮罩效果

    每一次我都惊叹知识的浩瀚和多彩 在IT这个所做即所得的世界里 很容易获得成就感 当然也时时刻刻活在对大神的膜拜之中 就以这次的原型图制作来说 我们遇到了很多的问题 自己实现了很多功能 但是今天晚上大家对自己原型图的演示和分享之中 又让我感叹
  • 2022年全国大学生数学建模竞赛赛题B组解题参考+代码

    题目 获取题目方式 2022年全国大学生数学建模竞赛题目 代码思路获取方式 关注博主竞赛专栏 B 题 无人机遂行编队飞行中的纯方位无源定位 无人机集群在遂行编队飞行时 为避免外界干扰 应尽可能保持电磁静默 少向外发射电磁波信号 为保持编队队
  • VMware 使用U盘装系统

    第一步 首先要有U盘 把这个U盘制作成启动盘教程中使用的是大白菜 大白菜下载地址 第二步 打开你的VMware 新建一个虚拟盘机 第三步 选择稍后安装系统 第四步 选择你要安装的系统 第五步 是你给虚拟机命名和选择安装路径最好不要放在C盘里
  • C++第六章:选择结构的程序设计

    一 选择语句 1 if语句 if语句的作用是计算给定的表达式 根据判断结果选择执行相应的语句 形式1 if 表达式 语句1 例 int a 5 b 1 t if a gt b t a a b b t 形式2 if 表达式 语句1 else