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、整理思维导图
8、预习if...else语句
if...else的语法结构
如果表达式为真,就执行下面的语句;如果表达式为假,就不执行下面的语句。
1) if(表达式);
语句1;
2)if(表达式)
语句1;
else
语句2;
3)if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;