13013-高级语言程序设计
江苏省高等教育自学考试【13013-高级语言程序设计】学习笔记
| 课程代号 | 课程名称 | 教材代号 | 教材名称 | 作者 | 出版社 | 版次 |
|---|---|---|---|---|---|---|
| 13013 | 高级语言程序设计 | 130131 | 高级语言程序设计(附大纲) | 郑岩 | 机械工业出版社 | 2017 年 |
计算机语言
了解计算机语言的发展
1946年世界上第一台电子计算机诞生了。
Intel 公司的创始人之一 Gordon Moore 于 1965 年提出著名的摩尔定律。
冯·诺伊曼体系结构
冯·诺伊曼体系结构的特点可以概括如下:
- 指令和数据采用二进制表示。
- 指令和数据存储在存储器中。
- 计算机由输入设备、输出设备、存储器、运算部件和控制部件五大部分组成。
电子计算机四个发展时代
第一代:20世纪50年代,主要采用真空电子管制造计算机。
第二代:20世纪50年代末期,出现了以晶体管为主要元件的第二代计算机。
第三代计算机的特点是采用集成电路技术,在一片硅晶片上集成数目众多的晶体管。
第四代:随着大规模集成电路和微处理器的出现,计算机进入第四代。所谓微处理器就是一片集成电路芯片,计算机的控制和运算功能都在这一芯片上实现。
了解高级语言的概念和特点
机器语言
机器语言是用二进制代码表示的能被计算机识别和执行的指令集合。
汇编语言
为了克服机器语言的不足,人们利用助记符代替机器语言,因此产生了汇编语言。
汇编语言的特点:汇编语言在一定程度上克服了机器语言难以编写和阅读的缺点,同时具有占用存储空间较少,执行效率高的优点。
机器语言和汇编语言都是面向机器的语言,也称为“低级语言“。
高级语言
高级语言描述算法很方便,而且不依赖于具体的机型,能够不需修改而在任何计算机上运行,具有良好的可移植性、便于编程,但是执行效率低。
使用高级语言编写的程序称为“源程序”,源程序无法在计算机上直接运行,必须将其翻译为二进制程序后才能执行。翻译程序通常有两种工作方式,即编译方式和解释方式。编译方式是将源程序全部翻译为二进制程序后再执行,在此完成翻译工作的程序称为“编译程序”,编译后的二进制程序称为“目标程序”;
世界上第一个高级语言是FORTRAN,后来陆续出现很多种高级语言,目前广泛应用的高级语言有 C/C++、Java 和 C#等。
编译程序将高级语言编写的程序转换为目标程序。
程序和程序设计方法
了解程序的概念
算法
计算机可以解决多种信息处理的问题,但人们必须事先用计算机能够理解的语言(即程序设计语言)详细描述解决问题的步骤,即首先进行程序设计。
算法设计是使用计算机解决问题的过程中一个极为重要的环节。
解决问题的步骤序列就是算法。
为了获得易读、易懂、易修改和扩充的算法,人们经过长期的实践认为必须采取以下三种措施:
- 利用自顶向下的方法设计算法。
- 只利用顺序、选择和循环三种基本结构构造算法。
- 具有优美的算法表达风格。
算法描述方法
描述算法可以使用多种方法。常用的算法描述方法是自然语言、传统流程图、N-S流程图、伪代码和计算机语言等。
自然语言
自然语言是人们日常使用的语言,可以是汉语、英语或其他语言。
N-S流程图
已经证明使用以下三种基本结构能够表示一个良好算法。
- 顺序结构,顺序结构是最简单的一种基本结构。
- 选择结构,又称分支结构
- 循环结构,又称重复结构,即反复执行某一部分的操作,可细分为两种:当型循环和直到型循环。
N-S流程图如同一个多层的盒子,因此又称为盒图。
伪代码
伪代码是用介于自然语言和计算机语言之间的文字和符号描述算法。
程序
所谓程序是利用计算机语言将所要解决问题中的数据以及处理问题的方法和步骤进行完整而准确地描述,这一描述的过程称为“程序设计”。
计算机程序(Program,简称程序)是指根据算法描述,用计算机语言表示的能被计算机识别和执行的指令集合。
了解程序设计的方法
用三种基本结构组成的程序必然是结构化的程序,这种程序便于编写、阅读、修改和维护。
随着计算机技术的发展,开始出现了专门用于指导和规范程序设计的思想和方法,最主要的程序设计方法有两种,即结构化程序设计方法和面向对象程序设计方法。
结构化程序设计方法
结构化程序设计又称为面向过程的程序设计,是由荷兰计算机科学家E.WDijkstra于1965年提出。模块化是结构化程序设计方法的核心思想,即将待开发的程序划分为若干个相互独立的模块,每个模块完成特定的功能,这样就可以使程序员完成每个模块的工作变得单纯和明确,适合于设计大规模的复杂程序。
程序员在接到程序设计的任务后,将需要解决的问题先进行整体规划,形成一个笼统和抽象的方案框架,称之为“顶层设计”。
面向对象程序设计方法
1967年,挪威计算中心的 Kristen Nygaard 和 Ole Johan Dahl开发了Simula 67语言,被认为是第一个面向对象的语言。
面向对象的核心思想是将程序或者软件看成是一个由对象组成的集合。
C语言基本词法
C语言发展和特点(非考核要求)
C语言发展
C语言源于 ALGOL 60 语言,于20世纪60年代初提出。
1983年,美国国家标准化协会(American National Standards Institute,ANSI)根据C语言问世以来的各种版本,对C语言发展和扩充制定了第一个C语言标准草案,称为83 ANSIC。
C语言特点
C语言的主要特点可以概括如下:
- 结构化语言。C语言具有良好的结构化的控制语句、顺序结构的语句、选择结构的语句和循环结构的语句,C语言的函数是程序的基本模块,便于实现程序的模块化。
- 运算能力强大。
- 数据类型丰富。C 语言提供了编程所需的各种数据类型,主要包括整型、实型、字符型、数组型、结构体类型、指针型和空类型等。
- 具有预处理能力。
- 可移植性好。
- 程序执行效率高。C语言的编译系统采用了优化策略,由源程序生成目标代码的效率一般仅比汇编语言低10%~20%,C程序的执行效率高。
- 程序设计自由度大
由于C语言允许直接对计算机硬件进行操作,既具有高级语言的功能,又具有低级语言的功能,所以也被称为“中级语言”,可用来编写系统软件。
了解C语言的字符集
字符是组成语言最基本的元素。C语言中允许出现的所有字符的集合称为C语言的字符集,由字母、数字、空格、标点和特殊字符组成。C语言的字符集就是ASCI字符集
ASCI 字符集中有一些字符是可以显示在显示器上的,称为可显示字符,例如字母和数字符号都是可显示字符。
所有非字母、非数字的可显示字符如表所示。
| 符号 | 说明 | 符号 | 说明 | 符号 | 说明 |
|---|---|---|---|---|---|
~ |
波浪号 | ) |
右圆括号 | : |
冒号 |
` |
重音号 | _ |
下划线 | ; |
分号 |
! |
惊叹号 | + |
加号 | ' |
单引号 |
@ |
圈号 | - |
减号 | < |
小于号 |
# |
井号 | = |
等号 | > |
大于号 |
$ |
美元号 | | |
或符号 | , |
逗号 |
% |
百分号 | \ |
反斜杠 | . |
小数点 |
^ |
异或号 | { |
左花括号 | ? |
问号 |
& |
与符号 | } |
右花括号 | / |
正斜杠 |
* |
星号 | [ |
左方括号 | 空格符号 | |
( |
左圆括号 | ] |
右方括号 |
掌握C语言的转义字符
转义字符:ASCII 字符集中还有一些字符不能显示在显示器上,称为不可显示字符,例如回车换行符、制表符。转义字符是由反斜杠\后面跟单个字符或若干个字符组成。
了解C语言的标识符构成规则
C语言规定,用户标识符仅由大小写英文字母、数字和下画线组成,且第一个字符不能是数字。
| 正确示例 | 错误示例 |
|---|---|
P1 |
1a(以数字开头) |
m |
x-2(含有非字母、数字、下画线的字符 -) |
x1 |
y*z(含有非字母、数字、下画线的字符 *) |
x_1 |
z?(含有非字母、数字、下画线的字符 ?) |
_x1 |
-3x(以减号开头) |
_x_1 |
了解C语言的关键字及其含义
C 语言中具有特殊含义的单词称为关键字,又称保留字,主要用于构成语句。关键字是由系统预先定义的,不能用于其他目的。
C 语言共有 32 个关键字,所有的关键字均由小写字母组成。
| 关键字 | 含义 | 关键字 | 含义 | 关键字 | 含义 |
|---|---|---|---|---|---|
auto |
自动 | extern |
外部 | sizeof |
计算字节数 |
break |
终止 | float |
浮点 | static |
静态 |
case |
情况 | for |
对于 | struct |
结构 |
char |
字符 | goto |
转向 | switch |
开关 |
continue |
继续 | int |
整 | typedef |
类型定义 |
const |
常量 | if |
如果 | union |
共用 |
default |
默认 | long |
长 | unsigned |
无符号 |
do |
做 | register |
寄存器 | void |
空 |
double |
双 | return |
返回 | volatile |
可变的 |
else |
否则 | short |
短 | while |
当 |
enum |
枚举 | signed |
有符号 |
C语言的分隔符包括逗号和空格两种。
C语言基本语句分类
了解C语言的语句分类、了解C语言各类语句的基本功能
C语言的每个语句都以分号;结束。
- 数据定义语句。用于定义C程序中使用的各种能存放数据的对象的名称和属性。
- 赋值语句。形如
变量=表达式;的语句,其功能是计算表达式的值并赋予变量。 - 函数调用语句
- 表达式语句
- 流程控制语句
- 选择控制语句:if语句和switch 语句。
- 循环控制语句:while 语句、do-while 语句和for 语句。
- 转移语句:goto语句、break语句、continue 语句和return 语句。
- 复合语句。把多个语句用一对花括号{}括起来组成的一个语句称为复合语句。
- 空语句
C程序基本组成
理解C程序的基本组成
C程序是由语句组成的,通常包括一个或多个函数,其中有且只有一个函数称为主函数,其函数名为main。
C程序的组成特点如下:
- 每个C程序由一个或多个函数组成。每个C程序有且仅有一个主函数,除主函数外,可以没有其他函数,也可以有一个或多个其他函数。
- 函数是C程序的基本单位,每个函数(包括主函数)是由函数首部和函数体两部分组成。其中,函数名后面的一对圆括号()中写出函数要用到的形式参数,当没有形式参数时写void;一对花括号{}是函数体的界定符,其中的内容称为函数体。
函数首部 返回值类型 函数名(类型 形式参数名, ...)
函数体 {
数据定义部分
实现函数功能的语句序列
} - C语言本身没有输入/输出语句,而是通过调用库函数scanf()、printf()、getchar()和putchar()实现的。
- C程序的执行总是从主函数开始,并在主函数结束。
- C程序中可以有预处理命令(例如include命令),通常预处理命令应放在程序的最前面。
了解书写C程序的基本规则
C程序开发环境
编辑:进入C语言编译系统,建立源程序文件,扩展名为c或cpp编辑并修改、保存源程序。
编译程序将源程序转换为二进制形式的目标程序,其扩展名为obj。
链接:经过编译生成的目标程序还无法在计算机上直接运行,因为源程序中输入输出以及常用的函数运算是直接调用函数库中的库函数,因此必须把库函数的处理过程链接到经编译生成的目标程序中,生成可执行文件,其扩展名为exe。
“Step Over”和“Step Into”都是单步调试程序,二者的区别在于遇到函数调用时,Step Into进入函数内部逐步执行,而Step Over并不进入函数内部执行。
掌握VC启动和退出的操作方法
掌握VC环境下创建、编辑修改和保存C源程序的操作方法
掌握VC环境下编译、链接和生成可执行程序的操作方法
掌握VC环境下运行可执行程序和查看运行结果的操作方法
数据类型的概念及其分类
了解数据类型的概念、了解C语言中数据类型的分类
数据既是程序加工和处理的对象,也是程序加工和处理的结果。
基本类型包括整型、实型(又称浮点型)、字符型和枚举型四种。
构造类型是由基本数据类型按一定规则组合而成的复杂数据类型,包括数组型、结构体类型和共用体类型,数组型是由相同类型的数据组合而成的,结构体类型是由不同类型的数据组合而成的。
空类型是从语法完整性角度给出的数据类型,表示不需要数据值,因而没有类型。
| 数据类型 | 基本类型 | 整型 | 有符号整型 | 有符号基本整型(简称整型) |
| 有符号短整型(简称短整型) | ||||
| 有符号长整型(简称长整型) | ||||
| 无符号整型 | 无符号基本整型 | |||
| 无符号短整型 | ||||
| 无符号长整型 | ||||
| 实型(浮点型) | 单精度实型 | |||
| 双精度实型 | ||||
| 字符型 | ||||
| 枚举型 | ||||
| 构造类型 | 数组型 | |||
| 结构体类型 | ||||
| 共用体类型 | ||||
| 指针类型 | ||||
| 空类型 | ||||
整型、实型、字符型、字符串常量的书写方法
常量又称为常数,是在程序运行过程中其值不能改变的数据。例如-128、0和12345等均为常量。
常量可以有不同的类型,C语言规定常量包括整型常量、实型常量、字符型常量、字符串常量和符号常量。
掌握长、短整型常量的书写方法。
整型常量通常称为整数,不带有小数部分,包括正整数、负整数和0。
C语言中,整型常量有三种书写形式,即:
- 八进制整型常量,必须以0开头,即以0作为八进制整数的前缀,是由数字0~7组成的数字串。例如0123和0400,它们分别表示十进制的整数83和256。
- 十进制整型常量,即通常的整数,没有前缀,是由数字0~9组成的数字串,是C语言中用得最多的一种形式。例如12和30等。
- 十六进制整型常量,必须以0X或0x开头,即以0X或0x作为十六进制整数的前缀,是由字符 0~9、a~f或 A~F组成的字符串。例如 0X123和-0xld,它们分别表示十进制的整数 291和-29。
长整型常量一般占用内存的4字节。
掌握单精度和双精度实型常量的书写方法。
实型常量又称为浮点型常量或实数,实型常量只使用十进制。C 语言的实型常量有两种书写形式
- 十进制小数形式,由整数部分、小数点和小数部分组成,其中小数点必须有,整数部分和小数部分可以省略其中一个,正、负通过前面的“+ ”(可以省略)和“-”区分。例如0.123、123.和-.123均为合法的十进制小数形式的实型常量。
- 指数形式(用 E 或 e 表示),指数形式由尾数部分、阶码标志(小写字母
e或大写字母E)和指数部分组成,其一般形式为aEb或aeb,其中尾数部分a的位数决定了数值的精度,指数部分b的位数决定了可表示的数值范围。a和b均有正负之分,且b必须为整数,其表示的数值为:。例如,3.45e-2、.52378e4、-628E-3均为合法的指数形式的实型常量,它们对应的数值分别是0.0345、5237.8、-0.628。
实型常量在PC中占用4 字节,无论是十进制小数形式还是指数形式,有效数字是7位。
掌握字符型常量的书写方法。
字符常量包括普通字符常量和转义字符常量两种。
普通字符常量是用一对单引号括起来的单个字符,例如 'a'、'?' 均为普通字符常量。此外,C 语言还允许使用一种特殊形式的字符常量,即以反斜杠 \ 开头的转义字符,它只代表某一特定的 ASCII 码字符。
| 转义字符 | 含义 | 转义字符 | 含义 |
|---|---|---|---|
\n |
回车换行 | \t |
横向跳到下一个制表位置 |
\v |
垂直制表 | \b |
左退一格 |
\r |
回车 | \f |
换页 |
\0 |
空字符 | \\ |
反斜杠 |
\' |
单引号 | \" |
双引号 |
\ddd |
1~3 位八进制数所代表的字符,例如 \103 代表字符 'C' |
\xhh 或 \Xhh |
1~2 位十六进制数所代表的字符,例如 \x46 代表字符 'F' |
需要注意的是,C 语言中空字符和空格符号不同。空字符用转义字符 \0 表示,其值是 0;空格符号是 ASCII 字符集中的一个可显示字符,其 ASCII 值是 32,在屏幕上显示为空格。
掌握字符串常量的书写方法。
字符串常量又称为“字符串”,是用双引号括起来的零个或多个字符的序列。字符串中字符的个数称为字符串长度。若字符串长度为 0(即一个字符都没有的字符串)称为空串,表示为 ""(一对紧邻的双引号)。例如 "How do you do."、"Good morning" 等都是字符串常量,其长度分别为 14 和 12(空格也是一个字符)。
如果反斜杠和双引号作为字符串中的有效字符,则必须使用转义字符,其中每个转义字符只作为一个字符,例如 "\\How do you do.\\" 和 "\101\x44" 的长度分别是 16 和 2,分别表示 \How do you do.\ 和 AD 两个字符串。需要注意的是,双引号是作为字符串的标志,所以在字符串中使用双引号时必须用转义字符 \",例如 5 个字符组成的字符串 xyz" 应写成 \"xyz\"。
编译时自动在字符串的末尾处加一个转义字符 \0 作为字符串的结束标志,即长度为 n 个字符的字符串占用 n+1 字节。需要注意的是在 C 程序中书写字符串常量时,不必加结束标志字符 \0。
C 语言规定字符串中的字母是区分大小写的,所以 "a" 和 "A" 是不同的字符串。
例如,字符串 "China" 在内存中的实际存储如下:
| C | h | i | n | a | \0 |
|---|
最后一个字符 \0 是系统自动加的,该字符串占用内存 6 字节而非 5 字节。
字符常量与字符串常量是不同的,其区别在于:
- 定界符不同,字符常量使用单引号,而字符串常量使用双引号。
- 长度不同,字符常量的长度固定为 1;而字符串常量的长度,可以是 0,也可以是某个整数。
- 存储要求不同,字符常量存储的是字符的 ASCII 码值,在内存中只占用 1 字节;而字符串常量,除了要存储有效的字符外,还要存储一个字符串结束标志
\0。
符号常量的使用
掌握符号常量的定义方法。能够在程序中正确使用符号常量。
其定义的一般格式如下:
常量可以是任意类型。#define是一个编译预处理命令,称为宏定义命令。符号常量一般采用大写字母表示,而变量一般采用小写字母表示。符号常量的定义一般放在程序的开头,每个定义必须独占一行,因为不是语句,所以后面没有分号;。C 编译程序在编译之前将所有的符号常量自动替换为相应的常量。
整型、实型、字符型变量的定义和初始化方法
变量是在程序运行过程中,其值可以改变的数据。变量具有三种属性:变量名、变量值、变量类型。
掌握整型(整型、短整型、长整型、无符号基本整型、无符号短整型、无符号长整型)变量的定义和初始化方法。
根据占用内存字节数的不同,整型变量分为四种:
- 基本整型,
int - 短整型,
short[int] - 长整型,
long[int] - 无符号整形,又分为无符号基本整型
unsigned [int]、无符号短整形unigned short、无符号长整型unsigned long
在 16 位编译器中,一般一个 int 型变量占用 2字节,且 long 型(4 字节)≥ int 型(2 字节)≥ short 型(2 字节);而在 32 位编译器中,一个 int 型变量占用 4 字节,long 型变量占用 4 字节,short 型变量占用 2 字节。可以用 sizeof(类型标识符) 测量某一类型所占用的内存字节数。
掌握实型(单精度实型、双精度实型)变量的定义和初始化方法。
实型变量分为两种:
- 单精度实型,
float,占用内存4字节,保留6 ~ 7 位有效数字。 - 双精度实型,
double,占用内存8字节,保留15 ~ 16位有效数字。
float a; |
掌握字符型变量的定义和初始化方法。
字符型变量,char ,存放的是字符的ASCII码值(无符号整数),占用内存1字节。
需要注意的是,字符串只能是常量,C 语言中没有字符串变量,而是用字符数组存放字符串变量。
| 数据类型 | 数据类型符 | 占用字节数/字节 | 数值范围 |
|---|---|---|---|
| 基本整型 | int |
2(或 4) | 同短整型(或长整型) |
| 短整型 | short [int] |
2 | |
| 长整型 | long [int] |
4 | |
| 无符号基本整型 | unsigned [int] |
2(或 4) | 同无符号短整型(或无符号长整型) |
| 无符号短整型 | unsigned short |
2 | |
| 无符号长整型 | unsigned long |
4 | |
| 单精度实型 | float |
4 | |
| 双精度实型 | double |
8 | |
| 字符型 | char |
1 |
// 定义有符号整型变量 |
有名常量的定义和初始化方法
了解有名常量的特点。掌握有名常量的定义和初始化方法。
C 语言中,如果定义了变量并赋予其初值,但不希望在程序中对其值进行修改,则可以将该变量定义为有名常量。有名常量定义语句的一般格式如下:
const 数据类型符 变量名=初值1[,变量名2=初值2,...]; |
有名常量的值是通过赋初值的方式获得,不能通过赋值的方式获得,而且赋予初值后,在程序中将不再改变其值。有名常量主要用于程序运行过程中,其值不允许改变的量。有名常量定义后,若在程序中改变其值,将会出错。
基本类型数据在内存的存放方式
了解整型(整型、短整型、长整型、无符号基本整型、无符号短整型、无符号长整型)数据在内存的存放方式。
了解实型数据在内存的存放方式。
了解字符型数据在内存的存放方式。
了解字符串常量在内存的存放方式。
基本运算符的运算规则、优先级和结合性
| 运算符 | 运算符分类 | |
|---|---|---|
| 基本运算符 | 算术运算符 | +(加)、-(减)、*、/、%、+(取正)、-(取负) |
| 自增、自减运算符 | ++、-- | |
| 关系运算符 | >、>=、<、<=、==、!= | |
| 位运算符 | 位逻辑运算符~、&、|、^ 位移位运算符<<、>> |
|
| 逻辑运算符 | &&、||、! | |
| 赋值运算符 | 基本赋值运算符 = 复合赋值运算符 +=、-=、*=、/=、%=、&=、|=、^=、>>=、<<= |
|
| 条件运算符 | ? : | |
| 逗号运算符 | , | |
| 数据长度运算符 | sizeof | |
| 专用运算符 | 强制类型转换运算符 | ( ) |
| 成员运算符 | ->、. | |
| 下标运算符 | [ ] | |
| 指针运算符 | &、* |
C语言的运算符必须有运算对象。按照参与运算的运算对象的数目,运算符可分为单目运算符、双目运算符和三目运算符。 若单目运算符位于运算对象的前面,则称为前缀单目运算符;若单目运算符位于运算对象的后面,则称为后缀单目运算符。 双目运算符均位于两个运算对象的中间。 三目运算符在C 语言中只有一个,即条件运算符,组成该运算符的两个符号夹在三个运算对象之间。
当表达式中出现多个运算符,计算表达式的值会遇到先算哪个,后算哪个的问题,即运算符的优先级问题。表达式值的计算原则是先进行优先级高的运算。括号的优先级高于任何运算符。若括号中嵌套了括号,则内层括号优先于外层括号。
运算符还具有结合性。所谓结合性是指当一个运算对象两侧的运算符具有相同优先级时,该运算对象是先与左边的运算符结合,还是先与右边的运算符结合。从左至右的结合方向称为左结合;反之,从右至左的结合方向称为右结合。结合性是C 语言的独有概念。除单目运算符、赋值运算符和条件运算符是右结合之外,其他的运算符都是左结合。
| 优先级 | 运算符 | 结合性 |
|---|---|---|
| 1 | () 、 [] 、 -> 、 . | 从左至右 |
| 2 | ! 、 ~ 、 ++ 、 -- 、 *(取内容) 、 &(取地址) 、 +(取正) 、 -(取负) 、 sizeof | 从右至左 |
| 3 | *(乘) / % | 从左至右 |
| 4 | +(加) 、 -(减) | |
| 5 | << 、 >> | |
| 6 | < <= 、 > >= | |
| 7 | == != | |
| 8 | &(位逻辑与) | |
| 9 | ^ | |
| 10 | | | |
| 11 | && | |
| 12 | || | |
| 13 | ?: | 从右至左 |
| 14 | = 、 += 、 -= 、 *= 、 /= 、 %= 、 &= 、 ^= 、 |= 、 >>= 、 <<= | |
| 15 | , | 从左至右 |
掌握算术运算符的运算对象、运算规则、优先级和结合性。
C 语言的算术运算符包括 +、-、*、/、%、+(取正)和 -(取负)。
| 名称 | 运算符 | 运算对象个数 | 功能 | 运算对象类型 | 结果类型 | 结合性 |
|---|---|---|---|---|---|---|
| 正 | + | 单目前缀 | 取正 | 整型或实型 | 整型或实型 | 从右至左 |
| 负 | - | 取负 | ||||
| 加 | + | 双目中缀 | 加法 | 从左至右 | ||
| 减 | - | 减法 | ||||
| 乘 | * | 乘法 | ||||
| 除 | / | 除法 | ||||
| 模 | % | 整除取余 | 整型 | 整型 |
- 单目运算符
+、-的优先级相同,结合性是从右至左。 - 双目运算符
*、/、%的优先级相同,结合性是从左至右。 - 双目运算符
+、-的优先级相同,结合性是从左至右。 - 单目算术运算符优先于双目算术运算符。
*、/、%优先于+、-。
算术运算符的优先级从高至低分别如下:
- 单目运算符:
+(取正)、-(取负)
高 ↓ - 双目运算符:
*、/、%
中 ↓ - 双目运算符:
+(加)、-(减)
低
- 除法运算的结果和运算对象的数据类型有关,若两个整数相除,则运算称为整除,其商为整数,小数部分被舍弃。例如
5/2=2、-5/3=-1;若是一个或两个运算对象是实型,则运算结果是实型,例如5.0/2=2.5、5/2.0=2.5、5.0/2.0=2.5。 - 模运算要求两侧的运算对象必须为整型,否则出错。运算结果(即余数)的符号与被除数的符号相同,例如
4%-3=1、4%3=1,商分别是-1、1。
a % b / a * b; // 等价于 ((a%b)/a)*b |
掌握关系运算符的运算对象、运算规则、优先级和结合性。
关系运算符包括 >、>=、<、<=、== 和 != 六种,它们都是双目运算符。本质上,关系运算符是比较运算,即将两个数据进行比较,判断两个数据是否符合给定的关系。例如 a > b 中的 > 表示一种大于的关系运算。如果 a 的值是 5,b 的值是 3,则大于关系 > 运算的结果为“真”,即关系成立;如果 a 的值是 2,b 的值是 3,则大于关系 > 运算的结果为“假”,即关系不成立。
如果关系运算的结果是逻辑值“真”(即关系成立),用整数 1 表示;如果关系运算的结果是逻辑值“假”(即关系不成立),用整数 0 表示。
| 名称 | 运算符 | 运算对象个数 | 运算规则 | 运算对象类型 | 结果类型 | 结合性 |
|---|---|---|---|---|---|---|
| 小于 | < | 双目中缀 | 关系成立则为真, 结果为“1”;否则为 假,结果为“0” |
整型 或实型 或字符型 |
0 或 1 (整型) |
从左至右 |
| 小于或等于 | <= | |||||
| 大于 | > | |||||
| 大于或等于 | >= | |||||
| 等于 | == | |||||
| 不等于 | != |
关系运算符的优先级如下:
- 算术运算符优先于关系运算符。
>、>=、<、<=优先于==、!=。>、>=、<、<=的优先级相同,结合性是从左至右。==、!=的优先级相同,结合性是从左至右。
关系运算符也可以比较两个字符型数据的大小,比较字符型数据时是按照该字符对应的 ASCII 码值的大小进行比较,本质上是整数的比较。
需要注意的是,C 语言中“等于”这一关系运算符是双等号 ==,而不是单等号 =(赋值运算符)。
掌握逻辑运算符的运算对象、运算规则、优先级和结合性。
掌握赋值运算符的运算对象、运算规则、优先级和结合性。
掌握逗号运算符的运算对象、运算规则、优先级和结合性。
掌握条件运算符的运算对象、运算规则、优先级和结合性。
掌握位运算符的运算对象、运算规则、优先级和结合性。
掌握长度运算符的运算对象、运算规则、优先级和结合性。
表达式的构成和运算规则
熟练掌握算术表达式的构成和运算规则。
熟练掌握关系表达式的构成和运算规则。
熟练掌握逻辑表达式的构成和运算规则。
熟练掌握赋值表达式的构成和运算规则。
熟练掌握逗号表达式的构成和运算规则。
熟练掌握条件表达式的构成和运算规则。
熟练掌握位运算表达式的构成和运算规则。
变量赋值和表达式计算时的数据类型转换规则
理解不同数据类型的数据和变量在赋值时的“就左不就右”的自动数据类型转换规则。
理解不同数据类型的数据在参与表达式计算时的“就高不就低”的自动数据类型转换规则。
了解强制数据类型转换方法。
结构化程序的设计方法和三种基本结构
了解结构化程序的设计方法。
了解顺序结构的特点。
了解三种选择结构的特点。
了解三种循环结构的特点。
赋值语句、函数调用语句、表达式语句、复合语句的使用
掌握赋值语句的格式和基本功能。
掌握函数调用语句的格式,能正确调用库函数。
掌握表达式语句的格式和基本功能。
掌握复合语句的格式和基本功能。
熟练掌握使用赋值语句、表达式语句解决简单计算问题的方法。
字符输入/输出函数的使用
熟练掌握字符输入/输出函数的调用方法和功能。
能使用字符输入/输出函数解决程序中字符的输入/输出。
格式输入/输出函数的使用
掌握格式输入/输出函数中格式说明符的含义。
熟练掌握格式输入/输出函数的调用方法和功能。
能使用格式输入/输出函数解决程序中基本类型数据的输入/输出。
三条选择语句和三种选择结构的程序设计
能正确使用if语句实现单分支选择结构的程序设计。
能正确使用if-else语句实现双分支选择结构的程序设计。
能正确使用switch语句实现特定的多分支选择结构的程序设计。
能正确使用嵌套的if-else语句实现任意的多分支选择结构的程序设计。
三条循环语句和三种循环结构的程序设计
能正确使用while语句实现循环结构的程序设计。
能正确使用do-while语句实现循环结构的程序设计。
能正确使用for语句实现循环结构的程序设计。
掌握break和continue语句的功能和使用方法。
利用循环嵌套实现二重循环结构的方法
掌握二重循环结构的设计方法。
能设计二重循环结构的程序。
一维数组的定义、初始化和数组元素的引用方法
熟练掌握一维数组的定义和初始化方法。
熟练掌握一维数组元素的下标引用方法。
掌握利用次数型单重循环处理一维数组元素的方法。
二维数组的定义、初始化和数组元素的引用方法
掌握二维数组的定义和初始化方法。
掌握二维数组元素的下标引用方法。
掌握利用次数型二重循环处理二维数组元素的方法。
字符数组的定义、初始化和数组元素的引用方法
熟练掌握字符数组的定义和初始化方法。
熟练掌握字符数组元素的下标引用方法。
字符数组中存放的字符串的输入/输出和处理方法
理解单个字符串在一维字符数组中的存放形式。
熟练掌握在一维字符数组中存放的字符串的输入/输出方法。
掌握多个字符串在二维字符数组中的存放方式。
掌握在二维字符数组中存放的字符串的输入/输出方法。
处理字符串的常用库函数及其使用
能用gets()函数和puts()函数实现字符串的输入/输出。
掌握字符串连接strcat(),字符串比较strcmp()和字符串复制strcpy()函数的使用方法。
掌握字符串长度测试strlen()函数的使用方法。
模块化程序设计方法
了解模块化程序设计的方法和特点。
了解C语言中如何实现模块化程序设计。
函数的定义和调用
掌握函数的一般结构和定义方法。
掌握函数的一般调用方法。
能在程序中实现自定义函数的定义和调用。
函数调用时的数据传递方式
掌握函数调用时参数的值传递方式。
掌握函数调用时参数的地址传递方式。
掌握函数调用时的返回值传递方式。
能利用全局变量在函数间传递数据。
变量的存储类型及其定义方法
掌握变量存储类型的概念。
掌握不同存储类型变量的存储分配方式和使用特点。
掌握变量存储类型的定义方法。
变量的生存期和作用域
理解局部变量和全局变量的概念和定义方法。
了解通过变量的定义可以确定其生存期。
了解通过变量的定义可以确定其作用域。
函数的嵌套调用和递归调用
掌握函数嵌套调用的方法和特点。
掌握递归函数的定义和设计方法。
常用库函数的使用
熟练掌握常用的数学处理函数的功能和调用方法。
熟练掌握常用的类型转换函数的功能和调用方法。
熟练掌握常用的字符处理函数的功能和调用方法。
熟练掌握其他的常用库函数的功能和调用方法。
地址、指针和指针变量的概念
理解地址和指针的关系。
了解指针变量的概念和作用。
指针变量的定义、初始化、赋值和一般使用方法
掌握指针变量的定义和初始化方法。
掌握指针变量的赋值和一般使用方法。
掌握取地址运算符
&和指针运算符*的使用方法。
指针变量的使用方法
掌握指向变量的指针变量的使用方法。
能使用指向一维数组元素的指针变量引用数组元素。
能使用指向二维数组元素的指针变量引用数组元素。
掌握指向字符串的指针变量的使用方法。
指针型函数的定义和调用
掌握指针型函数的定义方法。
掌握指针型函数的调用方法。
指针数组的定义、初始化和引用
了解指针数组的定义和初始化方法。
掌握指针数组元素的使用方法。
结构体类型的定义方法
了解结构体类型的特点和应用。
掌握结构体类型的定义方法。
结构体类型变量的定义和成员引用方法
掌握结构体类型变量的定义和初始化方法。
掌握结构体类型变量成员的引用方法。
掌握结构体类型嵌套的概念和使用。
结构体类型数组的定义和数组元素成员的引用方法
掌握结构体类型数组的定义和初始化方法。
能正确引用结构体类型数组元素的成员。
结构体类型指针变量的定义和使用
掌握结构体类型指针变量的定义和初始化方法。
能利用结构体类型指针变量引用结构体类型数据的成员。
能在函数间传递结构体类型数据。
自定义类型的定义和使用
了解自定义类型的定义方法。
能将基本数据类型定义为自定义类型。
能利用自定义类型定义变量、数组和结构体类型等
宏定义命令的使用
掌握宏定义的方法。
能在程序中正确使用宏名。
文件包含命令的使用
了解文件包含命令的功能。
了解文件包含命令的使用方法。
条件编译命令的使用
了解条件编译命令的功能。
了解条件编译命令的使用方法。
文件的概念
掌握文件名的组成规则。
了解文件的分类及其特点。
缓冲文件系统中“文件型指针”的概念
了解文件型指针的概念和作用。
掌握文件型指针的定义方法。
了解标准输入/输出设备的文件型指针。
缓冲文件系统中文件操作的各种库函数的使用
掌握文件打开和关闭函数的使用方法。
掌握文件尾测试函数的使用方法。
掌握文件读/写中字符读/写函数的使用方法。
掌握文件读/写中字符串读/写函数的使用方法。
掌握文件读/写中数据块读/写函数的使用方法。
掌握文件读/写中格式化读/写函数的使用方法。
掌握文件指针复位函数和文件随机定位函数的使用方法。




