首页 > 编程语言 >08C++选择结构(2)

08C++选择结构(2)

时间:2024-11-15 20:29:39浏览次数:1  
标签:std cout int 08 n% C++ 选择 && include

一、逻辑变量

教学视频
存储类似灯亮或灯灭、是男还是女等结果只有两种可能的数据时,可以使用逻辑型变量。
逻辑型变量用关键字bool定义,所以又称为布尔变量,其值只有两个false(假)和true(真),false和true是逻辑常量,又称布尔常量。
流程图如下:

#include <typeinfo>    //变量类型头文件,还是有问题;无法判断int
#include <iostream>    //包含输入输出流头文件iostream
using namespace std;    //指明程序 使用命名空间std(标准)
int main()
{
    bool light=false;
    int n;
    cout<<"请输入拉开关几下:";
    cin>>n;
    cout<<typeid(n).name()<<endl;
    if (n>=0  && (n-int(n)==0))    //判断是否输入正常的开关次数 ,是否为整数。
        if (n%2==1)    //奇数次开关,则灯亮;否则灯灭。
            {
                light=!light;
                cout<<"灯亮";
            }
        else
            cout<<"灯灭";
    else
        cout<<"输入次数错误!";

    return 0;
 }

英汉小词典:
bool:布尔
false:假
true:真

练习:

1、表达式(5==6)的值是( )

   A.true     B.false      C.1      D.2

2、阅读程序写结果。

#include <iostream>    //包含输入输出流头文件iostream
using namespace std;    //指明程序 使用命名空间std(标准)
int main()
{
    bool flag;
    int n;
    cin>>n;
    if (n%2==0) flag=true;
    else flag=false;
    if (flag) cout<<"yes";
    else cout<<"no";
    return 0;
 }

输入:12
flag和n的输出:

3、完善第11、16行程序。
格莱尔家里有7扇房门,编号分别为1到7.格莱尔的爸爸把所有的门都打开,格莱尔的妈妈把所有编号是2的倍数的房门作相反的处理(原来开着的门关上,原来关上的门打开),格莱尔把所有编号是3的倍数的房门作相反的处理,问共有几扇门是开着的?

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5    bool door1,door2,door3,door4,door5,door6,door7;
 6    int s=0;
 7    door1=door2=door3=door4=door5=door6=door6=door1=true;
 8    door2=!door2;
 9    door4=!door4;
10    door6=!door6;
11                 ;
12    door6=!door6;
13    if(door1)s++;
14    if(door2)s++; 
15    if(door1)s++;
16                  ;
17    if(door1)s++;
18    if(door1)s++;
19    if(door1)s++;
20    cout<<s<<endl;
21    return 0;
22 }

二、逻辑运算符

教学视频
例程:试编一个程序,输入一个整数,若是3和5的公倍数,则输出“欧耶欧耶”。
流程图如下:

程序:

#include <typeinfo>    //变量类型头文件,还是有问题;无法判断int
#include <iostream>    //包含输入输出流头文件iostream
using namespace std;    //指明程序 使用命名空间std(标准)
int main()
{
    int n;
    cout<<"请输入一个整数:";
    cin>>n;
    if(n%3==0)
        if(n%5==0) cout<<"欧耶欧耶"<<endl;
    return 0;
 }

这个问题的条件有两个,能被3整除且能被5整除,即n%3和n%5等于零这两条件都要满足。此时,需要用到表示“而且”的逻辑运算符&&(逻辑与)

流程图:

程序:

#include <typeinfo>    //变量类型头文件,还是有问题;无法判断int
#include <iostream>    //包含输入输出流头文件iostream
using namespace std;    //指明程序 使用命名空间std(标准)
int main()
{
    int n;
    cout<<"请输入一个整数:";
    cin>>n;
    if(n%3==0)
        if(n%5==0) cout<<"欧耶欧耶"<<endl;
    return 0;
 }

逻辑运算符:逻辑与(而且)——— && 逻辑或(或者)——— || 逻辑非(否)——— !

