06,标准C

来源:互联网 发布:书生软件 安卓 编辑:程序博客网 时间:2024/06/03 17:22
/*
 达内学习 标准C  day06  2013-9-6
 位开关灯问题
 使用一个char类型变量ch的最低三个二进制控制红绿的。bit0控制绿灯 bit1控制黄灯 bit2控制红灯 。数位是1点亮是0熄灭
      1)编写语句在不知道变量内容的情况下点亮红灯熄灭另外两个灯   ch = ch & 0xf8 | 4;    
      2)如果现在绿灯点亮,另外两个灯熄灭,编写语句熄灭绿灯点亮黄灯。  ch = ch^3
  1.和1111 1000与运算把后三位置0,再和0000 0100或 把低第三位置1
  2.和0异或不变 和1异或 求反
   当进行位运算时不要管别的位,只控制要用的位


和1 与 保持不变,和0 与 清零,
 和1 或 置1,和0 或 不变
  和0 异或 不变,和1 异或 求反
预习:
1,循环语句(循环嵌套,while,do……while)
 */
位移操作指把变量的所有二进制位这个整体向左或者向右移动n位
左移操作符<<表示  右移操作符>>表示
移位操作符要求左右两边各有一个可以当数字使用的东西
左边的数字是要被进行移位操作的数字
右边的数字是移动的位数


在移位过程中有些二进制位上的数被丢弃有写二进制位用新数字填充
左移操作中空出来的位置一定填充0


有符号数右移后所有空出来的二进制位上填充符号位
无符号数字右移后空出来的二进制位上填充0


如果移动过程中没有丢失有效数位,左移相当于乘以2的n次方,右移相当于除以2的n次方


~是一个单目位运算符表示按位取反,这个操作符右边需要提供一个数字  例如: ~8


&是取地址操作服,右边需要提供一个变量
地址数据对应的占位符是%p
*是取地址里面的数据,右边需要一个地址


三目操作符需要三个信息配合才能编写一个完整的表达式
这种表达式可以根据一个布尔之从两个简单的表达式选择一个计算
被选择的这个简单的表达式的计算结果就是整个三目表达式的计算结果 


整个三目运算表达式的结果
三目表达式的格式如下:
布尔值?简单表达式1:简单表达式2


练习:
1,计算一个给定整数的绝对值
2,编写完成简单减法计算,用户输入来你一个数字和计算符号(只能是+或者-)程序把计算结果打印出来


表达式中如果包含多个不同类型的数据,则必须首先把他们转换成同一个类型,然后才能计算
这个转换过程是计算机自动完成的,叫做隐式类型转换
隐式类型转换过程中会把占空间小的数据转换成占空间大的数据(三目运算符演示)
如果所占空间大小一样,但是类型你过不同则案子int转float,有符号转无符号的规则转换


 可以在程序中时候任意给一个数字制定数据类型:强制类型转换
强制类型转换不受任何规则的限制可以任意指定数据类型(强制类型转换有时会造成错误
强制类型转换的实现方法是临时创建一个新数据并用新数据赋值  //不会造成原有数据改变


流程控制语句可以改变语句的执行顺序,让程序不再从上到下顺序执行语句。


分支语句可以在程序执行的时候决定哪些语句应该执行,那些语句不应该执行


if语句是一种可以实现分支的语句,格式如下
if(逻辑表达式1)    //有且只能有一个if,else if 可以有0个至多个,else 最多有一个
{   //语句组1
}else if
{    //语句组2
}else if
{ //
}else
{
}
else关键字表示多个分叉之间的对立的, 如果所有逻辑表达式是互补的则可以省略最后一个逻辑表达式


练习:
1,考试成绩分成如下几个区域
90--100优秀
80--89 良好
70--79 中
60--69差
60以下  不及格
2,找出用户给定三个数字中的最大值


switch……case 语句也是一种实现分支的语句
格式如下
switch(表达式)
{
case 数字1:
……
break;
case 数字2:
……
break;
……
default;
……
break;
}


循环语句也是一种流程控制语句,他可以让一段语句反复执行(最后一条语句结束后在重头开始执行)
for语句是一种循环语句


在循环语句的执行过程中有一个不断变化的变量,他代表了一组规律性变化的数字
这个变量叫做循环变量,
确定下这组数字中的开始数字和结束数字
for语句格式如下
for(把循环变量赋值成开始数字; 所有数字和结束数字之间的逻辑关系; 循环变量的变化规律)
{//反复执行的语句
}
每次大括号内的语句执行时循环变量都代表某个数字。大括号内的语句不同次数执行的时候循环变量一定不一样
整个执行完成以后,循环变量会把每个数字都代表一遍


练习:
1,在屏幕上打印如下内容
 54321
 5432
 543
 54
 5




作业:
1,编写分支,根据给定的年和月计算出当月的天数
2,使用循环解决鸡兔同笼问题,40个头,100只脚。
3,使用循环解决砝码问题
4,使用循环把一个char类型变量中的每个二进制位打印在屏幕上。