我要成为嵌入式高手之1月17日第三天!!

学习笔记

自学金字塔原理

知识点|要点|练习|备注

 要解决问题,需要积累处理数据的方式

一、编程步骤:

编程之前先画流程图

1.准备数据

2.处理数据

3.输出数据

 编程的一个原则:高内聚,低耦合——减少每个模块之间的关联,尽可能让每个模块独立

二、敲代码习惯:

        成对出现的成对敲

三、char

变量:

char

unsigned char

singned char

字符数据存储:存的是编码值 (ASCII值)

ASCII表要熟悉:

我要成为嵌入式高手之1月17日第三天!!_第1张图片

转义字符要知道:当做一个字符,对应一个数值

我要成为嵌入式高手之1月17日第三天!!_第2张图片

练习:
打印出 abc\tij#k\n

字符常量的形式:

1. 直接写符号 'a'       97

2. 八进制        '\141' 0141

3. 十六进制    '\x61'  0x61

考点:

1. 'abcd'   // 多个字符 打印出最后一个

2. 数字字符与数值之间 转换

3. 字符大小写转换

四、运算符 表达式

算数运算

运算符:

 1.  加减乘除     

         +

          -

          *

          /

2. %

a % [N] 结果 【0~N-1】

练习:

        123.4567保留两位小数

注意:

1.浮点型不能做求余运算

2.求余运算,第二操作数不能为0

3.最终运算结果符号取决于左操作数符号

用处:

        a.判断奇数偶数?a%2 == ?

        b.抽题的程序?

                工具:

                随机数的产生的函数 rand;伪随机数int rand(void);

3. 自加自减    

           ++   // 自加

            --   // 自减

i++ // 先用(表达式的结果)后加

i++表达式的结果在哪?会在 i 下面开辟临时空间,用完之后销毁掉,几乎看不到它的存在

表达式:由运算符和运算数构成的字符序列

++i //先加后用(表达式的结果)效率高(不用开辟空间)

注意:

1.浮点数也能自加自减

2.++ -- 运算数必须是左值(lvalue -- locationable)— 能被定位到的值(可进行一下取地址运算来确定)

3. 匿名变量、表达式 都是右值

4. 尽量避免printf("%d%d%d\n",i,i++,++i)这样的不确定的代码

5. i+++++i     // 贪心原则:从左到右逐个字符的扫描表达式,看这些字符能否尽可能多的结合成c的运算符,否则就还是字符本身。

        (((i++) ++) + i) i++为一个表达式,是右值,中间的++需要一个左值,所以会报错      

 1+2  // 所有的表达式都是有结果(值)的

          // 表达式一定是有数据类型的

各类数值型数据之间的混合运算——隐式类型转换

我要成为嵌入式高手之1月17日第三天!!_第3张图片

规则:

        从右向左—必转;从c99标准之后,不要求float型强制转为double型(也可以理解为中途转换,结构又转换回来)

        从下到上—非必转:低精度类型与高精度类型混合运算,此时低精度往高精度转换

运算符的优先级和结合性:

        优先级:优先级数字越大,优先级越高,越先结合运算数,通过结合的个数(单目、双目)和结合性进行结合

我要成为嵌入式高手之1月17日第三天!!_第4张图片

练习:

        10 + ' a ' + 1.5  -  8765.1234 * ' b '

        10 + ' a ' + 1.5  -  (8765.1234 * ' b ')// 优先级

(((10 + ' a ') + 1.5)  -  (8765.1234 * ' b '))// 结合性

        10 + ' a '

        int + char(必转)=int + int = int

(int + 1.5)=(int + double)= double

(double - double = double)

4.赋值运算

赋值运算表达式的结果,就是左值获得的值

赋值运算符:+=  -=  *=  /=

        如:a+=1   ----> a=a+1

5.逗号运算

形式:

        表达式1,表达式2,……,表达式n

        逗号表达式的结果是最后一个表达式的结果

五、编程问题

编译时的问题

        错误——语法问题

        警告——语法不合适

运行时的问题

        逻辑问题——调整思维

        如:

            除法1.除数不能为0

                    2.整型数相除——相当于整除

强制类型转换:

             格式: (类型)表达式

六、总结(第三章)

1. 数据类型

整型

字符型

浮点型

a. 常量

b. 变量

c. 长度

d. 考点

2. 运算符&表达式

隐式类型转换

强制类型转换(不会改变值,只是个运算)

算数 > 赋值 > 逗号

+ - *

/

%

++

--

贪心原则

练习

1.请编译程序将“China ”译成密码,
用原来字母后面的第4个字母代替原来的字母

流程图:

我要成为嵌入式高手之1月17日第三天!!_第5张图片

#include 

int main()
{
    char c1 = 'C';
    char c2 = 'h';
    char c3 = 'i';
    char c4 = 'n';
    char c5 = 'a';

    printf("%c%c%c%c%c\n",c1+4,c2+4,c3+4,c4+4,c5+4);
    
    return 0;
}

2.给出两个数

第一个数的个位作为新数的千位,
第一个数的十位作为新数的个位,
第二个数的个位作为新数的百位,
第二个数的十位作为新数的十位,
打印该数

流程图:

我要成为嵌入式高手之1月17日第三天!!_第6张图片

#include 

int main()
{
    int a = 54;
    int b = 78;
    int c;
    c =( (a%10)*1000 + (b%10)*100 + (b/10)*10 + (a/10) )
    printf("c = %d\n",c);
    return 0;
}

你可能感兴趣的:(数据结构)