C语言单元总结

news/2024/12/15 23:30:50/

黑色加粗表示刷题刷到这样的题 红色加粗表示可能重要

目录

单元一   程序设计宏观认识

C语言程序框架

C语言程序构成 

标识符

 程序开发过程

单元二   程序设计基础知识 

数据类型

常量 

(1)直接常量

(2)符号常量

 变量

 强制类型转换

程序 

基本的程序结构 

tip 

单元三  顺序结构程序设计

标准输入输出库函数

 单元四 选择结构程序设计

单元五 循环结构程序设计

单元六 数组的使用 

单元七 函数的使用

函数

函数的构成

函数调用

变量

单元八 指针的使用

单元九 结构体类型的使用


单元一   程序设计宏观认识

C语言程序框架

C语言程序最基本的程序框架由两部分构成,分别是 1) 编译预处理   2) 函数组

C语言程序构成 

C程序最大的特点就是所有的程序都是用函数来装配的,函数是构成C语言程序的最基本单位,函数包括主函数,库函数和自定义函数。

一个函数一般由两个部分构成,分别是 函数首部  和  函数体

函数的一般结构形式为

     函数返回值类型   函数名(形式参数)       //函数首部{  说明语句;                             //函数体   可执行语句;                                     
}                                                     
标识符

C语言把标识符分为三类,即 关键字、预定义标识符、用户自定义标识符

对于用户自定义标识符的命名 C语言规定:

1)所有的用户标识符必须先定义后使用

2)用户标识符由字母、数字、下划线“_”组成, 并且首字符不能是数字

3)区分大小写

4)不能用关键字作为用户自定义标识符,通常不使用预定义标识符作为用户自定义标识符。

 程序开发过程

程序开发过程分为四个步骤,分别为

1)编辑源程序

2)编译源程序,生成目标程序

3)连接目标程序及其相关模块,生成可执行文件

4)运行可执行文件。

1)编辑

2)编译

3)连接(链接)

4)运行

最初编写的C语言程序称为___源程序______,其扩展名为____.c或.cpp_____,编译后生成的文件为__目标文件(目标程序)_______,其扩展名是____.obj_____,连接后生成的文件是_____可执行文件(可执行程序)____,其扩展名是___.exe______。 

单元二   程序设计基础知识 

数据类型

C语言中最基本的数据类型有: 整形、字符型、浮点型

常量 

C语言中使用的常量按照表现形式可分为 直接常量符号常量

(1)直接常量

1) 整形常量,有十进制、八进制和十六进制三种描述方式,其中,八进制的前置符号标志为0 ,十六进制的前置符号标志为 0x或0X

2)浮点型常量,有十进制小数和指数两种描述方式,指数形式的符号标志是 e或E

3)字符型常量,是用单撇引号括起来的单一字符,对一些特殊字符和控制字符用 转义字符的形式表示。

4)字符串常量,是用双撇引号括起来的一串字符序列。字符串的结束标志为 ‘\0’   。

(2)符号常量

 符号常量是使用某个符号代表的常量,符号常量使用编译预处理中的宏定义命令#define定义。

 变量

C语言中使用变量必须先定义使用。变量定义后,系统会根据变量的类型分配相应的存储空间。

 强制类型转换

由运算符和数据构成表达式,若表达式中各数据的类型不同,则存在类型自动转换问题,必要时也可以使用强制类型转换。

程序 

对于面向过程的程序设计来说,程序=  数据结构  + 算法

基本的程序结构 

在C语言中,对于每一个程序设计单元可采用结构化程序设计方法,有三种基本的程序结构,分别为:  顺序结构    选择结构(分支结构)  循环结构 

tip 

将一个浮点型变量n四舍五入精确到小数点后两位,其表达式为: ((int)(n*100+0.5))  /100.0           

3.141*100 =314.1   

314.1+0.5=314.6  当第三位数大于等于0.5时 会进一 314.5+0.5=315  以此实现四舍五入

强转为int类型 314

÷100.0会被强制类型转换为double类型

3.14

单元三  顺序结构程序设计

标准输入输出库函数

1)C语言提供了标准输入输出库函数用于实现数据输入输出操作,其对应的头文件为 stdio.h 

2)单字符输入和输出函数分别为 getchar()   putchar()  

3)格式化输入和输出函数分别为 scanf()    和 printf()   。

4)格式化输入/输出中,格式控制符由  %   开头。常用的格式控制符有:整型int格式符 %d 、float浮点型格式符 %f 、double浮点型格式符 %lf 、字符型格式符 %c  ;对于浮点型格式可以用 m.n  形式的附加格式说明小数的宽度和小数位数

5. 输入多个非字符型的数值数据时,数据输入时可用  空格 、TAB键 和 回车作为间隔符

 单元四 选择结构程序设计

1.条件判断表达式由关系运算符及其表达式、逻辑运算符及其表达式构成,其中:
(1)关系运算符有:   > 、 <  、 >= 、  <= 、  !=、  ==       
(2)逻辑运算符有:   &&、||、 !

