C语言基础知识:关系运算符与逻辑运算符

news2024/11/24 11:26:49

目录

1、关系运算符介绍

2、应用示例

3、逻辑运算符介绍

4、逻辑表达式的书写

5、不得不说的逻辑非


1、关系运算符介绍

关系运算(Relational Operators),用于判断条件,决定程序的流程。

关系数学中的表示C语言的表示
小于<<
小于等于<=
大于>>
大于等于>=
等于===
不等于!=

C语言的基本数据类型有char、int、double,我们暂时认为只有char和int适用于上述关系运算符,double和字符串(字符数组)的关系运算以后再讨论。

注意了:

1)“=”是赋值,“==”才是判断两个数是否相等,不能混用。

2)C语言没有“之间”、“中间”、“之内”或“在某范围内”的关系运算符,例如年龄在25-30岁之间,只能表达为:年龄大于等于25岁
并且 年龄小于等于30岁

2、应用示例

在现实世界中,不是全部的事情都按顺序进行的,需要根据客观条件做出判断和选择,例如超女选秀,限制了16岁才能参加,16岁以下是不能参加的。这时候程序就需要做出判断,判断报名者的年龄是否满16岁,并给出提示。

在C语言中,使用if和else关键字对条件进行判断,先看下面的代码。

示例(book20.c)

