01test_02day

01test_02day

==================================
2022-7-1
==================================

一.温故知新

    1.演示了一遍安装虚拟操作系统的步骤
        1)虚拟机软件->VMWare
        2)Ubuntu的镜像->网易镜像 清华镜像
        3)需要手动分区
        4)安装软件之前需要切换软件源
    2.终端
        1)修改了终端的字体字号
        2)终端的配色方案
        3)分析终端提示符
        4)命令
            cd
            ls
            pwd
            touch
            mkdir
            rm
            cp
            mv
            cat
            tar

二.编辑器与编译器

    编辑器是用来编写程序的
    编译器是用来编译程序的
    在Linux环境中编辑器有很多种 : gedit vi vim emacs
    在Linux环境中编译器有很多种 : gcc cc arm-linux-gcc
    主要讲 vim 和 gcc 的使用
    1.编辑器vim的使用
        vim之所以被称之为强大的编辑器是因为本身支持很多的模式
        命令模式 命令行模式(底行模式) 编辑模式(插入模式) 可视 可视块 可视行
        注意 : 不要使用vim打开目录文件
        注意 : 用vim编写完成的文件内容要用正常的保存退出方式,不要直接关闭终端
                否则会生成交换文件(交换文件是隐藏文件)
                    vim hello.c
                        |
        按iIoOaA			V		按:
    编辑模式<----------命令模式---------->命令行模式
            --------->		<---------	
        按esc					按esc或者删掉:

    命令行模式的操作
        w		保存
        q		退出
        wq		保存并且退出

    大家在终端中,执行 vim ~/.vimrc
    先进入到编辑模式
    set ai
    set si
    set ts=4
    set sw=4
    set nu
    保存退出

    2.编译器gcc
        注意 : gcc编译器不检查段错误(操作内存不当引起的)
    gcc hello.c
        1)编译之后终端什么提示都没有,代表程序没有语法错误,会生成可执行文件
        2)编译之后终端报出警告,代表程序有些问题,但不是致命的,会生成可执行文件
        3)编译之后终端报出错误,代表程序100%有问题,并且是致命的,
                不会生成可执行文件
    默认的可执行文件的名字是a.out
    
    指定可执行文件的名字
        gcc -o 可执行文件名 .c文件

    要求大家在编译程序时加入-Wall选项,可以把所有警告列出
    gcc -Wall hello.c

    3.执行可执行文件
        ./a.out

三.man手册(帮助手册)

    有困难,找男人
    man 你要查找的东西
    在man手册界面中键盘上下按键可以翻阅
    按 q 键可以退出man手册

=====================================
作业
1.修改自己的vim配置文件
=====================================

#include <stdio.h>
/*
#include
面试题
1.在C语言中以#开头的内容都是预处理
2.从.c文件编译成可执行程序,需要经历哪些阶段?
    预处理->编译->汇编->链接
3.在C语言中预处理都包含哪些操作?
    文件包含 宏定义 条件编译
4.在包含头文件时可以使用双引号或者尖括号,有啥区别?
    尖括号 : 默认会从指定的目录(/usr/include)中查找头文件,
            如果找不到会报错
    双引号 : 默认会从当前目录中查找头文件,
            如果找不到再从指定目录中查找头文件,
            如果再找不到报错
stdio.h		标准输入输出的头文件
*/
int main(void)
/*
    main函数(也叫做主函数)
    main函数是程序的入口
    当执行可执行文件时,会从main函数进入,按照从上往下的顺序
    逐行逐行执行代码,最后从main函数退出
*/
{
    printf("Hello World!");
    /*
    printf是一个函数(功能)
    是用来打印输出的(可以把双引号引起来的内容打印到终端中)
    由于printf函数是别人实现的功能,所以需要包含人家的头文件
    */
}

/*
1.在C语言中有字符串,有没有字符串类型?
    没有字符串类型
printf("Hello World!");
    在C语言中双引号引起来的内容叫做字符串
    字符串都是由一个一个单一的字符组成的
    在C语言中单引号引起来的内容叫做字符
    字符串最后都有一个结束标志'\0'(尾0)
例子:
    "a" 和 'a'
    不一样,"a"是字符串,'a'是字符
    "a"是由'a' + '\0'组成
======================================	
    "0" 和 '0' 和 0
    不一样."0"是字符串,'0'是字符,0是整数
    "0"是由'0' + '\0'组成
练习:
在终端中打印出一个 %
*/
1
2
3
4
5
6
7
8
#include <stdio.h>

int main(void)
{
	printf("%");
	//printf("Hello World!");
	//printf('Hello World!');
}
/*
printf打印输出的特殊内容->转义字符
转义字符也是字符
    转义字符是由一个 \ + 某一个东西组成的
    转义字符除了有ASCII值以外还有另外的一层含义
ASCII(描述的就是字符和数字的对应关系)
常用的ASCII表一共有128个字符(对应数字0 - 127)
记住特殊的ASCII值
    字符	ASCII值
    '\0'	0
    '\n'	10
    '0'		48
    'A'		65
    'a'		97
转义字符
    字符	ASCII值		含义
    '\0'	0			字符串的结束标志
    '\n'	10			换行符
            会把光标换到下一行行首的位置
    '\r'	13			回车符
            会让光标回到当前行行首的位置
    '\t'	9			水平制表符
            会补一个tab
    '\v'	11			垂直制表符
            光标会换到下一行当前列的位置
*/
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#include <stdio.h>

int main(void)
{
	printf("123\v456\v789\v");
	printf("123\t456\t789\t");
	//printf("sdlpmdaspmdpasmdpasmoHello World!\r");
	//printf("Hello World!\n");
	//printf("Hello\0World!");
	//printf("%");
	//printf("Hello World!");
	//printf('Hello World!');
}
/*
printf打印输出的特殊内容->标准化输出格式
    标准化输出格式只是一种输出格式,并不是字符
    是由一个 % + 某一个东西组成的
    %叫做占位符
    %d		十进制整数输出
    %o		八进制输出
    %x		十六进制输出
    %f		小数输出(默认打印输出小数点后六位)
    %.2f	默认输出小数点后2位
    %c		单一字符输出
    %s		字符串输出
    %p		输出地址
    %%		打印一个百分号
*/
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#include <stdio.h>

int main(void)
{
	//printf("%d", 9527);
	//printf("%x\n", 100);
	//printf("%o\n", 100);
	//printf("%f\n", 3.14);
	//printf("%.2f\n", 3.14);
	//printf("%c\n", '%');
	//printf("%%\n");
	//printf("%s\n", "Hello");
	//printf("%f\n", 100);
	//printf("%d\n", 3.14);
	printf("%c-%d\n", 100, 'A');
}