1.1.1计算机和编程语言
- 计算机只能一步一步做(按部就班)—所以—需要程序(描述所需步骤的一种手段),是由编程语言写出来表达我们要计算机如何去做的东西
- 算法—转化—程序—指示—计算机(怎么做)
1.1.2计算机的思维方式
- 枚举法(加附加条件):计算机更喜欢且比找算法容易
- 程序的执行(两种语言性能差异不大,只是执行方式不同):1. 解释性语言:借助一个程序可理解你的程序按照要求执行(特殊计算能力,让计算机看懂你的程序)(python)
2. 编译性语言:把自己的程序翻译为另一个程序(计算机可读懂)——用另一个程序执行(或存储)(确定的运算性能)(c语言)
1.2.1为什么是c
- c的优势:很多场合c是唯一选择(操作和嵌入系统)
- 有很强的函数库(很方便)且语言本身差异小,基础的东西与C相近(C-like语言)
1.2.2简单历史
- FORTRAN——BCPL——B——C(演变过程)
- 受PL/1(一种底层编程语言和系统编程语言)的影响:PL/1可以做基础操作系统,C语言也想要充分表达计算机的机器指令
- 出现c语言编译器
- C的发展与版本:经典C——ANSI C——C89——C95和C99(编译器都支持)
1.2.3编程软件
- C是一种工业语言:基础性工作的人在用(练习代码),开发效率>>学习过程和开发乐趣
- 多样的编程软件:Xcode,DEVC++,Geany
1.3.1第一个C程序
-
保证不在中文输入状态
-
存储的时候例如:hello world.c
-
程序框架:int…;为声明语句(说明变量是一个整数),x=12345就是将12345
-
调试方法:这个值赋给x加入printf以监视变量的值,用调试器
#include<stdio.h> int main() { return 0; }
1.3.2详解第一个程序
printf("Hello World!\n")
:里面的内容是字符串,\n表示换一行- 大括号每一句要加分号,计算机不用编译的可用中文输入法(标点符号),要编译的不用中文输入法
1.3.3做点计算
- 四则运算:
(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=6&share_source=copy_web
1.3.4Mac OS X如何在命令行编辑、编译、执行C程序
- 具体介绍如何使用该系统(要演示)
- gcc为编译必备:gcc+文件名(hello.c )
- ls是列出所有文件
- cat为显示出所写的程序
- ./a.out是将程序运行然后得到输出结果。
2.1.2变量定义
- 介绍Change.c如何操作
- 变量定义:保存数据的地方,一般形式:<类型名称>+<变量名称>例如:int price
- C语言的保留字:例如:auto,case
2.1.3变量赋值与初始化
- price = 0(初始化),=为赋值符号,每个变量都要初始化
- a = b与b = a不同(赋值方向不同)
- 变量类型(必须确定确切的变量):price、amount
2.1.4变量输入
读整数:
(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=13&share_source=copy_web
2.1.5常量VS变量
- 常量的概念:
(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=14&share_source=copy_web
const表示不变,表明变量一旦初始化就不能再修改(变量要大写)
- 变量(两个变量)例如:plus.c:
(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=14&share_source=copy_web)
2.1.6浮点数
-
浮点数(double(双精度)和float(单精度)):带小数点的数值,表达非整数。
-
计算身高程序(要小数位):两个整数计算只能是整数(会把小数点丢掉),10.0和10不同(10.0是浮点数)
(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=15&share_source=copy_web)
- 浮点数:带小数点的数值(小数点浮动),浮点数之间才能运算:(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=15&share_source=copy_web)
2.2.1表达式
4. 运算符和算子:动作(如加法运算符+)和参与计算的值(常数、变量、返回值)
5. 计算时间差(都转换为分钟计算):
(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=16&share_source=copy_web)
2.2.2运算符优先级
- 运算符优先级:
(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=17&share_source=copy_web)
2.2.3交换变量
-
两个变量交换:加入第三个变量中转
例如:
int a = 5; int b = 6; int t; t = a; a = b; b = t;
2.2.4复合赋值与递增递减
- 复合赋值实例:
(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=19&share_source=copy_web)
- 递增递减(++和–):1.算子是变量,给变量+1和-1
2.a++是+1前的值,++a是+1后的值
2.2.5如何使用PAT系统来做编程练习题
- 教会如何使用PAT提交作业:1.注册账号
- 注意输入格式和输出格式,记得拷贝代码
3.0.1PAT再解释
- 仔细读题:明确格式样式、题目要求、样例
- 不要交互输出,检查输入
3.0.2第二周习题讲解
- 讲解布置作业:计算身高、时间的作业
3.0.3 0的故事
- 0的模样来源:中间有斜线,为了与o区别开
3.1.1做判断
- 进位判断:原有的程序判断方法较为复杂——用if语句
- if语句:
(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=24&share_source=copy_web)
3.1.2判断的条件
- 条件:
(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=24&share_source=copy_web)
- 优先级:赋值运算符<关系运算符<算术运算符
3.1.3找零计算器
-
if语句在找零计算器应用:
(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=26&
share_source=copy_web)- 注释://给人类提供信息,计算机不会读取,可以更便于其他人理解
-
介绍判断年龄所输出时的程序 :
(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=26&share_source=copy_web)3.1.4否则的话
-
为了介绍if-else语句
(优势:更加方便判断,更多人都能懂)
(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=27&share_source=copy_web)
3.1.5if语句再探
- 注意事项:要有大括号
- 介绍计算薪水和判断成绩的程序:
(这些图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=28&share_source=copy_web))
3.2.1嵌套的if-else
- 找最大的数(三个及以上的数):用嵌套的if-else语句(if-else里再套一个if-else语句)注意层级划分)
(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=29&share_source=copy_web)
3.2.2级联的if-else if
- 分段函数:用级联的if-else语句(注意层级划分)
(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=30&share_source=copy_web)
3.2.3if-else的常见错误
- 不要忘记大括号
- 不要乱用分号
- 不要错用等号
3.2.4多路分支
-
Switch-case语句:表达式只能是整数型结果、常数可以是常量也可以是常数计算的表达式。break才可以使程序停下来,default扫尾。例如:
(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=32&share_source=copy_web)
- 例子:问候(用Switch-case)
- 例子:问候(用Switch-case)
(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=32&share_source=copy_web)
4.1.1循环
- 判断几位数(用if-else只能判断低位数)——加while循环(可以判断高位数(不能太高,数有一定范围)
(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=33&share_source=copy_web)
4.1.2while循环
- do-while循环(循环出来的时候判断条件)
实例:
(这些图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=34&share_source=copy_web)
4.1.3do-while循环
- 循环体内要有改变条件的机会(没有则会形成死循环),条件成立是循环继续的条件
- 测试程序要用特殊数据(例如:10 0 负数)
4.2.1循环计算
- 计算之前先保存原始值,后面可能用
- 初始化时变量可以不等于0(1、-1也可,但是不方便)
- 计数循环:想模拟很大次数的循环,可以模拟较少的循环次数(几次输出走几轮)
4.2.2猜数游戏
- 用
rand()
(每次召唤都得到一个随机整数)
(图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=37&share_source=copy_web)
4.2.3算平均数
- 如何算平均数(初步想法):输入一系列正整数,到-1输入结束, 由此程序计算平均数,再输出数字个数和平均数。(变量——算法——流程图——程序)
- 变量(3个):一个记录读到整数的变量,一个记录累加结果,一个记录读到的个数
- 算法:
(图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=38&share_source=copy_web
4. 程序
(图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=38&share_source=copy_web
4.2.4整数逆序
- 整数的分解:
(图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=39&share_source=copy_web)
(图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=39&share_source=copy_web)
5.1.1 for循环
- 阶乘:变量:输入需要一个int 的n,保存要一个fact,计算要一个(int的 i)
- for循环:for=对于,小括号每一个表达式都可省略
(图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=40&share_source=copy_web)
求和初始值为0,求积为1
5.1.2循环的计算和选择
- 循环次数:
(图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=41&share_source=copy_web)
对比:
(图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=41&share_source=copy_web)
- 循环的选择:有固定次数用for,必须执行一次do-while,其他用while
5.2.1循环的控制
- 判断是否是素数:
(图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=42&share_source=copy_web)
- breakVS continue:break: 跳出循环, continue:跳过这轮,剩下的语句进入下一轮。
(图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=42&share_source=copy_web)
5.2.2嵌套的循环
- 找100以内的素数:用循环的嵌套
(图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=43&share_source=copy_web)
- 找前五十个素数(不知道终点):cnt(计数)<50
5.2.3从嵌套的循环跳出
- 凑硬币问题:
只得到一个结果:程序设计1:
程序设计2(多重循环比较好):
(这些图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=44&share_source=copy_web)
5.3.1前n项求和
-
求和:for循环
-
连加
-
连加与连减
(以上四幅图片均摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=45&share_source=copy_web)
5.3.2整数分解
- 正序分解整数程序:
(以上图片均摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=46&share_source=copy_web)
5.3.3求最大公约数
- 枚举:
(以上图片均摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=47&share_source=copy_web)
- 辗转相除法(效率更高):不用把所有数的试一遍
(以上图片均摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=48&share_source=copy_web)
6.0.1求符合给定条件的整数集
-
条件:
(以上图片均摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=48&share_source=copy_web)
- 程序表达:
(以上图片均摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=48&share_source=copy_web)
6.0.2水仙花数
- 条件要求及水仙花数的解释:
(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=49&share_source=copy_web)
- 程序表达:
(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=49&share_source=copy_web)
6.0.3九九乘法表
- 打印九九乘法表程序
(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=50&share_source=copy_web)
6.0.4统计素数并求和
- 条件及要求:
(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=51&share_source=copy_web)
- 程序表达:
(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=51&share_source=copy_web)
6.0.5猜数游戏
- 条件及要求:
(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=52&share_source=copy_web)
- 程序表达:
(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=52&share_source=copy_web)
6.0.6求序列前n项和
-
条件及要求:
-
程序表达:
(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=53&share_source=copy_web)
6.0.7练习解析5-1到5-3
-
约分最简分式
(以上图片均摘自b站https://www.bilibili.com/video/BV1sJ411E7St?p=54&share_source=copy_web) -
念数字:
(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=54&share_source=copy_web)
- 求a的连续和:
(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=54&share_source=copy_web)
6.1.1c语言有哪些基础类型,sizeof能做什么
-
c语言是有类型的语言:1. 要求:使用前要定义,确定类型。
-
发展方向:c++/java强调类型。
javascript、python、php不看重类型,不要定义。
- 类型:整数、浮点数(例如double声明变量类型)、指针、逻辑、自定义:
- 类型:整数、浮点数(例如double声明变量类型)、指针、逻辑、自定义:
-
(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=55&share_source=copy_web)
- sizeof:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jEGyVfzl-1631545183180)(/Users/xiongyi/Desktop/C语言课程笔记/C语言课程笔记1/截屏2021-08-19 20.29.28.png)]
(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=55&share_source=copy_web)
6.1.2整数类型
- 不同整数类型的字节(一个字节8比特):char:1;short:2;int:4;long:8;long long:8.
- 字长:32或64个比特,表示寄存器一次可以储存或传输的数据。
6.1.3整数的内部表达
- 负数用二进制如何表达:1. 用一个特殊的标志表示负数
2. 取中间数为0,如1000000表示0,比它小就是负数
3. 补码:可以得到溢出的全0.
(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=56&share_source=copy_web)
6.1.4整数的范围
2.整数的范围:
(以上图片均来自b站https://www.bilibili.com/video/BV1sJ411E7St?p=58&share_source=copy_web)
-
补码:
(以上图片均来自b站https://www.bilibili.com/video/BV1sJ411E7St?p=58&share_source=copy_web) -
整数越界:
(以上图片均来自b站https://www.bilibili.com/video/BV1sJ411E7St?p=58&share_source=copy_web)
(顺减逆加)
6.1.5整数的输入和输出:
(以上图片均来自b站https://www.bilibili.com/video/BV1sJ411E7St?p=59&share_source=copy_web)
6.1.6选择整数类型:
(以上图片均来自b站https://www.bilibili.com/video/BV1sJ411E7St?p=60&share_source=copy_web)
6.1.7浮点类型:
3.
(以上图片均摘自b站https://www.bilibili.com/video/BV1sJ411E7St?p=61&share_source=copy_web)
6.1.8浮点数的范围与精度
1
(无精度可言)
(以上图片均摘自b站https://www.bilibili.com/video/BV1sJ411E7St?p=62&share_source=copy_web)
6.1.9字符类型
(每一个字符都可用一个数字去表达)
(以上图片均摘自b站https://www.bilibili.com/video/BV1sJ411E7St?p=63&share_source=copy_web)
6.1.10逃逸字符
-
(以上图片均摘自b站https://www.bilibili.com/video/BV1sJ411E7St?p=64&share_source=copy_web)
6.1.11 不同类型之间的转换 -
类型加值,注意类型范围
(以上图片均摘自b站https://www.bilibili.com/video/BV1sJ411E7St?p=65&share_source=copy_web)
6.2.1逻辑类型
- bool类型
(以上图片均摘自b站https://www.bilibili.com/video/BV1sJ411E7St?p=66&share_source=copy_web)
6.2.2逻辑运算
- 逻辑运算的定义:
进一步理解:
(以上图片均摘自于b站https://www.bilibili.com/video/BV1sJ411E7St?p=67&share_source=copy_web)
- 优先级:(扩充)
(以上图片均摘自于b站https://www.bilibili.com/video/BV1sJ411E7St?p=67&share_source=copy_web)
3.
(以上图片均摘自于b站https://www.bilibili.com/video/BV1sJ411E7St?p=67&share_source=copy_web)
6.2.3条件和逗号运算
-
条件运算符:
(以上图片均摘自于b站https://www.bilibili.com/video/BV1sJ411E7St?p=68&share_source=copy_web)
上下等效(上的那个例子太复杂,不建议用) -
逗号运算(优先级最低,比赋值都低)
(以上图片均摘自于b站https://www.bilibili.com/video/BV1sJ411E7St?p=68&share_source=copy_web)
(目前只在for循环中使用,起到增加计算式的作用)