C语言(二)

作业分析讲解

=======================

  1.  进制之间的转换规则

        二进制--》八进制

        二进制--》十六进制

            每三个二进制为一组换算成对应的八进制即可

            每四个二进制为一组换算成对应的十六进制即可

            八进制取值范围:0---7   最大的数字7换成二进制111

            十六进制取值范围:0---F  最大的数字15换成二进制1111

 

        八进制--》二进制

              每个八进制位换算成三个二进制即可

                      八进制 071 ---》 7 --》二进制111

                                                 1 --》二进制001   //不够三位的补零对齐

                             071--》二进制111 001

        十六进制--》二进制

              每个十六进制位换算成四个二进制即可

                      十六进制 0A3---》 A --》二进制1010

                                                    3 --》二进制0011  //不够四位的补零对齐

                             0A3--》二进制1010 0011

        八进制--》十六进制

              思路:先把八进制转成2进制,然后再把2进制转成16进制即可

             八进制   0745 --》二进制111 100 101 --》16进制0001    1110     0101

                                                                                            1           E          5

 

C语言代码编写规范

====================

    第一个:注意缩进

                  用tab键缩进对齐

    第二个:适当的空行

    第三个:注释,简明扼要

                   C语言注释只有两种写法:

                          第一种:单行注释    //注释文字

                          第二种:块注释  /*  注释的内容  */,块注释不能嵌套

                  尤其是重要的核心代码必须写注释

    第四个:命名,通俗易懂,英文,千万不要用拼音

 

创建linux和window的共享

==========================

进入共享:   cd   /mnt//hgfs/xxxx       xxxx是你自己刚才新建的共享文件夹的名字

   

 

                   

C语言中的运算符

=====================

    算术运算符   +   -   *    /    % (取余)  

    关系运算符    >    <    ==   !=   >=    <=

     逻辑运算符    ||逻辑或     &&逻辑与    !逻辑非

    指针运算   *    &

    三目运算符    ?:

    求数据类型大小,变量大小    sizeof

    位运算           &   |    ~   ^

    组合运算       +=   -=   *=   \=      &=   |=   

    移位运算        >>   <<

    自增自减       ++    --

(1) 除法

        情况一:

           两个整数相除,结果取整,而且不会四舍五入

        情况二:

           除法运算中有一个是小数

           1/2  --》结果不是0.5  是0

           16/3 --》5

            2/3 --》

  (2)取余,计算余数

          只能用于整数运算     15%2  余数1

                                            15.0%2  不对的,小数不能参与取余运算

实际开发作用:

         除法和取余配合实现获取一个数的各个位

             任意输入一个整数,编程得到这个整数总共多少位,各个位分别是多少

                      7545

 (3)逻辑运算,跟条件判断配合在一起使用

          if(a>b)

          数学中:   10<x<100

          C语言中: if(x>10 && x<100)

                            if(姓名==zhang || 姓名==王)  //或者

                            if(姓名==zhang && 富二代)  //并且

          重点:区分==和=  

                    ==用来判断变量是否相同   if(a==b)

                    = 赋值运算符号

          C语言规定的真和假

                    非零就是真  1   18   -9

                    零就是假

                    表达式一 || 表达式二 ||  表达式三   //从左到右,有一个条件为真,后面的都不用运算了,整个表达式都为真

                    表达式一 && 表达式二 &&  表达式三  //从左到右,有一个条件为假,后面的都不用运算了,整个表达式都为假

                    if(有房&&有车&&帅)

                    逻辑非     真--》假

                                    假--》真

           (4) 三目运算符

                     表达式1?表达式2:表达式3

                        判断表达式1是否为真

                                         为真 --》执行表达式2

                                         为假 --》执行表达式3

           (5)位运算(重点)

                      对整数的二进制进行运算

                      按位与 &     只要有一个是0结果就是0,全部都是1,结果就是1

                              比如:  18&16结果是多少?    int  a=89; int b=96;   a&=b;  //等价于 a=a&b;

                                               18 --》二进制  10010

                                               16 --》二进制  10000

                                                                       10000

                              特点:  任意一个整数要求把它的第三位二进制置0,其它位不允许改变

                                                   125--》二进制1111101 --》最终希望的结果1111001

                                                                1111101  --》125

                                                                1111011  &

                                                                1111001

                                           任何二进制位跟1进行按位与运算结果保持不变

                                           任何二进制位跟0进行按位与运算结果一定是0

                      按位或 |      只要有一个是1,结果就是1,全部都是0,结果就是0

                              比如:  18|16结果是多少?

                                               18 --》二进制  10010

                                               16 --》二进制  10000

                                                                       10010

                                 特点:

                                               实际开发中,用位或运算去设置某一位二进制为1

                                                            int a=785;

                                                            785

                                             00000.....100  或

                                              任何二进制位跟0进行按位或运算结果保持不变

                                              任何二进制位跟1进行按位或运算结果一定是1

                      按位异或 ^   相同为0,相异为1

                               比如:  18^16结果是多少?

                                               18 --》二进制  10010

                                               16 --》二进制  10000

                                                                       00010

                                特点:

                                             实际开发中我想把某个数的二进制取反

                                                      比如:  int  a=785  第三位二进制取反

                                                              785

                                              0000........100      异或  

 

                                              一个数跟自己异或,结果为0       a^a结果为0

                                              异或满足交换律                           a^b^a等价于  a^a^b

                                              一个数跟0异或,结果保持不变    a^0结果为a

                                                                   

                      按位取反 ~   0变成1    1变成0

                               比如: ~18结果是多少?

                                                18 --》二进制  10010

                                                 ~18 --》          01101

           (6)组合运算(复合运算)

                        +=      a+=10; //等价于   a=a+10;

           (7)移位

                        左移  <<  把一个整数的二进制整体向左移动若干位,低位补0

                                        18<<2;  //18左移2位

                                        0000000000.........10010<<2

                                        特点:一个数左移n位,相当于乘以2的n次方

                        右移  >>   把一个整数的二进制整体向右移动若干位,高位补什么??

                                         算术右移:  高位补符号位

                                         逻辑右移:  高位补0  

                                         特点:一个数右移n位,相当于除以2的n次方

            (8)自增和自减

                        a++   后置++    先使用a原本的值,然后再把a加1赋值给自己

                        ++a   前置++    先把a加1,然后再使用加一之后的a  

                        a--     后置--    先使用a原本的值,然后再把a减1赋值给自己

                        --a     前置--    先把a减1,然后再使用减一之后的a  

练习:

         1.      float  a=1.6;

                  if(a==1.6)   //请问这个条件是否成立,为什么

         2.      int  a=10;

                  int  b=6;

                  if((a<2)||(b=18))

                        printf("a ,s:%d    b  is:%d\n",a,b);

           

                if((a<12)&&(a>b)&&(a=96))

                        printf("a ,s:%d    b  is:%d\n",a,b);

        3.     用三目运算符实现三个整数求最大值

 

作业:

 

  5. 总结按位或,按位异或的特点

               完成任意一个整数m,要求把它的第三位二进制置零,置一,取反,其它二进制位不允许改变

明天预告

=====================

1. 循环,判断,switch   goto

2. 数组,一维数组,二维数组

3. 指针

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值