2.在算术运算符、关系运算符、逻辑运算符和赋值运算符中,运算优先级最高的运算符是 !     ,最低的是   =       

单元五 循环结构程序设计

1.循环结构的三要素包括 1)循环变量初值         2)循环控制条件表达式        3)循环体

2.循环结构描述语句有三种 1)while 、2)do-while、 3)for 其中while和do-while的区别在于  不管循环条件是否成立,do-while循环都先执行一次循环体,所以do-while循环的循环体至少执行一次,而while循环的循环体可能一次都不执行 。

3. 循环结构控制语句 break 的作用是:跳出当前循环,循环结构控制语句continue 的作用是: 跳过当前循环,立即开始下一次循环的条件判断

4.在一个循环结构语句中又包含了一个循环结构语句称之为  循环的嵌套   。程序执行时,外层循环每执行一次,内层循环就要完整的执行完,直至内层循环执行结束,再开始执行下一次外层循环。

单元六 数组的使用 

1.数组是一组相同类型有序数据的集合。数组要先定义使用,可以在定义时初始化,每个数组元素相当于同类型的变量,使用数组名和下标来唯一确定数组中的元素。

2.一维数组定义的一般格式为: 类型标识符  数组名[整型常量表达式]; ,对于已定义好的一维数组C编译系统会分配连续的存储空间, 数组名 代表数组在内存中存放的首地址。一维数组的引用方法为:  数组名[下标]  ,其中下标从 0 开始。
3.二维数组定义的一般格式为:  类型标识符  数组名[整型常量表达式1] [整型常量表达式2]; ,对于已定义好的二维数组C编译系统会分配连续的存储空间,将二维数组元素按  行  依次存储。二维数组元素的访问涉及第一维和第二维两个下标,其引用方法为:  数组名[下标1][下标2]   。

4.字符数组是一组字符型数据的有序集合,其中每个数组元素的值都是字符。C语言用字符数组实现字符串变量,字符串以  ‘\0’  作为结束标志字符串的输入可以通过  gets()  、 scanf()  函数实现,字符串的输出可以通过 puts() 、 printf()  函数实现。常见的字符串操作库函数有:求字符串长度函数  strlen()  、字符串复制函数 strcpy()字符串连接函数  strcat() 、字符串比较函数  strcmp(),这些库函数的定义都在头文件 string.h  中。常见的字符库函数的定义都在头文件 ctype.h  中。

单元七 函数的使用

函数

函数是构成C程序的基本单位,函数的使用为模块化程序设计奠定了基础。从用户使用的角度,函数分为库函数自定义函数两种。

库函数 的使用包括 头文件包含 库函数调用两个环节。

用户自定义函数的使用包括函数声明,函数定义函数调用三个环节。

函数的构成

从函数的外观形式看,函数分为 有参函数无参函数 两种。

用户自定义函数的一般形式为:

函数返回值类型  函数名(形式参数列表)   //函数首部

{  函数体;

}

其中第一行称为 函数首部 ,大括号“{}”括起来的部分称为 函数体 ,对于有返回值的函数,函数体中要包括 return  语句。函数首部也称为函数原型,用函数原型声明函数时,形参名可以省略不写,而只写形参的类型,但形参的 类型 数量 必须与函数首部保持一致。

函数调用

1.函数要先声明,然后才能使用,函数声明在程序中的位置有以下几种情况:(1)函数声明写在主调函数的外部,这时的函数声明为全局声明。(2)函数声明写在主调函数的说明语句中,这时的函数声明为局部声明。(3)函数的定义出现在主调函数之前,则函数声明可以省略

2.函数的调用形式为:函数名(实际参数列表)。若调用无参函数,则实参为空;若调用有参函数,则在()内写出与形参类型、数量一致的实参。对于有参函数,函数调用过程中存在着参数传递的问题,参数传递有两种情况,其一为 值传递,其二为 地址传递

3.函数在函数体中出现了对自身调用的语句,就称为函数递归调用。使用递归方法解决问题的关键是如何找出 递归关系  ,以及找出递归调用的 终止条件

4.函数的存储类型有static和extern两种。 extern 型函数称为“外部函数”,可以被其他编译单位中的函数调用; static 型函数称为“内部函数”,只能被本编译单位的函数调用。

变量

1.程序中变量的使用范围称为变量的作用域,每个变量都有自己的作用域。按照作用域的范围可分为两种:  局部变量  和 全局变量
2.变量的存储方式可分为“动态存储”和“静态存储”两种。动态存储变量包括
  auto   和  regiest  两种类型静态存储变量包括 static 和 extern 两种类型。静态存储变量若没有初始化,则默认初始值为  0    。static类型变量的值具有继承性,即本次调用的初值是上次调用结束时变量的值

单元八 指针的使用

