C语言编程课程笔记1

1.1.1计算机和编程语言

  1. 计算机只能一步一步做(按部就班)—所以—需要程序(描述所需步骤的一种手段),是由编程语言写出来表达我们要计算机如何去做的东西
  2. 算法—转化—程序—指示—计算机(怎么做)

1.1.2计算机的思维方式

  1. 枚举法(加附加条件):计算机更喜欢且比找算法容易
  2. 程序的执行(两种语言性能差异不大,只是执行方式不同):1. 解释性语言:借助一个程序可理解你的程序按照要求执行(特殊计算能力,让计算机看懂你的程序)(python)
    2. 编译性语言:把自己的程序翻译为另一个程序(计算机可读懂)——用另一个程序执行(或存储)(确定的运算性能)(c语言)

1.2.1为什么是c

  1. c的优势:很多场合c是唯一选择(操作和嵌入系统)
  2. 有很强的函数库(很方便)且语言本身差异小,基础的东西与C相近(C-like语言)

1.2.2简单历史

  1. FORTRAN——BCPL——B——C(演变过程)
  2. 受PL/1(一种底层编程语言和系统编程语言)的影响:PL/1可以做基础操作系统,C语言也想要充分表达计算机的机器指令
  3. 出现c语言编译器
  4. C的发展与版本:经典C——ANSI C——C89——C95和C99(编译器都支持)

1.2.3编程软件

  1. C是一种工业语言:基础性工作的人在用(练习代码),开发效率>>学习过程和开发乐趣
  2. 多样的编程软件:Xcode,DEVC++,Geany

1.3.1第一个C程序

  1. 保证不在中文输入状态

  2. 存储的时候例如:hello world.c

  3. 程序框架:int…;为声明语句(说明变量是一个整数),x=12345就是将12345

  4. 调试方法:这个值赋给x加入printf以监视变量的值,用调试器

    #include<stdio.h>
    
    int main()
    {
      return 0;
    }
    

1.3.2详解第一个程序

  1. printf("Hello World!\n"):里面的内容是字符串,\n表示换一行
  2. 大括号每一句要加分号,计算机不用编译的可用中文输入法(标点符号),要编译的不用中文输入法

1.3.3做点计算

  1. 四则运算:请添加图片描述

