0%

01test_03day

===================================
2022-7-4
===================================

一.温故知新

    嵌入式方向
    需要使用Linux环境(红帽 centos Ubuntu SUSE ...)
    虚拟机安装虚拟操作系统
    熟悉环境->终端的熟悉
    打开终端的方式
    终端提示符
    常用命令
    cd ls pwd touch mkdir rm cp mv cat tar
    编辑器和编译器
    vim gcc
    ./a.out
    #include <stdio.h>
1.在C语言中以#开头的内容是预处理的操作
2.预处理都包含哪些操作
    条件编译 宏定义 文件包含
3.把.c文件编译成可执行文件,需要包含哪些操作?
    预处理->编译->汇编->链接
4.头文件包含可以使用尖括号或者双引号,有啥区别?


    int main(void)
    {
        printf("Hello World!");
        在C语言中双引号引起来的内容是字符串
        字符串是由一个一个单一的字符组成,最后有一个结束标志'\0'
        ASCII
        '\0'	0
        '\n'	10
        '0'		48
        'A'		65
        'a'		97
        标准化输出格式
        %d %o %x %f %c %s %p %%
    }
        printf("%d\n", 3.14);
        printf("%f\n", 100);
    
    printf("%.2f\n", 3.14);

    printf("3.14\n");

运算符

算术运算符	+ - * / %
关系运算符	> < == >= <= !=
逻辑运算符	&& || !
赋值运算符	= += -= *= /= %= <<= >>= &= ...
位运算符		<< >> & | ~ ^
条件运算符	? :
下标运算符	[]
分量运算符	. ->
指针运算符	& *
强制类型转换	(数据类型)
求字节大小	sizeof()
自增自减运算符	++ --

变量

1.变量的含义
    变量就是用来存储数据的
    (数据会存在内存中<以二进制补码的形式存储>)
2.变量的定义
    数据类型 变量名	;
    char		c	;
    int			i	;
    float		f	;
    1)基本的数据类型
    整型	有符号/无符号	short int long
    实型	有符号			float(单精度) double(双精度)
    字符型	有符号/无符号	char
    2)通过sizeof测试数据类型占用空间的大小
    注意 : sizeof不是函数,是一个运算符
    sizeof运算的结果是以字节为单位
    1个字节(byte) = 8个位(bit)
    1个字 = 2/4个字节
    注意使用sizeof运算符测试出来的结果并不是唯一的
    和硬件以及操作系统的位数有关(和32bit或者64bit有关)
    3)数据类型的大小以及范围在头文件中有记录
    /usr/include/limits.h
    4)变量命名的要求
        1>变量名是以数字 字母 下划线组成,但是不能以数字开头
        2>变量名区分大小写
            int a, A;//a和A是两个变量
        3>变量名不能和C语言的关键字重复
        4>变量名要做到见名生义
3.变量的初始化
    数据类型	变量名	=	数值	;
    char		c		=	'A'		;
    int			i		=	9527	;
    float		f		=	3.14	;
4.变量的定义和变量的初始化的区别
    变量的定义 : 只是给变量分配相应的存储单元,
                    变量的初始值是垃圾值
    变量的初始化 : 除了给变量分配相应的存储单元,
                    并且会给变量赋初始值
注意 : 以后写程序定义的变量一定要有初始化
5.变量的使用规则
    1)变量一定是先定义再使用
    2)便于编译时检查错误,不同类型的变量有不同的运算要求
    3)当变量在定义时,将来在内存中占用的大小就已经决定了

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>

int main(void)
{//char short int long float double
printf("sizeof(char) = %ld\n", sizeof(char));
printf("sizeof(short) = %ld\n", sizeof(short));
printf("sizeof(int) = %ld\n", sizeof(int));
printf("sizeof(long) = %ld\n", sizeof(long));
printf("sizeof(float) = %ld\n", sizeof(float));
printf("sizeof(double) = %ld\n", sizeof(double));

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>

int main(void)
{
float f = 3.14;

printf("f = %d\n", f);

//int i = 100;

//printf("i = %f\n", i);

return 0;
}

scanf函数的使用

    函数功能 : 用来进行录入的函数(可以接收键盘录入的数值)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>

int main(void)
{
int a = 9527;

printf("a = %d\n", a);
//需求:定义三个变量,通过scanf函数录入年月日
scanf("%d", a);
//scanf("%d\n", &a);
//printf("请输入a变量的值:");
//scanf("%d", &a);
/*
注意:
1.在scanf函数的双引号中只写标准化输出格式即可
2.在scanf函数的双引号中千万不要加换行符
3.在scanf函数的双引号之后,写的参数必须是地址
*/
printf("a = %d\n", a);

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>

int main(void)
{
int year = 0, month = 0, day = 0;

printf("请输入年-月-日 : ");
scanf("%d,%d,%d", &year, &month, &day);
printf("%d年%d月%d日!\n", year, month, day);

return 0;
}

算术运算符

    +		加法
    -		减法
    *		乘法
    /		除法(取商)
    %		除法(取余)
注意 : 
除法运算中除数不能为0
    a ➗ b = c ...... d
a	被除数
b	除数
c	商
d	余
-------------------------
如果a < b, c = 0, d = a
面试题
1.两个变量值的交换
    1)可以定义第三个中间变量,通过三个变量和两个数值可以交换
    2)可以通过算术运算符完成交换