/*
  *  程序名:book20.c,此程序演示关系运算符用于条件判断。
  *  作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>

int main()
{
  int    age=0;   // 定义一个整数变量age,存放用户输入的年龄

  printf("请输入您的年龄:");    // 提示用户输入
  scanf("%d",&age);              // 接受从键盘输入的年龄数据

  if (age >= 16)
  {
    // 如果用户已满16岁,执行这段代码
    printf("亲,您已成年,可以报名超女选秀,祝您好运!\n");
  }
  else
  {
    // 如果用户小于16岁,执行这段代码
    printf("这位童鞋,不好意思哦,等您16岁之后再来吧!\n");
  }
}

运行效果
在这里插入图片描述

以上代码中,age>=16是需要判断的条件,>=表示“大于等于”,等价于数学中的≥。

3、逻辑运算符介绍

在日常生活中,要做出某个决定,需要判断的条件往往不止一个,需要判断多个条件,例如超女选秀,参与选秀的女孩子有以下基本数据:

年龄:取值16-50岁。

身高:取值150cm-190cm。

身材:1-火辣;2-普通;3-飞机场。

颜值:1-漂亮;2-一般;3-歪瓜裂枣。

女神标准是:1)年龄25-30岁;2)身高165cm-175cm;3)身材火辣;4)颜值漂亮或一般(可以整容)。

大脑中的逻辑是这样的:年龄25-30岁 并且 身高165cm-175cm 并且 身材火辣并且(颜值漂亮 或者 颜值一般)。

用C程序来表达大概如下:

  if ( (年龄 >= 25) 并且 (年龄 <= 30) )
  {
    if ( (身高 >= 165) 并且 (身高 <= 175) )
    {
      if (身材 == 火辣)
      {
        if ( (颜值 == 漂亮) 或者 (颜值 == 一般) )
        {
          printf("超女选秀合格,送往后宫。\n");
        }
      }
    }
  }

示例(book25.c)

/*
  *  程序名:book25.c,此程序演示在if中使用逻辑运算符。
  *  作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>

int main()
{
  int  age=0;        // 年龄
  int  height=0;     // 身高,单位:厘米cm
  int  sc=0;         // 身材,1-火辣;2-普通;3-飞机场。
  int  yz=0;         // 颜值,1-漂亮;2-一般;3-歪瓜裂枣。

  printf("请输入年龄、身高、身材(1-火辣;2-普通;3-飞机场):");
  scanf("%d %d %d",&age,&height,&sc);
  printf("请输入颜值(1-漂亮;2-一般;3-歪瓜裂枣):");
  scanf("%d",&yz);

  if ( (age >= 25) && (age <= 30) )    // 年龄在25-30之间
  {
    if ( (height >= 165) && (height <= 175) )  // 身高在165-175之间
    {
      if (sc == 1)    // 身材,1-火辣
      {
        if ( (yz == 1) || (yz == 2) )   // 颜值,1-漂亮或者2-一般
        {
          printf("超女选秀合格,送往后宫。\n"); return 0;
        }
      }
    }
  }
  printf("超女选秀不合格,发放五两银子后送回家。\n");
}

运行效果
在这里插入图片描述

4、逻辑表达式的书写

在book25.c中,采用了if嵌套的方法,其实可以采用一个复杂的if逻辑表达式一次性完成全部的判断,采用括号、对齐、空格、换行有助于更清晰的表达复杂的逻辑表达式。

示例(book26.c)

/*
  *  程序名:book26.c,此程序演示在if中使用逻辑运算符。
  *  作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>

int main()
{
  int  age=0;        // 年龄
  int  height=0;     // 身高,单位:厘米cm
  int  sc=0;         // 身材,1-火辣;2-普通;3-飞机场。
  int  yz=0;         // 颜值,1-漂亮;2-一般;3-歪瓜裂枣。

  printf("请输入年龄、身高、身材(1-火辣;2-普通;3-飞机场):");
  scanf("%d %d %d",&age,&height,&sc);
  printf("请输入颜值(1-漂亮;2-一般;3-歪瓜裂枣):");
  scanf("%d",&yz);}

  if ( ( (age >= 25) && (age <= 30)         ) &&     // 年龄在25-30之间
       ( (height >= 165) && (height <= 175) ) &&     // 身高在165-175之间
       ( (sc == 1)                          ) &&     // 身材,1-火辣
       ( (yz == 1) || (yz == 2)             ) )      // 颜值,1-漂亮或者2-一般
  {
    printf("超女选秀合格,送往后宫。\n");
  }
  else
  {
    printf("超女选秀不合格,发放五两银子后送回家。\n");
  }
}

book26.c采用一个if表达式就实现了全部逻辑的判断功能,效果与book25.c相同,如果实在理解不了,就采用book25.c中的表达方式。

5、不得不说的逻辑非

逻辑运算符有三种,上文介绍了&&和||,还有一个!没介绍,在我看来,这个运算符就不应该存在,它很容易搞乱人的思维。

大家可以先看看它是怎么回事,也可以写代码测试一下它的用法,然后就忘了它。

!就是非,取相反的意思。

例如:

  if (age==25) // 判断年龄是25岁

等同

  if (!(age!=25)) // 判断年龄不是25岁再取反

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/530407.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPT神奇应用:生成菜谱

正文共 662 字&#xff0c;阅读大约需要 2 分钟 料理新手/爱好者必备技巧&#xff0c;您将在2分钟后获得以下超能力&#xff1a; 快速生成菜谱 Beezy评级 &#xff1a;B级 *经过简单的寻找&#xff0c; 大部分人能立刻掌握。主要节省时间。 推荐人 | Kim 编辑者 | Linda ●图…

VMWare 虚拟机创建 + 初始化

目录 概述 1. VMware创建虚拟机 2. IP 配置 nmtui nmcli 3. Yum 源配置 光盘的Packages作为Yum源 配置开机自动挂载(光盘) 配置私有Yum仓库 跟新私有yum仓库 报错和修复 4. 文件共享系统配置 跟新配置文件/etc/hosts /etc/yum.repo.d/ftp.repo 同步配置文件 测试…

HLS入门实现一个led灯的闪烁

文章目录 前言一、HLS是什么&#xff1f;与VHDL/Verilog编程技术有什么关系?1、HLS简介2、开发流程3、HLS与VHDL/Verilog编程技术有什么关系? 二、2. HLS有哪些关键技术问题&#xff1f;目前存在什么技术局限性&#xff1f;1.关键技术问题2、技术局限性 三、使用 HLS 完成 le…

第十二章创建模式—享元模式

文章目录 享元模式概述结构 实例优缺点和使用场景使用场景JDK源码解析 结构型模式描述如何将类或对象按某种布局组成更大的结构&#xff0c;有以下两种&#xff1a; 类结构型模式&#xff1a;采用继承机制来组织接口和类。 对象结构型模式&#xff1a;釆用组合或聚合来组合对象…

渗透测试--2.漏洞探测和利用

目录 一.漏洞分类 二.漏洞探测 三.漏洞利用 四.漏洞扫描 1.Nessus 2.Web应用漏洞扫描器——DVWA 五.Metasploit漏洞利用 一.漏洞分类 网络漏洞 系统漏洞 应用漏洞 人为不当配置 二.漏洞探测 渗透测试是一种测试网络、应用程序和系统安全性的方法&#xff0c;旨在发现…

Xilinx FPGA DDR3设计(三)DDR3 IP核详解及读写测试

引言&#xff1a;本文我们介绍下Xilinx DDR3 IP核的重要架构、IP核信号管脚定义、读写操作时序、IP核详细配置以及简单的读写测试。 01.DDR3 IP核概述 7系列FPGA DDR接口解决方案如图1所示。 图1、7系列FPGA DDR3解决方案 1.1 用户FPGA逻辑&#xff08;User FPGA Logic&#…

玩转Google开源C++单元测试框架Google Test系列(gtest)之七 - 深入解析gtest

一、前言 “深入解析”对我来说的确有些难度&#xff0c;所以我尽量将我学习到和观察到的gtest内部实现介绍给大家。本文算是抛砖引玉吧&#xff0c;只能是对gtest的整体结构的一些介绍&#xff0c;想要了解更多细节最好的办法还是看gtest源码&#xff0c;如果你看过gtest源码…

麒麟操作系统软件更新灾难连篇之一:中文输入法消失

今天在麒麟操作系统开QQ总是过一会儿就闪退&#xff0c;于是进软件商店看看是否有更新。 真是不看不知道&#xff0c;一看吓一跳&#xff0c;居然有几十个软件更新&#xff0c;照常理&#xff0c;软件升级后应该是更加好用&#xff0c;于是先把QQ、五笔字型、搜狗输入法等几个常…

centos7.9搭建redis6.0.6哨兵模式

redis6.0.6哨兵模式搭建文档 1.准备工作1.1 ip规划安装依赖&#xff08;三台机器都操作&#xff09;1.3 gcc升级&#xff08;三台机器都操作&#xff09; 2.安装redis&#xff08;三台机器都操作&#xff09;2.1 获取安装包2.2 解压2.3 编译2.4 验证上一步是否正确2.5 安装2.6…

Windows10安装二进制Mysql-5.7.41和汉化

1.创建my.ini [mysqld] ##skip-grant-tables1 port 3306 basedirD:/webStudy/mysql-5.7.41 datadirE:/adata/mysqlData max_connections200 character-set-serverutf8 default-storage-engineINNODB sql_modeNO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysql] default-char…

Liunx基础命令 - which命令

which命令 – 查找命令文件 ​ which命令的功能是用于查找命令文件&#xff0c;能够快速搜索二进制程序所对应的位置。如果我们既不关心同名文件&#xff08;find与locate&#xff09;&#xff0c;也不关心命令所对应的源代码和帮助文件&#xff08;whereis&#xff09;&#…

C++中类的静态成员变量与静态成员函数

static声明为静态的&#xff0c;称为静态成员。 不管这个类创建了多少个对象&#xff0c;静态成员只有一个拷贝&#xff0c;这个拷贝被所有属于这个类的对象共享。 静态成员 属于类 而不是对象。 静态变量&#xff0c;是在编译阶段就分配空间&#xff0c;对象还没有创建时&…

ARM-栈帧(一)

ARM 栈帧 本系列均以 corter-A7(armv7-a) 为例 在 ARM 中&#xff0c;通常为满减栈&#xff08;Full Descending FD&#xff09;, 也就是说&#xff0c;堆栈指针指向堆栈内存中最后一个填充的位置&#xff0c;并且随着每个新数据项被压入堆栈而递减。 栈的本质 要理解栈的本…

二叉搜索树、AVL树、红黑树底层源码以及迭代器模拟实现,map/set的封装

这次给大家分享的还是关于二叉树部分的内容&#xff0c;之前的文章已经分享过一些二叉树的基础知识&#xff0c;如果不了解的朋友可以看看&#xff1a;二叉树以及堆和堆排序。普通的二叉树其实是没有什么实际的应用价值的&#xff0c;而map和set大家用过或者听过吗&#xff1f;…

Metasploit Framework(MSF)对Metasploitable2的渗透解析

简介 Metasploitable2虚拟系统是一个特殊的ubuntu操作系统&#xff0c;本身设计目的是作为安全工具测试和演示常见漏洞攻击的环境。 其中最核心是可以用来作为MSF攻击用的靶机。这样方便我们学习MSF框架的使用。 并且开放了很多的高危端口如21、23、445等&#xff0c;而且具有…

李薇:大模型时代的数据变革

Datawhale干货 作者&#xff1a;李薇&#xff0c;上海人工智能实验室 前言 今天&#xff0c;我将向那些希望深入了解大模型的同学们&#xff0c;分享一些关于大模型时代的数据变革的知识。作为上海人工智能实验室OpenDataLab的产品主管&#xff0c;我会介绍我们在开放数据和大…

大数据技术闲侃之岗位选择解惑

前言 写下这篇文章是因为五一节前给群友的承诺&#xff0c;当然按照以往的惯例&#xff0c;也是我背后看到的这个现象&#xff0c;我发现大部分同学在投递岗位的时候都是投递数据分析岗位&#xff0c;其实背后并不是很清楚背后的岗位是做啥的&#xff0c;想想我自己的工作生涯…

用户/用户组管理

用户管理 * useradd 命令添加用户&#xff0c;会在/etc/passwd生成用户信息&#xff0c;信息分为7列&#xff0c;被6个冒号隔开 第一列 username (login name) 第二列 密码&#xff0c;但是该列已经被移除&#xff0c;用x表示&#xff0c;密码信息已经存放在了/etc/shadow文…

Android以aar包形式引入hunter-debug,Java(3)

Android以aar包形式引入hunter-debug&#xff0c;Java&#xff08;3&#xff09; &#xff08;1&#xff09;首先把hunter的master分支代码拉下来&#xff0c;在本地编译&#xff0c; https://github.com/Leaking/Hunterhttps://github.com/Leaking/Hunter此过程主要目的是获得…

理解学习曲线:芯片工作中的平台价值和个人价值

作为一名芯片工程师&#xff0c;从毕业出到步入公司的第一天开始&#xff0c;需要完成一次明显的转变&#xff0c;随着工作的日益开展和项目推进&#xff0c;个人能力的也得到了潜移默化的提升&#xff0c;当我们回看个人的知识/技能成长的曲线时&#xff0c;可能会发现很多的发…