第一章 C 语言基础
q 算法就是解决问题的具体方法与步骤
q 流程图是算法的一种图形化表示方式
q 程序是为让计算机完成某项任务而编写的逐条执行的指令序列
q C语言的特点包括:结构化的程序设计语言、语句简洁、功能强大、移植性好
q C程序的基本结构包括:预处理语句、main函数,main函数中的内容使用{ }括起来,每条语句必须用分号结束
q C程序编写完成后,首先需要通过编译转换成目标文件,然后通过连接创建可执行程序,最后才可以执行该程序
q 可以使用Visual C++ 6.0 IDE编辑和运行C程序
第二章 变量和数据类型
q 常量是在程序中不能被更改的值;而变量在程序中可被更改的,通过变量可以引用存储在内存中的数据
q C语言中的基本数据类型包括整型、单精度浮点型、双精度浮点型和字符型
q 整型分为短整型、整型、长整型,每种整型又可分为有符号型和无符号型
q 单精度浮点型和双精度浮点型变量可以存储实数,但双精度型取值范围要比单精度型大的多
q 字符型变量可以存储单个字符,其值是该字符的ASCII 码
q 算术运算符提供运算功能,包括+、-、*、/、%、++和--
q printf() 和 scanf() 函数属于格式输入输出函数
q getchar() 和 putchar() 函数用来输入输出单个字符的函数
第三章 运算符
q 表达式是操作数和运算符的集合
q 赋值运算符的语法如下:variable = expression
q 关系运算符运用测试两个操作数之间的关系
q 关系表达式计算出的值始终为逻辑真(非0)或逻辑假(0)
q 条件结构解决了程序种需要根据不同情况进行判断的情况
q 条件语句中需要提供判断条件,该条件要求返回逻辑值(真或假)
q 逻辑运算符用于组合多个条件(&& 和 ||)或者为某一条件取反(!)
q sizeof运算符用于在程序中测试某一数据类型占用多少字节
q 在复杂表达式中,通过运算符的优先级确定各种运算符的执行顺序
第四章 条件结构
q 多重if结构就是在主if块的else部分中还包含其他if块
q 嵌套if结构是在主if块中还包含另一个if 语句
q C语言规定,嵌套if结构中每个else部分总是属于前面最近的那个缺少对应的else部分的if语句
q switch结构也可以用于多分支选择。用于分支条件是整型表达式,而且判断该整型表达式的值是否等于某些值(可以罗列的),然后根据不同的情况,执行不同的操作
q 条件运算符是 if–else 语句的另一种表现形式
第五章 循环结构 - I
q 循环结构的特点是,在给定条件成立时,重复执行某程序段,直到条件不成立为止
q while 循环用于在给定条件为真的情况下重复执行一组操作,while循环先判断后执行
q do-while循环先执行后判断,因此循环将至少执行一次
q 在循环中,需要修改循环变量的值以改变循环条件,否则有可能形成死循环
q 循环嵌套必须将内层循环完整的包含在外层循环中
第六章 循环结构 – II
q for 循环与 while 循环类似,属于先判断后执行
q for 语句中有三个表达式:表达式1通常用来给循环变量赋初值;表达式2通常是循环条件;表达式3用来更新循环变量的值
q for 语句中的各个表达式都可以省略,但要注意分号分隔符不能省略
q 如果省略表达式2和表达式3需要在循环体内设法结束循环,否则会导致死循环
q break 语句用在循环中时,可以直接终止循环,将控制转向循环后面的语句
q continue 语句的作用是跳过循环体中剩余的语句而执行下一次循环
q 嵌套循环时,必须将被嵌套的循环语句完整地包含在外层循环的循环体内
第七章 数组
q 数组是可以在内存中连续存储多个元素的结构数组中的所有元素必须属于相同的数据类型
q 数组必须先声明,然后才能使用。声明一个数组只是为该数组留出内存空间,并不会为其赋任何值
q 数组的元素通过数组下标访问
q 一维数组可用一个循环动态初始化,而二维数组可用嵌套循环动态初始化
q 二维数组可以看作是由一维数组的嵌套而构成的
第八章 指 针
q 指针是一个变量,它存储另一个对象的内存地址
q 指针的声明由基本类型、星号 (*) 和变量名组成
q 为指针赋值,赋值运算符右侧必须是一个地址。如果是普通变量需要在前面加一个取地址运算符 &;如果是另一个指针变量或者是一个数组,不需要加 &运算符
q 运算符 * 用于返回指针指向的内存地址中存储的值
q 指针的算术运算的含义是指针的移动,将指针执行加上或者减去一个整数值n的运算相当于指针向前或向后移动n个数据单元
q 指针可以执行比较相等的运算,用来判断两个指针是否指向同一个变量
q 指向数组的指针,存储的是数组中元素的地址。数组data的第 (i + 1) 个元素的地址可表示为 &data[i] 或 (data+i)
第九章 函数
q 函数是程序中的一个相对独立的单元或模块,程序在需要时可以任意多次地调用函数来完成特定功能
q 使用函数带来的好处: 程序更清晰、易维护、分模块方便设计与开发、提高代码的重用性
q C语言提供了极为丰富的内置函数,这些内置函数分门别类地放在不同的头文件中,要使用这些内置函数,只要在程序前包含相应的头文件即可
q 自定义函数是用户在程序中根据需要而编写的函数
q 函数的结构包括:返回值类型、函数名、参数列表、函数体
q 函数原型说明以便向编译器指出该函数使用什么样的格式和语法
q 函数调用时程序控制流将转向被调函数,被调函数执行结束时,控制流返回主调函数
q return 语句用于向调用函数返回值
内置函数 | 头文件 | 用途 |
double sqrt(double x) | math.h | 计算x的平方根 |
double pow(double x, double y) | 计算x的y次幂 | |
double ceil(double x) | 求不小于x的最小整数,并以double形式显示 | |
double floor(double x) | 求不大于x的最大整数,并以double形式显示 | |
int toupper(int x) | ctype.h | 如果x为小写字母,则返回对应的大写字母 |
int tolower(int x) | 如果x为大写字母,则返回对应的小写字母 | |
int rand(void) | stdlib.h | 产生一个随机数 |
void exit(int retval) | 终止程序 |
第十章 带参数的函数
q 根据变量的作用域可以将变量划分为:局部变量和全局变量
q 根据变量的存储类型(决定生存期)将变量划分为: 自动变量、寄存器变量、静态变量、外部变量
q 静态局部变量的生存期为整个源程序,但其作用域为定义该变量的函数
q 静态全局变量的生存期为整个源程序,其作用域为定义该变量的源文件
q 采用传值调用方式时,在被调用函数中改变形参的值,只改变其副本值,而不会影响调用函数中实参值
q 采用引用调用方式时,传递的是变量地址值,这样在被调函数中,对形参操作实际上操作的是实参本身
q 数组作为函数传递时,实际采用引用调用方式
第十一章 字符串
q 字符串与字符数组的区别是字符串的末尾有一个空字符'/0'以标识字符串结束
q 用scanf()语句读入字符串时不允许输入中存在空格
q gets() 和 puts() 函数分别用于字符串的输入和输出
q 在 string.h 中定义了很多字符串处理函数函数,比较常用的有:strcpy()、strcat()、strcmp() 和 strlen()
q 假如程序里需要一组字符串,一种常用的做法就是用一个字符指针数组表示它们
q 字符串可以作为参数,函数传递机制同数组作为参数,为引用方式
第十二章 结构
q 结构是由若干数据项组合而成的复杂数据对象,这些数据项称为结构的成员。
q 定义一个结构,需要给出各个成员的类型及名称。
q 结构定义仅描述了一个结构的形式。要在程序里使用结构,需要声明结构变量。
q 访问结构成员的操作要用圆点运算符(.),一般形式为:结构变量名.成员名。
q 可以通过指向结构的指针访问结构成员,常用形式为:结构指针变量->成员名。
q 数组元素的类型为结构的数组称为结构数组。
q 结构作为函数参数有三种不同的方式:结构成员的值传递给函数参数、整个结构作为参数传递、结构指针变量做函数的参数。