1)内存地址被称为指针。C语言允许用一个变量来存放指针,这种变量称为指针变量,而指针变量的值就是某个内存单元的地址

2)定义指针变量的一般格式为:  类型标识符  *指针变量名         ,其中:
    (1)“指针变量名”前面的“*”,表示该变量是指针变量,不能省略。
    (2)“类型标识符”表示该指针变量所指向的变量的数据类型。
    (3)当一个指针变量已确定指向某类型的变量时,不能再指向另一种类型的变量。

3)指针变量被赋值后即可引用,引用指针变量的一般方法为:  *指针变量名    。

4)若有语句段: int a[10]; int *p; p=a;,则对于数组元素的访问方式有 a[i]、 *(p+i) 、 p[i]  ,对数组元素地址的表示方式有 a+i 、 p+i 、 &a[i] 。

5)数组名代表数组的首地址,利用函数处理一维数组数据时,函数之间的参数传递为 数组首地址  。将数组的首地址作为实参传递给函数的形参以后,实参数组和形参数组其实是同一段内存中的数据

单元九 结构体类型的使用

结构体类型说明的关键字为  struct  。结构体类型变量所占用内存字节数为结构体变量所包含的各个成员变量所占字节数之和   

若定义了一个结构变量和一个指向结构变量的指针,则可以用以下三种形式访问结构成员:
    (1)利用结构变量与成员运算符相结合,基本格式为:  结构变量.成员名    。banji.cc
    (2)利用结构指针与成员运算符相结合,基本格式为:  (*结构指针).成员名   。(*p).cc
    (3)利用结构指针与指向运算符相结合,基本格式为:  结构指针->成员名   。p->cc


http://www.ppmy.cn/news/1555436.html

相关文章

04面向对象篇(D5_Thinking(D1_Thinking - 思考))

目录 一、为什么要谈论OOA、OOD、OOP&#xff1f; 二、你知道OOA、OOD、OOD对软件工程师的重要性&#xff1f; 三、DDD、OOA、OOD、OOP和OOT到底有什么区别和联系&#xff1f; 一、为什么要谈论OOA、OOD、OOP&#xff1f; OOA&#xff08;面向对象分析&#xff09;、OOD&am…

如何在RTTHREAD 的master上获得干净的vscode-clangd体验

在用clangd开发RTT吗&#xff0c;快来试试如何简单获得清晰干净的工作区 文章目录 在用clangd开发RTT吗&#xff0c;快来试试如何简单获得清晰干净的工作区简介操作步骤第一步 安装clangd第二步 生成compile_compand.json 文件第三步 执行scons --targetvsc第四步 打开stm32f10…

【Linux-ubuntu通过USB传输程序点亮LED灯】

Linux-ubuntu通过USB传输程序点亮LED灯 一,初始化GPIO配置1.使能时钟2.其他寄存器配置 二&#xff0c;程序编译三&#xff0c;USB传输程序 一,初始化GPIO配置 1.使能时钟 使能就是一个控制信号&#xff0c;用于决定时钟信号是否能够有效的传递或者被使用&#xff0c;就像一个…

EXCEL 数据透视表基础操作

目录 1 选择数据&#xff0c;插入数据透视表 2 选择数据透视表生成位置 3 出现了数据透视表的面板 4 数据透视表的基本结构认识 4.1 交叉表/列联表 4.2 row, column, cell 一个新增的筛选器&#xff0c;就这么简单 4.3 可以只添加 rowcell/值 &#xff0c;也可以colu…

Github----提交人不是自己

账号用户名都设置对的,但是提交人不是自己 解决 发现是用户名和账号都夹了"号导致 git config --global user.name "Your Name" git config --global user.email "your.emailexample.com"不用引号 git config --global user.name Your Name git …

Ajax编程的五个步骤

Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一种在无需重新加载整个页面的情况下与服务器交换数据并更新部分网页的技术。使用Ajax进行编程通常包括以下五个步骤&#xff1a; 1. **创建 XMLHttpRequest 对象**&#xff1a; - 这是进行Ajax请求的基础。…

基于回溯法解决八皇后问题+以位运算方法优化n皇后问题(算法与数据结构期末设计)

文章目录 基于回溯法解决八皇后问题以位运算方法优化n皇后问题1. 八皇后问题问题描述2.回溯法求八皇后&#xff08;n皇后&#xff09;问题①由四皇后问题引入②皇后的占位问题③皇后的放置过程④放置过程中的问题⑤回溯算法核心⑥回溯算法的求解过程⑦验证算法和代码实现LeetCo…

AI开源南京分享会回顾录

AI 开源南京分享会&#xff0c;已于2024年11月30日下午在国浩律师&#xff08;南京&#xff09;事务所5楼会议厅成功举办。此次活动由 KCC南京、PowerData、RISC-Verse 联合主办&#xff0c;国浩律师&#xff08;南京&#xff09;事务所协办。 活动以“开源视角的 AI 对话”为主…