5.3位运算符

不羁岁月 提交于 2020-03-11 10:05:13

按位与:&,只有11才为1
按位或:|,只有00才为0
按位异或:^,只有01才为1
按位取反:~,0变为1
左移位:x<<n,左移n位。00001111左移3位->01111000

右移位:x>>n,右移n位。
1、有符号位,左边补上符号位的数,无符号位左边补0
00001111右移3位->0000001
11110001右移三位->11111110

5.4习题

//任意输入三条边,看是否构成三角形,并计算它的面积
#include<stdio.h>
#include<math.h>
int main()
{
    float a,b,c,s,area;
    s=(a+b+c)/2;
    if(a+b>c&&a+c>b&&b+c>a)
    {
        area=sqrt(s*(s-a)*(s-b)*(s-c));
        printf("area=%f\n",area);
    }
    else
    {
        printf("不能构成三角形\n");
    }
}
//输入某年某月,确定该月的天数
#include<stdio.h>
#include<stdlib>
int main()
{
    int year,month,flag=0;
    int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    scanf("%d%d",&year,&month);
    if(month<1&&month>12)
    {
        printf("输入错误\n");
        exit(0);
    }
    else
    {
        if(year%400==0||year%4==0&&year%100!=0)
        {
            flag=1;//为闰年
        }
        if(flag&&month==2)
        {
            printf("days=29\n");
        }
        else
        {
            printf("days=%d\n",days[month-1]);
        }
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!