(1)逻辑与&&:
逻辑与是一个双目运算符,使用时&&的两边各一个表达式,如果运算符的左右两边的表达式都为真,表达式整体才为真,否则即为假,如表达式:5&&6、1&&-1、1<2&&5都为真,3-3&&5、10--&&0这两个表达式都为假。

(2)逻辑或||:
逻辑或运算符也是一个双目运算符,使用时候要求两边各一个表达式,如果运算符左右两边的表达式只要有一个为真,那么逻辑或表达式的整体就为真,否则都为假,如表达式:3-3||5为真,0||5-5为假。

(3) 逻辑非!:
逻辑非是一个单目运算符,它表示取反的意思,放在表达式的左边,如!a ,即原先为真的表达式取反之后变为假,原先为假的表达式取反之后变为真。如表达式!0结果为1,!(2>1)结果为0。

练习:

(1)判断整数n不能被3整除的表达式,下列( )是错误的。

A.n%3!=0     B.(n%3==1||n%3==2)       C.!(n%3==0)      D.(n%3==1&&n%3==2)

(2)阅读程序写结果。

#include <iostream>    //包含输入输出流头文件iostream
using namespace std;    //指明程序 使用命名空间std(标准)
int main()
{
    int n;
    int s=0;
    cin>>n;
    if (n%3==0 || n%5==0) s++;
    cin>>n;
    if (n%3==0 && n%5==0) s++;
    cin>>n;
    if (!(n%5==0)) s++;
    cout<<s;
    return 0;
 }

输入:15 15 15
n,s的输出:

(3)完善第18、21行程序。
再摸拟“比尔庄园”登录,输入正确的用户名和密码,输出欢迎语句“亲爱的小朋友,欢迎你!”,否则提示“用户名或密码不正确!”

8 #include <iostream>    //包含输入输出流头文件iostream 
 9 #include <string>
10 using namespace std;    //指明程序 使用命名空间std(标准) 
11 int main()
12 {
13     const int USER=201701;
14     const string PSW="[email protected]";
15     int user;
16     string psw;
17     cout<<"用户名:";
18                    ;
19     cout<<"密码:";
20     cin>>psw;
21     if (           )
22         cout<<"亲爱的小朋友,欢迎你!"<<endl;
23     else
24         cout<<"用户名或密码不正确!";
25     return 0; 
26  }  

三、逻辑运算符的优先级

教学视频
地球绕太阳公转一周的时间称为一个回归年,大约是365.2422天。而我们所使用的日历是基于365天的一年,这样每年就会有大约0.2422天的差异。为了弥补这个差异,每四年增加一天,即闰年中的2月有29天。但是,这样又稍微多出了一些时间,因此又设定了能被100整除但不能被400整除的年份不是闰年的规则,以进一步调整误差。

例程:

试编一个程序,输入一个年份,判断是闰年还是平年。
注:四年一闰,百年不闰,四百年再闰。判断闰年的条件是:年份能被4整除但不能被100整除;或者能被400整除。
流程图如下:

#include <typeinfo>    //变量类型头文件,还是有问题;无法判断int
#include <iostream>    //包含输入输出流头文件iostream
using namespace std;    //指明程序 使用命名空间std(标准)
int main()
{
    bool flag;
    int year;
    cout<<"请输入一年份:";
    cin>>year;
    if ((year%4==0 && year%100!=0) || year%400==0)
        flag=true;
    else
        flag=false;
    if (flag)
        cout<<year<<"是闰年"<<endl;
    else
        cout<<year<<"是平年"<<endl;
    return 0;
 }

逻辑运算符的优先级:

练习:

(1)在C++中,表达式(11>12)&&(12<15)||(13+2==15)的值是()

   A.10        B.0       C.true       D.false

(2)阅读程序写结果。

#include <iostream>    //包含输入输出流头文件iostream
using namespace std;    //指明程序 使用命名空间std(标准)
int main()
{
    int x,y;
    cin>>x>>y;
    if (x>y && y!=0) cout<<x/y<<endl;
    else if (x!=0) cout<<y/x<<endl;
    return 0;
 }

