1.将data中的[7:4]位置置1,保持其它位置不变,[7:4]表示4-7位。说明:最右位为第0位。
#include <stdio.h>
int main(int argc, const char *argv[])
{
unsigned char data=0x1;
data = date | 0xf0;
printf("%#x\n",data);
return 0;
}
2.给定一个整形变量a
1)设置a的bit位3为1
#include <stdio.h>
int main(int argc, const char *argv[])
{
unsigned int data=0x1;
data = data | 0x8;
printf("%#x\n",data);
return 0;
}
2)将a的bit3置0
#include <stdio.h>
int main(int argc, const char *argv[])
{
unsigned int data=0x1;
data = data & 0xf7;
printf("%#x\n",data);
return 0;
}
3.执行语句k=11>>1后,变量k的当前值
答:k=5
#include <stdio.h>
int main(int argc, const char *argv[])
{
int k=11;
printf("%d\n",(k>>1));
return 0;
}
4.输入三个数,按照从小到大的顺序进行输出
#include <stdio.h>
int main(int argc, const char *argv[])
{
int num1,num2,num3;
int maxnum,midnum,minnum;
printf("请输入三个整数>>>>>\n");
scanf("%d %d %d",&num1,&num2,&num3);
maxnum = (num1>num2?num1:num2)>num3?(num1>num2?num1:num2):num3;
midnum = num1>num2?(num2>num3?num2:(num3>num1?num1:num3)):(num1>num3?num1:(num2>num3?num3:num2));
minnum = (num1<num2?num1:num2)<num3?(num1<num2?num1:num2):num3;
printf("最大的数是%d,中间的数是%d,最小的数是%d\n",maxnum,midnum,minnum);
return 0;
}
//代码段
/********************************/
请输入三个整数>>>>>
6
7
5
最大的数是7,中间的数是6,最小的数是5
/*******************************/
5、思考如何交换俩个数的值
#include <stdio.h>
int main(int argc, const char *argv[])
{
int num1,num2,t;
t=num1;
num1=num2;
num2=t;
printf("%d %d\n",num1,num2);
return 0;
}
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();
有一个变量 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的语法结构
如果表达式为真,就执行下面的语句;如果表达式为假,就不执行下面的语句。
-
if(表达式);
语句1;
2)if(表达式)
语句1;
else
语句2;
3)if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;