准备工作
软件使用
Typora(Markdown)
采自Markdown 基本语法 | Markdown 官方教程
常用的一些编辑语法讲解,如下
标题语法
使用#加空格
创建标题,标题级别由#
的数目决定
字体类型语法
使用**所要填写的字符**
进行加粗显示
使用*所要填写的字符*
进行斜体显示
代码表示语法
使用` ````加要撰写的语言,如c、python、shell
#include<stdio.h>
int main(void)
{
printf("hello world");
return 0;
}
#解释型语言
print("hello world");
#解释型语言
echo "hello world"
分割线语法
使用---加空格
得到分割线
列表语法
使用-加空格
创建无序型列表,如需创建二级标题则继续添加-加空格
- 无序型列表1
- 无序型列表2
- 无序型列表2-1
- 无序型列表2-2
使用1.
创建有序型列表,如需创建二级列表则添加1.
- 有序型列表1
- 有序型列表2
- 有序型列表3
- 有序型列表4
- 有序型列表4-1
- 有序型列表4-2
表格语法
要添加表,请使用三个或多个连字符---
创建每列的标题,并使用管道|
分隔每列。您可以选择在表的任一端添加管道。例:|Syntax|Description|加回车
Syntax | Description |
---|---|
Xmind(思维导图)
用于整理每天学习的内容:
- 掌握了哪部分
- 欠缺的那部分
- 未掌握那部分
FeiQ
教学中的文件共享工具
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rqUWDv1r-1681559296737)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230410170002057.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zno8sOj4-1681559296737)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230410170101474.png)]
计算机基础
计算机基础结构
- 1949冯·诺伊曼计算机(EDVAC)
- 冯·诺依曼原理:二进制、数列式执行任务
- 进制类型:
- 十进制:逢十进一
- 二进制:逢二进一
- 位:bit (b) 计算机的最小单位
- 字节:Byte (B) 计算机的最小分配单位
- 1字节 == 8位
- 拓展问题:二进制、八进制、十进制、十六进制之间转换
- 计算机构成:输入设备、输出设备、存储器、CPU(运算器、控制器)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Xmn3ZAP-1681559296737)(…/…/…/…/…/AppData/Roaming/Typora/typora-user-images/image-20230410170739914.png)]
程序
程序简介
- 广义上讲,为实现一个特定的目标而预先设计的一组可以操作的工作步骤,称之为程序
- 程序 = 算法 + 数据结构
- 用计算机语言解决问题的方法步骤
程序发展
- 机器语言:直接使用机器指令(0、1),可被计算机直接识别
- 汇编语言:机器指令的符号化,与机器指令存在着直接的对应关系,但可以直接访问系统接口(在高级语言无法完成某些特殊功能时使用汇编语言)
- 高级语言:面向用户,基本上独立于计算机种类与结构的语言,形式上接近于自然语言,例如:python,C,shell
程序设计步骤
-
分析建模,
-
输入一个整数,输出该整数是奇数还是偶数?
- 输入一个数,判断是奇数还是偶数
- 须先了解奇数偶数的概念,即能否被二整除
-
输入一个整数,输出该整数是质数还是合数?
-
输入一个整数,判断该整数是否为水仙花数?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G7cDVI4o-1681559296738)(…/…/…/…/…/AppData/Roaming/Typora/typora-user-images/image-20230411152657766.png)]
-
-
画流程图及流程图框分类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KrQ5Eetr-1681559296738)(…/…/…/…/图片/Saved Pictures/QQ图片20230411094303.jpg)]
-
将流程图转化为C语言代码,使用IDE(Visual Studio 2022)
-
Visual studio安装
-
简介
Windows平台下的Microsoft开发的集成开发环境(IDE)软件
编辑器(vim) + 编译器(gcc/g++) + 调试器(gdb) + 运行环境 ——>> 集成开发环境(IDE)
-
使用版本:Visual Studio 2022 Community
-
-
在Viusal Sutdio 2022中编译源代码
程序学习参考
有两个编程语言学习网站
Linux系统
准备工作
安装Ubantu操作系统
- 安装版本:ubantu22.04 LTS
- 安装位置:
- Vmware Workstation pro 17
- WSL子系统
配置Linux的C开发环境
-
安装gcc编译器
例:gao@ubuntu:~$sudo apt install gcc
-
安装gdb调试器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P7lUo46f-1681559296738)(…/…/…/…/…/AppData/Roaming/Typora/typora-user-images/image-20230414165229813.png)]
-
想要使用调试器对程序进行调试,需要在编译阶段添加
-g
参数,例:gcc -g demo1.c -o demo1 -
gdb一般使用命令:
例: 运行:gdb j (gdb) b main 设置断点 (breakpoint) Breakpoint 1 at 0x772: file square.c, line 5. (gdb) b 10 (gdb) r (run)运行 (gdb) n (next) 不进子函数 7 int length=0; (gdb) s (step) 进子函数,库函数也进 8 int len=0;//周长 (gdb) (gdb) p length (print 打印一下变量的值) $1 = 10 (gdb) q (quit)
-
-
通过ssh进行Windows与Linux的文件交换
-
配置VMware的网络
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7ad2nrGU-1681559296738)(…/…/…/…/…/AppData/Roaming/Typora/typora-user-images/image-20230414164838085.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xRVwGCDf-1681559296738)(…/…/…/…/…/AppData/Roaming/Typora/typora-user-images/image-20230414164941881.png)]
-
配置Linux的ssh设置![
](…/…/…/…/…/AppData/Roaming/Typora/typora-user-images/image-20230414164658979.png)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BgkV29Ba-1681559296739)(…/…/…/…/…/AppData/Roaming/Typora/typora-user-images/image-20230414164743222.png)]
-
连接Windows与Linux
- 使用WinSCP软件实现
- 打开此软件,在其中配置Linux的ip地址、用户名与密码,点击登录即可连接
- 在Linux上需要安装ssh
- sudo install openssh-server,sudo service ssh reboot
- sudo apt install net-tools
- 使用WinSCP软件实现
-
Linux结构
Linux组件
- Linux内核
- 文件系统
- Shell
- 应用程式
Linux文件系统
下面将Windows系统的文件系统与Linux的文件系统进行对比
- Windows文件系统:
- 存在盘符之分,例如C:,D:等
- 文件目录以盘符为起点,为绝对路径地址
- Linux文件系统
- 不存在盘符
- 是以根目录的形式存储
- 根目录下文件分别被划分为不同的用途,如root,home,etc,bin等
- 用户文件存在
/home/"user"/
下 - 绝对路径为从根目录开始的地址信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ejHVmzwj-1681559296739)(…/…/…/…/…/AppData/Roaming/Typora/typora-user-images/image-20230413164201199.png)]
系统使用(终端Terminal)
Shell程式 <=> Terminal终端,又称为命令行解释器,作用为用户可通过此APP,与Linux内核进行交互
界面操作指令(部分)
-
ctrl+alt+T
:打开Terminal -
ctrl+shirt+(+)
:放大字体 -
ctrl+(-)
:缩小字体 -
Tab
:自动补全-
按一次
Tab
gao@ubuntu:~$ ls 1.c Documents examples.desktop Pictures Templates Desktop Downloads Music Public Videos gao@ubuntu:~$ cd M 然后按Tab键盘 自动补全Music
-
按两次
Tab
:按一次不启作用时,按两次会将以D开头全部显示出来gao@ubuntu:~$ ls 1.c Documents examples.desktop Pictures Templates Desktop Downloads Music Public Videos gao@ubuntu:~$ cd D Desktop/ Documents/ Downloads/
-
Shell指令(部分)
-
sudo shutdown
:关机-h now
:即刻关机-h +30
:设定30mins关机sudo reboot
:重启
-
ls
:为 list 的缩写,通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目 录、文件夹、文件权限)查看目录信息等等,加后缀可实现更多功能-R
查看自当前路径以下所有文件信息,包含文件夹中包含的信息-a
额外查看以.
开头文件名的隐藏文件-l
查看当前路径下的文件信息,并显示其权限信息、创建者、工作组、创建时间信息
-
cd
:切换路径.
:为当前路径..
:上一级路径/
:根目录路径文件夹名
:到达指定文件路径下
-
pwd
:查看当前路径地址 -
rm
:删除-r
:删除文件夹及其下的内容-d
:删除空文件夹
-
mv
:移动文件夹或文件等-
格式为:mv [option] [dest],例:mv demo1.c day4 或 mv demo1.c home/day4
-
也可用于重命名文件或文件夹(要求option与dest的文件类型是相同的),例 mv demo1.c demo2.c
-
-
mkdir
:“make directory”,创建文件夹- 格式为:mkdir sth
-p
:在创建文件夹时报错,必要时帮助创建父文件夹,例:mkdir home/sth -p
-
cp
:“copy”,复制文件或文件夹- 格式为:cp [option] [dest],例:**cp demo1.c day5 **
-r
:复制文件夹,例:cp day4 home/day5 -r
-
touch
:创建空文件 -
vi
:vim编辑器创建C文件,格式例为:vi demo1.c-
命令模式
nyy
:复制n行,yy
默认复制1行ndd
:剪切n行,dd
默认剪切1行p
:粘贴到光标所在行的下一行P
:粘贴到光标所在行的上一行
-
底行模式
- 在命令模式下按
:
进入底行模式 w
:“write”,保存q
:“quit”,退出set nu
:设置行号
- 在命令模式下按
-
插入模式
i
:当前光标插入I
:当前行开头插入O
:上一行插入o
:下一行插入- 退出插入模式,按
ESC
-
-
cat
:适合查看短的文档 -
more
:适合查看长的文档- 按
enter
往下行进一行 - 按
space
往下行进一页 - 按
b
往上行进一页 - 按
q
退出
- 按
-
head
:默认打印前10行,加-n
代表打印前n行 -
tail
:默认打印最后10行,加-n
代表打印最后n行 -
date
:打印当前日期 -
cal
:打印当月日历
C语言
概要
数据类型
基本数据类型
- 整数int,short,long,long long,例如:12,14,89
- 浮点型float,double
- 小数,例如:12.5,47.7
- 科学计数型,例如:1.3e7
- 字符char
- 非转义字符,例如:‘a’,‘c’,‘r’
- 转义字符,例如:
\n
,\\
,\t
复合数据类型
- 指针
- 数组
- 函数
- 结构体
- 共用体
- 枚举
运算符
- 算术运算符,例如:+,-,*,/,%
- 比较运算符,例如:<,>,==,<=,>=,!=
- 逻辑运算符,例如:&&,||
- 条件运算符
- 位运算符
- 逗号运算符
结构语句
- 顺序结构
- 选择结构
- 循环结构
算法
基础语法
语法案例
在显示屏上输出“hello world!!!”
-
分析建模:输出字符串“hello world!!!”
-
画流程图
-
翻译流程图为C语言
//举例,通行写法 /*功能:打印“hello world!!!” */ #include<stdio.h> //printf()的头文件 int main(void) { printf("hello world!!!"); //函数名(参数列表) return 0; }
添加注释
写给程序员,进行对本程序的解释,//
单行注释,/*。。。*/
多行注释(功能注释)
引入头文件
例如:#include<stdio.h>
入口函数main函数
main
函数:计算机执行C语言代码的入口函数- 一个源文件中只能有一个main函数
定义变量(分配空间)
- 类型名(指的数据类型) 变量名(要求尽量言达其意)
- 带有
()
为函数,带有[]
为数组,带有{}
为程序 - 变量名的命名规范:
- 使用字母,数字或下划线组成,但首字符不能使用数字
- 不能命名为C语言预设好的特殊函数的名称,例如int,main等此类
- 定义变量的分配空间是在内存中随机分配地址空间
标准输入scanf()、输出printf()函数
scanf()标准输入函数
- scanf(参数列表)
- scanf(“格式化符号”,变量首地址列表) &+空间的名字 空间的首地址
- scanf(“%d”,&i); //通过键盘将整数输入变量i中
- scanf(“%f”,&f1); //通过键盘将小数输入变量f1中
- scanf(“%c”,&ch);//通过键盘将字符输入变量ch中
printf()标准输出函数
- printf(参数列表)
- printf(“helloworld\n”); //字符串原样输出 ,'\n’转义字符(C中有多少转义字符)换行
- printf(“字符串+格式化符号”,变量列表) 参数1中有多少个格式化符号,列表就会有几个变量
- printf(“%d\n”,i); 把变量i中的值以整形格式输出
- printf(“%f\n”,f1); 把变量fl中的值以小数格式输出
- printf(“%c\n”,ch); 把变量ch中的值以字符格式输出