2016.9.28 C语言课堂笔记--(字节)

C语言预课

字节讲解

  1. 大端存储法:在高位存储低字节

    小端存储法:在低位存储高字节

  2. ASC码表——共255个字符

  • ‘\0’ 0
  • ‘a’ 65
  • ‘A’ 97
  • ‘0’ 48
  • ' ' 32
  1. 运算符
  • 计算机在运算的时候只会计算相同类型数据的运算

  • 计算机中的数据以补码形式运算,以原码形式输出。

  • char--->short int--->int--->float--->double

    • int a=3;

      float b=5.0;

      float c=a/b;

      此时a=0.60000;

  • 后缀++

    -int a=3;

    int b=a++;//b=a,a=a+1;

    此时a=4,b=3

  • 前缀++

    -int a=3;

    int b=++a;//a=a+1,b=a;

    此时a=4,b=4

  • 后缀--

    -int a=3;

    int b=a--;//b=a,a=a-1;

    此时a=2,b=3

  • 前缀--

    -int a=3;

    int b=--a;//a=a-1,b=a;

    此时a=2,b=2

  1. 位运算符
  • 数据在计算机中是以补码的形式存储

  • int a=3;//0011

    int b=5;//0101

    • int c=a|b; (|有1为1)

      c=7;//0111

    • int c=a&b;(有0为0)

    c=1;//0001

    • int c=a^b; (不同为1)

    c=6;//0110

  • 原码:

  • 反码:正数反码与源码相同,负数的反码在原码的基础上,符号位不变,后面的数依次取反。

  • 补码:正数的补码与原码,反码相同;负数的补码在负数反码的基础上+1

    • 1=0001

    • 1(反)=0001

    • 1 (补)=0001

    • -1=1001

    • -1(反)=1110

    • -1(补)=1111

  • 取反:~

    • int a=3;

      int b=~a;//

      此时b=-4;

      a=0011 取反

    以补码形式存储=1100

    反码为=1011

    原码为=1100=-4;

    • int a=7;

    a=0000 0111 取反

    以补码形式存储=1111 1000

    反码为=1111 0111

    原码为=1000 1000

  1. <<左移
  2. 右移(以最高位符号位补全)

  • 7=0000 0111

    补码=0000 0111

    左移后=0000 1110

    右移后=0000 0011

  • -7原码=1000 0111

    反码=1111 1000

    补码=1111 1001

    <<1左移后=1111 0010

    反码=1111 0001

    原码=1000 1110

    1右移后=1111 1100

    反码=1111 1011

    原码=1000 0100

  1. 赋值运算符
  • +=,-=,/=,%=,&=.....

    b+=a;//b=b+a;

    -12 1000 1100

    1111 0011

    1111 0100

    1110 1000

    1110 0111
    1001 1000

  1. 关系运算符
  • 在C语言中,a>b看做一个事件,如果这个事件成立,运算结果是1,若不成立,结果是0.
  • < = == !=

  1. 逻辑运算符
  • ||:或 ((事件1)||(事件2)),只要有一个事件运算结果为1,整个结果就为1(有1为1)。
  • &&:与 ((事件1)||(事件2)),只要有一个事件运算结果为0,整个结果就为0(有0为0)。
  • !:非 !(事件),将事件的结果取反。
    • 逻辑运算时的注意点
    1. 事件1||事件2:如果事件1的运算结果为1,则事件2不会再被执行(1||a++,a++不运算)
    int a=5;
    int b=6;
    int d=a>b||b++;
    printf("d=%d\n",d);
    printf("b=%d\n",b);//d=1,b=7
    
    int d=a<b||b++;
    printf("d=%d\n",d);
    printf("b=%d\n",b);//d=1,b=6
    
    1. 事件1&&事件2:如果事件1的运算结果为0,则事件2不会再被执行(0&&a++,a++不运算)
    int a=5;
    int b=6;
    int d=a>b&&b++;
    printf("d=%d\n",d);
    printf("b=%d\n",b);d=0,b=6
    
    int d=a<b||b++;
    printf("d=%d\n",d);
    printf("b=%d\n",b);d=1,b=7
    
    1. 计算机在进行关系运算遵循原则:非0即1((-1)&&1,结果为1)
  1. 地址运算符
  • &
  • printf(“%p\n,&a”)
  • %p是一个占位符,用来打印地址。
  1. 运算优先级

    ()-->!-->算数运算符-->关系运算符-->逻辑运算符(除了[!)](http://jingyan.baidu.com/article/9113f81b2ef68c2b3214c7e5.html

    运算规律,单目运算符-->双目运算符-->三目运算符

    三目运算符:条件,事件1,事件2;

    运算规则:如果条件成立,就计算事件1的结果,作为整式的结果。否则计算事件2的结果。

    - int a=2,b=3
    - int max=a>b?a:b;
    
  2. scanf : scan formatter

    int a;

    scanf(“%d”,&a);(%d表示输入的是整数型,&a表示输入的这个数到&a所对应的存储单元)

    printf(“a=%d\n”,a);

    scanf的注意点:

    1. 严禁在scanf后面加\n

    2. 用scanf时老实点不耍花样

    3. scanf一次输入多个值:scanf(“%d%d”,&a,&b)

    4. 输入缓存流:\n,将输入缓存残留清空

      4.1. getchar():吸收缓存流里的一个字符。

      4.2. scanf(“%c”,&ch);

      4.3. getc(stdin):吸收缓存流里的一个字符。

    5. getchar:是专门对字符进行输入操作

      • char ch=getchar()
      • 是将输入缓存流里面的第一个字符取出来赋给ch
      • putchar 是专门对字符进行输出操作(可以是输出字符变量也可以是字符常量)
  3. 三大流程控制

    12.1. 顺序流程控制:代码是顺序执行
    12.2. 条件流控制:

    • if事件(单分支)

      {

        语句体
      

      }

    如果事件成立就执行{}里的事件。

    • if事件(双分支)

      {

        语句体
      

      }

      else

      {

        语句体
      

      }

    • if事件(多分支){

      }

      else if
      {

      }

      else if
      {

      }

      else
      {

      }

    • 分支结构注意点:

      • 只能执行一个分支
      • if中的语句中的else要么不放,要么放在if语句的最后面
      • if 语句下语句体如果只有一行代码,{}可以省略,多行代码时要加{}
  4. switch分支结构

    • switch (变量/变量表达式)

    • {

      case常量;

      语句体;

      break;

      default;

      语句体;

      break;
      }

    • switch只能匹配一个条件

    • case后面必须是常量;

    • 每一个case后面语句体执行以后必须要有break,break必须是跳出switch右边的

    • default可以省略,位置可以随便放。

    • case后面的语句可以不加{}就顺序执行

//习题1:输入一个成绩score;
0<=score<60;显示不及格;
60<=score<70;显示及格;
80<=score<85;显示良好;
85<=score<100;显示优秀;

//习题2:输入两个数,求最大值并输出。

//习题3:输入工资,如果少于等于1000,最后工资等于拿到的工资。如果大于1000,扣5%税。
//冒泡排序法:

int main()
{
    int a[5]={10,30,50,20,40};
    int i,j,temp;
    //小泡泡往前移
/*  for (i=0;i<4;i++)
    {
        for (j=i+1;j<5;j++)
        {
            if(a[i]<a[j])
            {
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }
    for (i=0;i<5;i++)
    {
        printf("a[%d]=%d\n",i,a[i]);
    }*/
    //大泡泡往后冒
    for(i=0;i<5;i++)
    {
        for(j=0;j<5-i-1;j++)
        {
            if(a[j]<a[j+1])
            {
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;        
            }
        }
    }
    for (i=0;i<5;i++)
    {
        printf("a[%d]=%d\n",i,a[i]);
    }
}```
//习题4:求四个数的最大值,用三目

```max=((a>b?a:b)>c?(a>b?a:b):c)>d?((a>b?a:b)>c?(a>b?a:b):c):d;

max=a>b?(a>c?(a>d?a:d): (c>d?c:d)): (b>c?(b>d?b:d): (c>d?c:d))```

//输入一个字母判断是否为大写字母或小写字母,输出提示。 

include "stdio.h"

int main()
{
char ch;
int i;
scanf("%c",&ch);
if(ch>=97&&ch<=123)//(ch>'a'&&ch<'z')
printf("是小写字母");
if(ch>=65&&ch<=81)
printf("是大写字母");

}

//输入一个字符串,判断字符串个数,遇空格跳过。
```#include "stdio.h"
int main()
{
    char character ;
    int i=0;
    while((character=getchar())!='\n')
    {
        if(character==' ')
        {
            continue;
        }
        i++;
    }
    printf("%d",i);
    return 0;
}```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,158评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,600评论 1 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,785评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,655评论 0 220
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,075评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,002评论 1 225
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,146评论 2 318
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,918评论 0 211
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,671评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,838评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,318评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,636评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,343评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,187评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,982评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,126评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,934评论 2 279

推荐阅读更多精彩内容