输入:96 10
x,y的输出:
(3)完善第8、11行程序。
风之巅小学每学期都要进行“吃好、睡好、心情好”的“新三好学生”评比。评比时需要对“吃好”“睡好”“心情好”这三项进行量化打分,80分及以上为优秀,三项都达到优秀的就评为“新三好”,只有两项优秀的则被评为“双优生”。编一程序,输入某位同学的每项分值,判断是“新三好”还是“双优生”。
输入:95 98 100 输入:75 95 85
输出:新三好 输出:双优生

 1 #include <iostream>    //包含输入输出流头文件iostream 
 2 #include <string>
 3 using namespace std;    //指明程序 使用命名空间std(标准) 
 4 int main()
 5 {
 6     int eat,sleep,mood;
 7     cin>>eat>>sleep>>mood;
 8     if (       )
 9         cout<<"新三好";
10     else
11         if (eat<80 && sleep>=80 && mood>=80 || eat>=80 && sleep>=80 && mood<80 ||               )
12             cout<<"双优生"; 
13     return 0; 
14  }  

四、复合语句

教学视频
试编一程序,输入两个整数,比较大小,并按从小到大的顺序输出。
编程思想:当a小于或等于b时,先输出a,再输出b;否则先输出b,再输出a。
流程图如下:

#include <iostream> //包含输入输出流头文件iostream 
using namespace std; //指明程序 使用命名空间std(标准) 
int main() 
{ int a,b; 
  cout<<"a,b="; 
  cin>>a>>b; 
  if (a<=b) 
      cout<<a<<" "<<b<<endl; 
  else 
      cout<<b<<" "<<a<<endl; 
  return 0; 
 }

另一种方法:第1步先判断a是否大于b,当a大于b时,交换a和b的值;第2步输出a与b。
流程图:

#include <iostream>    //包含输入输出流头文件iostream
using namespace std;    //指明程序 使用命名空间std(标准)
int main()
{
    int a,b,t;
    cout<<"a,b=";
    cin>>a>>b;
    if (a>b)//若在if-else中间有多条语句时,用花括号括起来。
        {
            t=a;
            a=b;
            b=t;
        }
    cout<<a<<"  "<<b<<endl;
    return 0;
}

注意,上面采用了复合语句(语句块),和使程序清晰易读的“逐层缩进”布置。

练习:

(1)判断a不等于0,且b等于0的正确的逻辑表达式是( )

    A.a!=0&&b==0       B.!(a!=0&&b=0)       C.!(a==0&&b==0)       C.a!==0||b!==0)

(2)阅读程序写结果。

#include <iostream>    //包含输入输出流头文件iostream
using namespace std;    //指明程序 使用命名空间std(标准)
int main()
{
    char ch;
    int sum,n;
    cin>>ch;
    sum=0;
    if (ch>='a' && ch<='z')
        {
            n=ch-'a'+1;
            sum+=n;
        }
    else
        sum=27;
    cout<<sum;
    return 0;
}

输入:b
ch,sum,n的输出:
(3)完善第22,25行程序。
设当前电梯停在第10层,此时第20层和第7层同时有人按下按钮,电梯总是选择离它近的楼层,于是先服务在第7层的人,再服务第20层的人。编程模拟电梯调度,输入3个数,第1个数表示电梯当前停在的楼层,后两个数表示同时需要使用电梯人楼层,按服务先后的次序输出楼层。

 8 #include <iostream>    //包含输入输出流头文件iostream 
 9 using namespace std;    //指明程序 使用命名空间std(标准) 
10 int main()
11 {
12     int n,n1,n2,len1,len2;
13     cout<<"输入当前电梯停在的楼层:";
14     cin>>n;
15     cout<<"输入同时需要服务的两个楼层:";
16     cin>>n1>>n2;
17     if (n-n1>0)    //求出当前电梯到n1的楼层数 len1
18         len1=n-n1;
19     else
20         len1=n1-n;
21     if (n-n2>0)    //求出当前电梯到n2的楼层数 len2
22                   ;
23     else
24         len2=n2-n;
25     if (       )    //先到距离近的楼层服务 
26         cout<<n1<<"---->"<<n2;
27     else
28         cout<<n2<<"---->"<<n1;
29     return 0;
30 }

