为了顺应当前形势和更好的发展,黑基网已于9月19日正式更名为【安基网】,域名更换为www.safebase.cn,请卸载旧的APP并安装新的APP,给您带来不便,敬请理解!谢谢

黑基Web安全攻防班
安基网 首页 IT技术 编程开发 查看内容

逻辑运算符&&

2016-4-8 16:05| 投稿: |来自: 互联网

摘要: 下面介绍新的运算符,逻辑运算符 || !如果if(age18){ if(age30) { printf("你已成年且未奔三"); }}这个语句是说只要年龄在大于18小于30 就打印语句但是这样写不太直观,并且逻辑变的有点复杂但我们用逻辑运算符 ...
下面介绍新的运算符,逻辑运算符&& || !
如果
if(age>18)
{
     if(age<30)
     {
        printf("你已成年且未奔三");
      }
}

这个语句是说只要年龄在大于18小于30 就打印语句
但是这样写不太直观,并且逻辑变的有点复杂

但我们用&&逻辑运算符就会使程序更清晰
如if(age>18&&age<30)
意思是如果age大于18且小于30
&& 是与的意思,意味着它两边的条件必须同时为真,一边为假,它就不起作用
如果age=31    age>18的条件他满足,但age<30的条件他不满足,所以语句不会运行

还有一个|| 这是或的意思
if(age>18||age<30)
意思是如果age大于18或者小于30
|| 只要两边一个为真(两个一起为真也可),它就会运行
如果age=17 age>18他不满足但age<30他满足,所以这条语句会运行

最后一个! 这是非的意思
if(age!=18) 这样也可以if(!(age==18))
意思是如果age不等于18,它就会运行,反之如果等于18,就不运行


if(!(age<18))
与下面语句完全相同
if(age>=18)


if(a==0)
只有当a为0才为真
你也可以像这样写
if(!a)   
这种方法值限制于0或者1

!会使程序变的有点混乱,即使用了!可能会减少一点输入,但是清楚的代码比需要技巧的代码好,所以用if(a==0)可能会更好,尽管用!或许会节省几微秒的时间

优先级问题
if(age=18|| age>18&&age<30)
||的优先级比&&的低
你可以这样理解
if(age=18|| (age>18&&age<30))


与或非 的真假关系其实高中数学就学过了,在C语言中我想并不难理解

下面这个程序应该很容易理解吧
#include
main()
{
    int age;
    printf("请输入你的年龄:\n");
    scanf("%d",&age);

    if(age!=18)
    {
    if(age<18&&age>0)
    {
        printf("你未成年\n");
    }
    else if(age>18||age<100)
    {
        printf("你成年了\n");
    }
    }else
    {
        printf("你正好18\n");
    }
  

}


下面来个题目
输入3个数,比较3个数的大小(从大到小)

这题该怎么入手?首先你先想一想,这题比前面的题目有一定的难度

首先肯定是定义3个变量 a,b,c
关键是怎么用逻辑来表示出来
if(a>b>c) 这是不行的,这个语句有两个条件,相当于if(a>b,b>c) 就是if(a>b||b>c)
我们肯定不需要用||或的逻辑运算符,而且我们在输入数字的时候不可能正好满足a>b>c的条件
那么我们输入数字有几种可能?
一种是a>b a>c b>c(这个就是a>b>c) 或a>b a>c c>b
二种是b>a,b>c,a>c或b>a,b>c,c>a
三种是c>a,c>b,a>b或c>a,c>b,b>a

这个可能有点让你晕,我们不妨先找出3个数的最大和最小数
定义两变量 最大数max 最小数min
a>b    a>c b>c     max=a    min=c
a>b a>c c>b      max=a    min=b
b>a,b>c,a>c      max=b    min=c
b>a,b>c,c>a     max=b    min=a
c>a,c>b,a>b      max=c    min=b
c>a,c>b,b>a      max=c    min=a

一共六种情况
下面程序为
#include
main()
{
      int a,b,c,max,min;
      printf("请输入三个数字\n");
      scanf("%d%d%d",&a,&b,&c);

      if(a>b&&a>c&&b>c)
      {
       max=a;
       min=c;
      }
      else if(a>b&&a>c&&c>b)
      {
       max=a;
       min=b;
      }
      else if(b>a&&b>c&&a>c)
      {
       max=b;
       min=c;
      }
      else if(b>a&&b>c&&c>a)
      {
       max=b;
       min=a;
      }
      else if(c>a&&c>b&&b>a)
      {
       max=c;
       min=a;
      }
      else if(c>a&&c>b&&a>b)
      {
       max=c;
       min=b;
      }
    

      printf("max=%d min=%d\n",max,min);



}


这下知道该怎么入手了吧,知道最大最小数,剩下那个就是中间数
我们只要加上这个中间数就好了
所以最终程序这样
#include
main()
{
      int a,b,c,max,min,between;
      printf("请输入三个数字\n");
      scanf("%d%d%d",&a,&b,&c);
      printf("比较3个数的大小\n");
      if(a>b&&a>c&&b>c)
      {
       max=a;
       min=c;
       between=b;

      }
      else if(a>b&&a>c&&c>b)
      {
       max=a;
       min=b;
       between=c;
      }
      else if(b>a&&b>c&&a>c)
      {
       max=b;
       min=c;
       between=a;
      }
      else if(b>a&&b>c&&c>a)
      {
       max=b;
       min=a;
       between=c;
      }
      else if(c>a&&c>b&&b>a)
      {
       max=c;
       min=a;
       between=b;
      }
      else if(c>a&&c>b&&a>b)
      {
       max=c;
       min=b;
       between=a;
      }

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

本文出自:http://www.52bcx.com/Program/c/hx/16.html

免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

最新

返回顶部