c课堂笔记 day-2

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);
            }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,924评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,781评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,813评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,264评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,273评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,383评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,800评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,482评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,673评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,497评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,545评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,240评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,802评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,866评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,101评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,673评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,245评论 2 341

推荐阅读更多精彩内容

  • 第1章 第一个C程序第2章 C语言基础第3章 变量和数据类型第4章 顺序结构程序设计第5章 条件结构程序设计第6章...
    小狮子365阅读 10,564评论 3 71
  • C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的 算法 题目:...
    Poison_19ce阅读 1,115评论 0 0
  • 一、框架 1、Mac系统及常用工具、进制;C数据类型、常量变量、运算符、表达式、格式化输入输出 2、关系运算符、逻...
    师景福阅读 671评论 0 1
  • 废话不多说:1、创建一个工程 2、添加能够在Appstore上下载软件的账号 3、项目中配置账号,及自动生成Pro...
    一根聪阅读 110评论 0 0
  • 记得两三年来到本地近郊的一家度假酒店,规模不算大,也算不上豪华,消费水平也就不高,但其功能设计挺别致,灵感源于元代...
    杨杨杨yes阅读 434评论 0 0