Linux环境下的C语言基础知识2

1.将data中的第[7:4]位置1,保持其他位不变 【7:4】表示4-7位 说明:最右边位为第0位,用十六进制表示。

#include <stido.h>

int main()
{
    unsigned char data = 0x1;

    data = data | 0xF0;

    printf("%#x\n",data); //结果为0xF1

    return 0;
}

2.给定一个整形变量a

 1)设置a的bit位3为1

#include <stdio.h>
int main()
{
        unsigned int date=0x1;

        date = date & 0x08;

        printf("%#x\n",date); //输出结果0x09

        return 0;
}

 2)将a的bit3置0

#include <stdio.h>
int main()
{
        unsigned int date=0x88;

        date = date & 0xF7;

        printf("%#x\n",date); //输出结果0x80

        return 0;
}

3.执行语句k=11>>1后,变量k的当前值

#include <stdio.h>
int main()
{
        int k=11; //二进制为0000 1011 

        k = k >> 1; //右移一位,高位补0

        printf("%d\n",k); //输出为5 即0000 0101

        return 0;
}

4.输入三个数,按照从大到小的顺序输出

#include <stdio.h>

//利用条件运算符实现

int main(int argc, const char *argv[])
{
        int a,b,c,max,mid,min;

        printf("输入三个整数:");

        scanf("%d %d %d",&a,&b,&c);

        max=a>b?(a>c?a:c):(b>c?b:c);

        min=a<b?(a<c?a:c):(b<c?b:c);

        mid=(a<max && a>min)?a:((b>max && b<min)?b:c);


        printf("从大到小输出三个整数:%d %d %d\n",max,mid,min);

        return 0;
}

5.思考如何交换两个数的值

#include <stdio.h>
//添加中间变量实现交换
int main()
{
        int a,b,t;

        printf("请输入:a=");
        scanf("%d",&a);
        printf("请输入:b=");
        scanf("%d",&b);

        t=a;

        a=b;

        b=t;

        printf("交换后a=%d\n",a);
        printf("交换后b=%d\n",b);
        return 0;
}

6.scanf吸收垃圾字符的代码重新写一遍,练习题4重新做一遍

//第一种:利用scanf严格控制格式的特点,只能用于同一条语句连续输入
//在每个可能出现垃圾字符的位置填一个空格
    scanf("%c %c %c %c",&a,&b,&c,&d);  

//第二种:利用抑制字符%*c吸收垃圾字符
//%*c作为抑制字符一定要吸收一个字符
    scanf("%c%*c%c%*c%c%*c%c%*c",&a,&b,&c,&d);


//第三种:在%c前面加空格,作用是吸收前面所有垃圾字符
    int num;
    char c;
    scanf("%d",&num);
    scanf(" %c",&c);  //吸收前面的所有垃圾字符
    printf("%d\t%c\n",num,c);


//第四种:使用getchar吸收垃圾字符
    int num;
    char c,d,b;

    scanf("%d",&num);
    getchar();  //吸收单个字符,每个数据之间只能有一个垃圾字符,多个垃圾字符getchar不能吸收
    scanf("%c",&b);
    getchar();
    scanf("%c",&c);
    getchar();
    scanf("%c",&d);
//练习4

unsigned char data=0x1;

//将data 第6位置1的表达式 即0x1<<6
data = data | 0100 0000;

//请写出将 data第6位清0的表达式:
data = data & 1011 1111;
或data = data & ~(0x1<<6)

//请写出将 data第6位取反的表达式:
data = data ^ 0100 0000;

7.整理思维导图

8.预习if···else分支语句

//第一种
    if(表达式)

        语句1;

//第二种
if(表达式)

        语句1;
else
        语句2;

//第三种    
if(表达式1)
        语句1;
else if(表达式2)
        语句2;
else
        语句3;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值