黑色加粗表示刷题刷到这样的题 红色加粗表示可能重要
目录
单元一 程序设计宏观认识
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