(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=6&share_source=copy_web

1.3.4Mac OS X如何在命令行编辑、编译、执行C程序

  1. 具体介绍如何使用该系统(要演示)
  2. gcc为编译必备:gcc+文件名(hello.c )
  3. ls是列出所有文件
  4. cat为显示出所写的程序
  5. ./a.out是将程序运行然后得到输出结果。

2.1.2变量定义

  1. 介绍Change.c如何操作
  2. 变量定义:保存数据的地方,一般形式:<类型名称>+<变量名称>例如:int price
  3. C语言的保留字:例如:auto,case

2.1.3变量赋值与初始化

  1. price = 0(初始化),=为赋值符号,每个变量都要初始化
  2. a = b与b = a不同(赋值方向不同)
  3. 变量类型(必须确定确切的变量):price、amount

2.1.4变量输入
读整数:请添加图片描述

(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=13&share_source=copy_web

2.1.5常量VS变量

  1. 常量的概念:请添加图片描述

(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=14&share_source=copy_web

const表示不变,表明变量一旦初始化就不能再修改(变量要大写)

  1. 变量(两个变量)例如:plus.c:
    请添加图片描述

(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=14&share_source=copy_web

2.1.6浮点数

  1. 浮点数(double(双精度)和float(单精度)):带小数点的数值,表达非整数。

  2. 计算身高程序(要小数位):两个整数计算只能是整数(会把小数点丢掉),10.0和10不同(10.0是浮点数)

请添加图片描述

(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=15&share_source=copy_web

  1. 浮点数:带小数点的数值(小数点浮动),浮点数之间才能运算:请添加图片描述(该图片摘自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运算符优先级

  1. 运算符优先级:请添加图片描述

(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=17&share_source=copy_web

2.2.3交换变量

  1. 两个变量交换:加入第三个变量中转

    例如:

    int a = 5;
    int b = 6;
    int t;
    t = a; 
    a = b;
    b = t;
    

2.2.4复合赋值与递增递减

  1. 复合赋值实例:
    请添加图片描述

(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=19&share_source=copy_web

  1. 递增递减(++和–):1.算子是变量,给变量+1和-1


2.a++是+1前的值,++a是+1后的值

2.2.5如何使用PAT系统来做编程练习题

  1. 教会如何使用PAT提交作业:1.注册账号
  2. 注意输入格式和输出格式,记得拷贝代码

3.0.1PAT再解释

  1. 仔细读题:明确格式样式、题目要求、样例
  2. 不要交互输出,检查输入

3.0.2第二周习题讲解

  1. 讲解布置作业:计算身高、时间的作业

3.0.3 0的故事

  1. 0的模样来源:中间有斜线,为了与o区别开

3.1.1做判断

  1. 进位判断:原有的程序判断方法较为复杂——用if语句
  2. if语句:请添加图片描述

(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=24&share_source=copy_web

3.1.2判断的条件

  1. 条件:请添加图片描述

(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=24&share_source=copy_web

  1. 优先级:赋值运算符<关系运算符<算术运算符

3.1.3找零计算器

  1. if语句在找零计算器应用:

    (该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=26&请添加图片描述
    share_source=copy_web

    1. 注释://给人类提供信息,计算机不会读取,可以更便于其他人理解
  2. 介绍判断年龄所输出时的程序 :
    请添加图片描述
    (该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=26&share_source=copy_web

    3.1.4否则的话

  3. 为了介绍if-else语句
    (优势:更加方便判断,更多人都能懂)请添加图片描述

(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=27&share_source=copy_web)

3.1.5if语句再探

  1. 注意事项:要有大括号
  2. 介绍计算薪水和判断成绩的程序:
    请添加图片描述

请添加图片描述

(这些图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=28&share_source=copy_web))

3.2.1嵌套的if-else

  1. 找最大的数(三个及以上的数):用嵌套的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

  1. 分段函数:用级联的if-else语句(注意层级划分)
    请添加图片描述

(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=30&share_source=copy_web

3.2.3if-else的常见错误

  1. 不要忘记大括号
  2. 不要乱用分号
  3. 不要错用等号

3.2.4多路分支

  1. Switch-case语句:表达式只能是整数型结果、常数可以是常量也可以是常数计算的表达式。break才可以使程序停下来,default扫尾。例如:
    请添加图片描述

    (该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=32&share_source=copy_web

    1. 例子:问候(用Switch-case)
      在这里插入图片描述

(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=32&share_source=copy_web

4.1.1循环

  1. 判断几位数(用if-else只能判断低位数)——加while循环(可以判断高位数(不能太高,数有一定范围)
    在这里插入图片描述

(该图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=33&share_source=copy_web

4.1.2while循环
请添加图片描述

  1. do-while循环(循环出来的时候判断条件)

实例:在这里插入图片描述

(这些图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=34&share_source=copy_web

4.1.3do-while循环

  1. 循环体内要有改变条件的机会(没有则会形成死循环),条件成立是循环继续的条件
  2. 测试程序要用特殊数据(例如:10 0 负数)

4.2.1循环计算

  1. 计算之前先保存原始值,后面可能用
  2. 初始化时变量可以不等于0(1、-1也可,但是不方便)
  3. 计数循环:想模拟很大次数的循环,可以模拟较少的循环次数(几次输出走几轮)

4.2.2猜数游戏

  1. rand()(每次召唤都得到一个随机整数)
    在这里插入图片描述

(图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=37&share_source=copy_web

4.2.3算平均数

  1. 如何算平均数(初步想法):输入一系列正整数,到-1输入结束, 由此程序计算平均数,再输出数字个数和平均数。(变量——算法——流程图——程序)
  2. 变量(3个):一个记录读到整数的变量,一个记录累加结果,一个记录读到的个数
  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整数逆序

  1. 整数的分解:在这里插入图片描述

(图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=39&share_source=copy_web

  1. 整数逆序:在这里插入图片描述
    (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循环

  1. 阶乘:变量:输入需要一个int 的n,保存要一个fact,计算要一个(int的 i)
  2. for循环:for=对于,小括号每一个表达式都可省略

在这里插入图片描述

(图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=40&share_source=copy_web

求和初始值为0,求积为1

5.1.2循环的计算和选择

  1. 循环次数:在这里插入图片描述

(图片摘自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

  1. 循环的选择:有固定次数用for,必须执行一次do-while,其他用while

5.2.1循环的控制

  1. 判断是否是素数:
    在这里插入图片描述

(图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=42&share_source=copy_web

  1. breakVS continue:break: 跳出循环, continue:跳过这轮,剩下的语句进入下一轮。
    在这里插入图片描述

(图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=42&share_source=copy_web

5.2.2嵌套的循环

  1. 找100以内的素数:用循环的嵌套
    在这里插入图片描述

(图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=43&share_source=copy_web

  1. 找前五十个素数(不知道终点):cnt(计数)<50

5.2.3从嵌套的循环跳出

  1. 凑硬币问题:在这里插入图片描述

只得到一个结果:程序设计1:在这里插入图片描述

程序设计2(多重循环比较好):在这里插入图片描述

(这些图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=44&share_source=copy_web

5.3.1前n项求和

  1. 求和:for循环

  2. 连加
    在这里插入图片描述
    在这里插入图片描述

  3. 连加与连减在这里插入图片描述
    在这里插入图片描述

(以上四幅图片均摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=45&share_source=copy_web

5.3.2整数分解

  1. 正序分解整数程序:在这里插入图片描述

(以上图片均摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=46&share_source=copy_web

5.3.3求最大公约数

  1. 枚举:
    在这里插入图片描述

(以上图片均摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=47&share_source=copy_web)

  1. 辗转相除法(效率更高):不用把所有数的试一遍
    在这里插入图片描述

(以上图片均摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=48&share_source=copy_web

6.0.1求符合给定条件的整数集

  1. 条件:在这里插入图片描述

    (以上图片均摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=48&share_source=copy_web

    1. 程序表达:

在这里插入图片描述

(以上图片均摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=48&share_source=copy_web)

6.0.2水仙花数

  1. 条件要求及水仙花数的解释:
    在这里插入图片描述

(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=49&share_source=copy_web

  1. 程序表达:
    在这里插入图片描述

(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=49&share_source=copy_web

6.0.3九九乘法表

  1. 打印九九乘法表程序

在这里插入图片描述

(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=50&share_source=copy_web

6.0.4统计素数并求和

  1. 条件及要求:在这里插入图片描述

(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=51&share_source=copy_web

  1. 程序表达:
    在这里插入图片描述

(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=51&share_source=copy_web

6.0.5猜数游戏

  1. 条件及要求:
    在这里插入图片描述

(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=52&share_source=copy_web

  1. 程序表达:
    在这里插入图片描述

(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=52&share_source=copy_web

6.0.6求序列前n项和

  1. 条件及要求:
    请添加图片描述

  2. 程序表达:
    在这里插入图片描述

(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=53&share_source=copy_web

6.0.7练习解析5-1到5-3

  1. 约分最简分式
    在这里插入图片描述
    在这里插入图片描述
    (以上图片均摘自b站https://www.bilibili.com/video/BV1sJ411E7St?p=54&share_source=copy_web

  2. 念数字:
    在这里插入图片描述
    在这里插入图片描述

(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=54&share_source=copy_web

  1. 求a的连续和:在这里插入图片描述
    在这里插入图片描述

(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=54&share_source=copy_web

6.1.1c语言有哪些基础类型,sizeof能做什么

  1. c语言是有类型的语言:1. 要求:使用前要定义,确定类型。

    1. 发展方向:c++/java强调类型。

      ​ javascript、python、php不看重类型,不要定义。

      1. 类型:整数、浮点数(例如double声明变量类型)、指针、逻辑、自定义:
        在这里插入图片描述

(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=55&share_source=copy_web)

  1. 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整数类型

  1. 不同整数类型的字节(一个字节8比特):char:1;short:2;int:4;long:8;long long:8.
  2. 字长:32或64个比特,表示寄存器一次可以储存或传输的数据。

6.1.3整数的内部表达

  1. 负数用二进制如何表达:1. 用一个特殊的标志表示负数
    2. 取中间数为0,如1000000表示0,比它小就是负数
    3. 补码:可以得到溢出的全0.
    在这里插入图片描述

(以上图片摘自b站视频https://www.bilibili.com/video/BV1sJ411E7St?p=56&share_source=copy_web)

6.1.4整数的范围

  1. 数的范围:在这里插入图片描述
    (以上图片均来自b站https://www.bilibili.com/video/BV1sJ411E7St?p=58&share_source=copy_web

2.整数的范围:
在这里插入图片描述
(以上图片均来自b站https://www.bilibili.com/video/BV1sJ411E7St?p=58&share_source=copy_web

  1. 补码:
    在这里插入图片描述
    在这里插入图片描述
    (以上图片均来自b站https://www.bilibili.com/video/BV1sJ411E7St?p=58&share_source=copy_web

  2. 整数越界:
    在这里插入图片描述
    在这里插入图片描述
    (以上图片均来自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浮点类型:

  1. 在这里插入图片描述

  2. 在这里插入图片描述

3.在这里插入图片描述

  1. 在这里插入图片描述
    (以上图片均摘自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逃逸字符

  1. 在这里插入图片描述

  2. 在这里插入图片描述

  3. 在这里插入图片描述
    (以上图片均摘自b站https://www.bilibili.com/video/BV1sJ411E7St?p=64&share_source=copy_web
    6.1.11 不同类型之间的转换

  4. 在这里插入图片描述
    在这里插入图片描述

类型加值,注意类型范围

在这里插入图片描述
(以上图片均摘自b站https://www.bilibili.com/video/BV1sJ411E7St?p=65&share_source=copy_web

6.2.1逻辑类型

  1. bool类型
    在这里插入图片描述
    (以上图片均摘自b站https://www.bilibili.com/video/BV1sJ411E7St?p=66&share_source=copy_web

6.2.2逻辑运算

  1. 逻辑运算的定义:

在这里插入图片描述
进一步理解:
在这里插入图片描述
(以上图片均摘自于b站https://www.bilibili.com/video/BV1sJ411E7St?p=67&share_source=copy_web

  1. 优先级:(扩充)
    在这里插入图片描述
    (以上图片均摘自于b站https://www.bilibili.com/video/BV1sJ411E7St?p=67&share_source=copy_web
    3.在这里插入图片描述
  2. 在这里插入图片描述

(以上图片均摘自于b站https://www.bilibili.com/video/BV1sJ411E7St?p=67&share_source=copy_web
6.2.3条件和逗号运算

  1. 条件运算符:
    在这里插入图片描述
    (以上图片均摘自于b站https://www.bilibili.com/video/BV1sJ411E7St?p=68&share_source=copy_web
    上下等效(上的那个例子太复杂,不建议用)

  2. 逗号运算(优先级最低,比赋值都低)

在这里插入图片描述

(以上图片均摘自于b站https://www.bilibili.com/video/BV1sJ411E7St?p=68&share_source=copy_web
(目前只在for循环中使用,起到增加计算式的作用)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值