2.
    atoi()
        "123"->123
    itoa()
        9527->"9527"
        1->'1'
        1 + '0' = '1'
        char arr[5] = {0};
        arr[0] = 9527 / 1000 = 9 + '0' = '9'
        arr[1] = 9527 / 100 % 10 = 5 + '0' = '5'
        arr[2] = 9527 / 10 % 10 = 2 + '0' = '2'
        arr[3] = 9527 % 10 = 7 + '0' = '7'
        arr[4] = '\0';

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>

int main(void)
{
int a = 13, b = 7;
int c = 0;

printf("a + b = %d\n", a + b);
printf("a - b = %d\n", a - b);
printf("a * b = %d\n", a * b);
printf("a / b = %d\n", a / b);
printf("a %% b = %d\n", a % b);

/*
printf("c = %d\n", c);
c = a + b;
printf("c = %d\n", c);
c = a - b;
printf("c = %d\n", c);
c = a * b;
printf("c = %d\n", c);
c = a / b;
printf("c = %d\n", c);
c = a % b;
printf("c = %d\n", c);
*/
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>

int main(void)
{
int a = 0, b = 0;
int tmp = 0;

scanf("%d-%d", &a, &b);//13 - 7

printf("a = %d b = %d\n", a, b);

a = a + b;// a = 13 + 7 = 20
b = a - b;// b = 20 - 7 = 13
a = a - b;// a = 20 - 13 = 7

/*
tmp = a;//把变量a的值赋值给tmp变量
a = b;//把变量b的值赋值给a变量
b = tmp;//把变量tmpb的值赋值给b变量
*/
printf("a = %d b = %d\n", a, b);

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>

int main(void)
{
int i = 0;

scanf("%d", &i);//9527
//录入一个4位的正整数

printf("千位 : %d\n", i / 1000);//9
printf("百位 : %d\n", i / 100 % 10);//5
printf("十位 : %d\n", i / 10 % 10);//2
printf("个位 : %d\n", i % 10);//7

return 0;
}

关系运算符

    >		是否大于
    <		是否小于
    ==		是否相等(一个等号是赋值运算符)
    >=		是否大于等于
    <=		是否小于等于
    !=		是否不等于
注意:
一个表达式经过关系运算符的运算,最终会生成真假值
    0为假,非0为真(默认的真值是1)
一般关系运算符的运算会配合分支语句和循环语句一起使用
    分支语句和循环语句就是用运算之后的真假值做操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>

int main(void)
{
int a = 13, b = 7;

printf("a > b = %d\n", a > b);
printf("a < b = %d\n", a < b);
printf("a == b = %d\n", a == b);
printf("a >= b = %d\n", a >= b);
printf("a <= b = %d\n", a <= b);
printf("a != b = %d\n", a != b);

return 0;
}

逻辑运算符

    &&		逻辑与(全真才为真,有假就是假)
        表达式1 && 表达式2
        表达式1		表达式2		整体
        真			真			真
        真			假			假
        假			真			假
        假			假			假
    ||		逻辑或(全假才为假,有真就是真)
        表达式1 || 表达式2
        表达式1		表达式2		整体
        真			真			真
        真			假			真
        假			真			真
        假			假			假
    !		逻辑非(真假互换)
        !(表达式)
        表达式		整体
        真			假
        假			真
====================================
    表达式1 && 表达式2
    如果表达式1为真,会执行表达式2的内容
    如果表达式1为假,不会执行表达式2的内容

    表达式1 || 表达式2
    如果表达式1为真,不会执行表达式2的内容
    如果表达式1为假,会执行表达式2的内容
====================================
已知有三个变量a b c存储的是非负的正整数
1.列出满足可以构成三角形的条件

2.已知a b c满足构成三角形的条件,列出满足构成直角三角形条件

3.已知a b c满足构成三角形的条件,列出满足构成等腰三角形条件

4.已知a b c满足构成三角形的条件,列出满足构成等边三角形条件
====================================

1
2
3
4
5
6
#include <stdio.h>

int main(void)
{
return 0;
}