4.1-4.3作业

1、将data中的[7:4]位置置1,保持其它位置不变,[7:4]表示4-7位。说明:最右位为第0位。

#include <stdio.h>
int main(int argc, const char *argv[])
{
        unsigned char date=0x1;
        date = date | 0xf0;
        printf("%#x\n",date);//此时data的二进制值为1111 0001
        return 0;
}
//代码段

linux@linux:~$ gcc 8.c
linux@linux:~$ ./a.out
0xf1
linux@linux:~$ 

2、给定一个整形变量a。

1)设置a的bit位3为1,

#include <stdio.h>
int main(int argc, const char *argv[])
{
        unsigned int date=0x1;
        date = date | 0x8;
        printf("%#x\n",date);//此时data的二进制值0000 1001
        return 0;
}

2)将a的bit3置0

#include <stdio.h>
int main(int argc, const char *argv[])
{
        unsigned int date=0x1;
        date = date & 0xf7;
        printf("%#x\n",date);//此时data的二进制值0000 0001
        return 0;
}

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

k的二进制码为0000 1011,执行k=11>>1,即0000 1011右移一位,此时k的值为5,二进制码

为0000 0101;

#include <stdio.h>
int main(int argc, const char *argv[])
{
        int k=11;
        printf("%d\n",(k>>1));
        return 0;
}
//代码段
/*********************************/

linux@linux:~$ gcc 8.c
linux@linux:~$ ./a.out
5
linux@linux:~$ 
//执行结果
/********************************/

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

利用三目运算符进行三个数大小判断

   1 #include <stdio.h>
  2 int main(int argc, const char *argv[])
  3 {
  4         int num1,num2,num3;
  5         int maxnum,midnum,minnum;
  6         printf("请输入三个整数>>>>>\n");
  7         scanf("%d %d %d",&num1,&num2,&num3);
  8         maxnum = (num1>num2?num1:num2)>num3?(num1>num2?num1:num2):num3;
  9         midnum = num1>num2?(num2>num3?num2:(num3>num1?num1:num3)):(num1>num3?num1:(num2>num3?num3:num2));
 10         minnum = (num1<num2?num1:num2)<num3?(num1<num2?num1:num2):num3;
 11         printf("最大的数是%d,中间的数是%d,最小的数是%d\n",maxnum,midnum,minnum);
 12         return 0;
 13 }
//代码段
/********************************/
请输入三个整数>>>>>
2
3
1
最大的数是3,中间的数是2,最小的数是1
/*******************************/

5、思考如何交换俩个数的值

利用一个中间变量做到交换俩个数的值

例如

#include <stdio.h>
int main(int argc, const char *argv[])
{
        int num1=2,num2=3,t;
        t=num1;
        num1=num2;
        num2=t;
        printf("%d %d\n",num1,num2);
        return 0;
}
//代码段
/********************/
linux@linux:~$ gcc 9.c
linux@linux:~$ ./a.out
3 2
linux@linux:~$ 
/*******************/

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

//第一种:在每个垃圾字符可能出现的位置填一个空格
scanf("%c %c %c %c",&a,&b,&c,&d);

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

//第三种:在%c前面加空格。作用是吸收前面所有垃圾字符
scanf(" %c",&a);

//第四种:利用getchar()吸收垃圾字符
scanf("%c",&a);
getchar();

4、位运算的:

有一个变量 unsigned char data;0x1

请写出将data 第6位置1的表达式:

data | (0x1<<6)

请写出将 data第6位清0的表达式:

data | ~(0x1<<6)

 

请写出将 data第6位取反的表达式:

data ^ (0x1<<6)

7、整理思维导图

9c7e477ea11d4e64ba4e047df7bba40e.png

 

8、预习if...else语句

if...else的语法结构

如果表达式为真,就执行下面的语句;如果表达式为假,就不执行下面的语句。

1) if(表达式);

        语句1;

2)if(表达式)

        语句1;

else

        语句2;

3)if(表达式1)

        语句1;

else if(表达式2)

        语句2;

else

        语句3;

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值