标签:std,cout,int,08,n%,C++,选择,&&,include
From: https://www.cnblogs.com/citStudy/p/18445828

相关文章

  • 初级数据结构——栈题库(c++)
    目录前言1.杭电oj——Bitset2.杭电oj——进制转换[3.力扣——LCR123.图书整理I](https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/description/)[4.力扣——LCR027.回文链表](https://leetcode.cn/problems/aMhZSa/)[5.力扣——1614.括号的......
  • C++语言之旅【0】---(最通俗易懂的入门文章!!!)
    本章概述C++发展历史C++的重要性体现C++学习建议和书籍推荐C++的输入&输出彩蛋时刻!!!C++发展历史简介:在C语言的学习中咱们讲过了C语言的发展史,让大家对C语言有了感性的认知。现在咱们也延续传统——从C++的发展史讲起。C++的起源可以追溯到1979年,当时BjarneStroustrup......
  • 【DEV-C++创建分文件项目】【零基础 小白 可上手的清晰易懂教程!】
    DEV-C++创建项目【DEV-C++创建项目】1、首先创建一个项目文件夹2、再点击创建的文件夹,在里面创建几个分类文件3、打开DEV-C++,然后点击【新建项目】4、选择Basic中的【ConsoleApplication】,选择【C++】,再写入自己要建立的【项目名称】5、创建完毕后将其放入到刚刚创建......
  • C++编程:实现一个简单的消息总线
    文章目录0.引言1.设计思路1.1关键类设计1.2类图1.3时序图1.4流程图2.代码结构与设计2.1消息回调与订阅项2.2消息总线类`MessageBus`2.3定时任务调度器`PeriodicTaskScheduler`3.核心功能实现3.1消息发布3.2超时检查4.测试代码0.引言在之前的文......
  • 【C++】list 类深度解析:探索双向链表的奇妙世界
    ......
  • 无插件H5播放器EasyPlayer.js网页web无插件播放器选择全屏时,视频区域并没有全屏问题的
    EasyPlayer.jsH5播放器,是一款能够同时支持HTTP、HTTP-FLV、HLS(m3u8)、WS、WEBRTC、FMP4视频直播与视频点播等多种协议,支持H.264、H.265、AAC、G711A、MP3等多种音视频编码格式,支持MSE、WASM、WebCodec等多种解码方式,支持Windows、Linux、Android、iOS全平台终端的H5播放器,使用简单......
  • 学期2024-2025 20241308 《计算机基础与程序设计》第八周学习总结
    作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标 <写上具体方面>功能设计与面向对象设计,面向对象设计过程,面向对象语言三要素,汇编、编译、解释......
  • C++命名空间介绍、定义、作用、是否允许嵌套
    本文章代码块默认为写了std命名空间的条件下,所以代码里面的输出直接写了cout,没写作用域什么是c++命名空间C++命名空间是一种机制,用于解决全局变量名或函数名之间的冲突问题。它可以将一组相关的变量、函数和类组织在一起,形成一个独立的命名空间,避免命名冲突。命名空间通过在......
  • 什么是 C++ 中的常量表达式? 有什么用途?and如何判断一个表达式是否是常量表达式?
    参考文献:constexpr介绍以及与const的区别-CSDN博客定义在C++中,常量表达式是一种在编译期间就能计算出结果的表达式。字面量常量:如整数字面量(1、2、3等)、字符字面量('a'、'b'等)、布尔字面量(true、false)和浮点字面量(3.14、2.718等)。例如,表达式3+4中的3和4就是整数字面量,整......
  • 【C++源码编译】
    C++源码到二进制可执行文件的过程与C语言类似,包括四个过程:预编译、编译、汇编、链接1、预编译C/C++编译过程中的第一个阶段,主要目的是对源代码进行处理和准备工作。下面是预编译的主要步骤:去除宏定义:将所有的#define删除,并展开所有的宏定义,将宏替换为具体的值或表达......