美文网首页
c课堂笔记 day-2

c课堂笔记 day-2

作者: 努力活得更好 | 来源:发表于2016-12-13 20:00 被阅读0次

    1.类型转化

    5/3=1
    9.120000/7.000000=1.302857
    隐式转化:
    float_f=int t/int t1
    当赋值号两边类型不同时,自动转化为精度较高的类型。
    5/3=1.000000
    强制类型转化,并不改变变量的类型,只临时作一次类型转化
    float f=(float)int t/int t1

            #include<stdio.h>
            int main()
            {
                int num=4;
                int num1=3;
                float dev;
                //隐式转化
                dev=num/num1;
                //显示转化
                float dev1=(float)num/num1;
                printf("%f  %f\n",dev,dev1);
    
            }
    

    2.进制转换

    (1)二进制数:由0和1组成
    2^0 2^1 2^2 2^3 2^4 2^5 2^6 2^7 (这是代表2的n次方)
    1 2 4 8 16 32 64 128

    0101010 11111 10101
    (10101)=12^0+021+1*22+02^3+12^4

    (2)八进制数:由0~7组成的,八进制数开头是数字0,以区分八进制数
    0345 0123 0765 0765 八进制不能有8 0987 这就是错的

    (3)十六进制数:由数字0~9和字母a~f或者A~F组成,
    并且以0x或者0X开头
    0x123 0xab34 0xABf35

    (4)进制数的转化关系
    二进制数:1111
    十进制数:8421

    3.位操作 (先转化为二进制)

    &:位与 (对应位同时为1,结果为1,否则为0!!!)

    4&3=0100&0011= 位与位乘=00,10,01,01=0000=0
    12&7=1100&0111=10,11,01,01=0100=4

    |:位或 (对应位有1为真)

    4|3=0100|0011=0111=7
    13|9=1101|1001=1101=13
    023|5=0001 0111|0000 0101=0001 0111=23

    ~:非(取反)

    ~23: -23-1=-24 就这样理解 任何数以负数减一

    ^:异或 (对应位不同为1,相同为0)

    53=01010011=0110=6

                    #include<stdio.h>
                    int main()
                    {
                        int num=4^7;
                        printf("num=%d\n",num);
                     }
    
    <<:左移
              即转化为二进制,然后左移2位,低位补0 
              左移几位,则乘以2的几次方!!!
              8*2^2=32
              8<<2 =1000=100000=32    
    
    >>:右移
              与左移相反 
              8/2^2   
              9>>2 =2  高位溢出
              8>>2 =1000=0010=2
    
    4.赋值操作符

    =: 赋值号(把右侧值赋给左侧值)
    +=:num+=i------->num=num+i
    -=:
    *=:
    /=:
    %=:
    &=:
    |=:
    . >>=:
    <<= : num>>=i------->num=(num>>i)

        #include<stdio.h>
        int main()
        {
            int num=12;
            printf("num=%d\n",num);
            num=12;// 这里要赋值  不然结果会累加
            num+=23;
            printf("num+=23:%d\n",num);
            num=12;
            num*=2;
            printf("num*=2:%d\n",num);
            num=12;
            num<<=2;
            printf("num<<=2:%d\n",num);
         }
    
    5.逻辑运算符和条件运算符

    (1) &&:逻辑与
    表达式1 && 表达式2; 表达式同时为真,结果为真
    注意:当表达式1为假时,表达式2无需运算,真题结果为假
    ||:逻辑或
    表达式1 || 表达式2; 一个表达式为真,结果为真
    注意:当表达式1为真时,表达式2无需运算,真题结果为真
    !:非
    !表达式 ; 表达式为真,结果为假

    #######include<stdio.h>
    int main()
    {
    int num=2;
    printf("%d\n",num>3&&8>num); =0
    printf("%d\n",num>10||num<3); =1
    printf("%d\n",!(num>3)); =1
    }

    #include<stdio.h>

    int main()
    {
    int num=3;
    (num+=3)>9&&(num-=3)<8; 赋值不是条件 遇到不成立的条件就停止运算 =6
    printf("num=%d\n",num);

    }

    (2)条件运算符

    ?: a>b?a:b
    表达式1?表达式2:表达式3
    若表达式1为真,则执行表达式2 否则执行表达式3

            #include<stdio.h>
            int main()
            {
               int num=6;
               int num1=2;
               int sum=num>num1?num:num1;
               printf("max=%d\n",max); =6
               
            }
    
           a,b,c  ------>三个数求max;
           a>b?(a>c?a:c):(b>c?b:c)
           
            #include<stdio.h>
            int main()
            {
               int a,b,c,max;
               printf("输入数:\n");
               scanf("%d %d %d",&a,&b,&c);
               max=a>b?(a>c?a:c):(b>c?b:c);
               printf("max=%d\n",max); 
               
            }
    

    6.运算符的优先级

    括号成员第一,全体单目第二,乘除余三,加减四;
    位移五,关系六,等于不等排第七;
    位与,异或和位或八九十;
    逻辑或和与十二与十一;
    条件高于赋值,逗号运算最低;

    二.c语言的三大结构

    顺序结构、分支结构、循环结构
    1.顺序结构
    (1) if (表达式) 这里条件为真(1)就执行花括号里面的内容 为假(0)则不执行

    #include<stdio.h>

    int main()
    {
    int num =8;
    if(1) //这里条件为真(1)就执行花括号里面的内容 为假(0)则不执行
    {
    printf("num=%d\n",num);
    }
    printf("hello,world\n");

    }
    (2) if.......else....(if成立就执行 否则执行else)

    #include<stdio.h>
    int main()
    {
        int num=0;
        printf("input num:\n");
        scanf("%d",&num);
        if((num%3==0) && (num%5==0))
        {
            printf("%d 是3和5的倍数\n",num);
        }
        else
        {
            printf("%d 不是3和5的倍数\n",num);
        }
        
    }
    


    #include<stdio.h>
    int main()
    {
    int num;
    printf("input num:\n");
    scanf("%d",&num);
    if(num>10)
    {
    printf("num>10\n");

        }
        else
        {
            printf("num<10\n");
        }
        
    }
    

    (3) if....else if .....else...
    else if 可以有多个后面跟条件
    else 结尾 不能跟条件

        #include<stdio.h>
        int main()
        {
            int num =0;
            printf("input num:");
            scanf("%d",&num);
            if(num==100)
            {
                printf("该数是100\n");
                
            }
            else if(num>100)
            {
                printf("%d>100\n",num);
                
            }
            else
            {
                printf("%d<100\n",num);
            }
            
        }
    

    练习:
    90--100:优秀
    80--90: 良好
    60--80: 一般
    0--60 :不及格

     #include<stdio.h>
     int main()
    {
       int a =0;
    
    printf("input a :");
    scanf("%d",&a);
    if(a>=90)
        {
             printf("优秀\n");
        }
    else if(a>=80)
        {
            printf("良好\n");
        }
    else if((a>=60)&&(a<80))  //这里的里面的
              括号为表示一个表达式为
             一个整体  不加也行
       {
            printf("一般\n");
       }
    else
       {
            printf("不及格\n");
       }
    }
    

    (5) 使用if的注意事项
    1.判断一个区间的写法
    80<num<=90 这种写法错误
    num>80 && num<=90 这种写法正确

    2.if条件句后面只有一条语句时,可以不加{}
    if(1)
    printf("hello\n"); 在不加花括号
    的情况下 if条件成立 只执行这一条语句
    printf("world\n"); 这条不执行
    有效语句只有:printf("hello\n");

    3.if条件句后面只有一条语句时,可以不加{};但此语句不能为变量定义语句
    #include<stdio.h>
    int main()
    {
    if(1)
    {
    printf("hello\n");
    nt num =10; // 定义在此处会报错
    他只能执行到花括号里面
    printf("world\n");
    }
    printf("%d",num); //把这层移到花括号里面才能执行

        }
    

    在if的{}里面定义的变量,只能在{}中使用,在{}之外无效!!

    2.分支结构 switch....case
         (1) switch(option)
               {
                   case :
                   {
                       语句1
                       break; 
                   } 
                   case :
                   {
                       语句2
                       break; 
                   } 
                   default:
                   {
                       语句;
                   }   
               }
    

    根据option 的值选择执行case语句,若没有与之对应的case语句,则执行default
    default 可以放在任意位置 但里面要用break 跳出
    break作用 若不加 则会按顺序输出所有case里面的语句直到遇到break为止
    若没有break 便会全部输出
    #include<stdio.h>
    int main()
    {
    char ch;
    printf("input ch:");
    scanf("%c",&ch);
    switch (ch)
    {
    case 'l':
    {
    printf("linux\n");
    break;
    }
    case 'w':
    {
    printf("windows\n");
    break;
    }
    default:
    {
    printf("error\n");

            }
       }
        
    }
    
    3.循环结构
      while()         do{}while()        for(;;)
    

    (1) while (表达式)
    {
    //执行语句;
    }
    先判断条件是否满足执行条件,满足则执行循环体
    不满足则退出循环
    若条件满足。则执行循环体,每执行一次循环体
    进行一次条件判断
    #include<stdio.h>
    int main()
    {
    int num =5;
    printf("input num:");
    scanf("%d",&num);
    while(num>5)
    {
    printf("num=%d\n",num--); 每执行依次
    就要回到条件语句进行判断
    }
    printf("hi,shanghai");

    }
    
    #include<stdio.h>
    int main()
    {
       int sum =0;
       int i =1;
     
       while(i<=100)
       {
            sum+=i;
            i++;
       }
       printf("%d\n",sum);
        
    }
    

    (2) break/continue
    break:
    跳出当前循环 结束整个循环
    continue:
    跳过本次循环,进行下一次循环
    #include<stdio.h>
    int main()
    {
    int num=4;
    while(num>3)
    {
    printf("num=%d\n");
    continue;只执行这句前面的语句 并进行死循环,
    不执行continue下面的语句
    printf("===========\n");
    }

      }
    

    练习: 1--100的和把尾数为四的数去掉
    #include<stdio.h>
    int main()
    {
    int sum=0;
    int i=1;
    while(i<=100)
    {
    i++;
    if(i%10==4)
    continue;
    sum+=i;
    }
    printf("%d\n",sum);

        }
    

    (3)do
    {

    }while(); 先执行后判断

    #include<stdio.h>
    int main()
    {
       int i=0;
       int sum=0;
       do
       {
          sum+=i;
          i++;
       }while(i<=100);  注意这里有分号
       printf("sum=%d\n",sum);
    }
    

    (4) for(表达式1;表达式2;表达式3)
    {
    //循环体;
    }
    表达式1:循环条件初始化
    表达式2:循环结束条件或者循环执行条件
    表达式3:循环步长或者变量值的更新
    注:表达式1,2,3可以任意省略,或全部省略
    但是,“;;”不能省略!!!!!

                #include<stdio.h>
                int main()
                {
                   int sum=0;
                   int i=1;
                   for(;i<=100;++i)
                   {
                       sum+=i;
                   }
                   printf("sum=%d\n",sum);
                }

    相关文章

      网友评论

          本文标题:c课堂笔记 day-2

          本文链接:https://www.haomeiwen.com/subject/nvybmttx.html