全国计算机等级考试二级C语言程序设计考点整理

一、C语言程序的结构

1、程序的构成,main函数和其他函数

C程序
用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。C语言有三种基本结构:顺序结构、选择结构、循环结构。

mian函数
又称主函数,是C程序的入口。main后面跟一对小括号和一对花括号,花括号括起来的部分称为main函数的函数体。一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。每一个程序有且仅有一个mian函数,其他函数都是为main函数服务的。

2、头文件,数据说明,函数的开始和结束标志以及程序中的注释

头文件

程序中的注释
是对程序的说明,可出现在程序中任意合适的地方,注释从"/" 开始到最近一个 "/"结束,其间任何内容都不会被计算机执行,注释不可以嵌套。

3、源程序的书写格式

  • 每条语句的后面必须有一个分号,分号是语句的一部分。
  • 一行内可写多条语句,一个语句可写在多行上。

4、C语言的风格

C语言的风格主要有:C语言简洁、紧凑,使用方便、灵活;运算符丰富。
C语言的运算符包含的范围很广泛,共有34种运算;
数据结构丰富,具有现代化语言的各种数据结构;
用函数作为程序模块化实现C程序的模块化;
C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作;
生成目标代码质量高,程序执行效率高;用C语言写的程序可移植性好。

二、数据类型与运算

1、C的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法

常量与变量
常量是指在程序运行过程中,其值不能改变的量。常量分为整型常量、实型常量、字符常量、字符串常量、符号常量五种。在程序运行过程中其值可以改变的量称为变量。C语言中没有字符串变量,存放字符串使用字符数组。

基本类型

  • 整型数据
    • 整型常量有八进制、十进制、十六进制三种表示形式,没有二进制。八进制前加0,十六进制前加0X
    • 整形变量可分为int(4字节)、short、long、无符号整型(unsighed)
  • 实型数据
    • 实型数据有两种表示形式:小数形式和指数形式。掌握判定指数形式合法性
      口诀:E前E后必有数,E后必须为整数。
    • 实型变量分为单精度型(float)和双精度型(double),单精度型占四个字节
  • 字符常量
    • 一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量。例如,‘A’、’a‘都是合法的字符常量。
    • 转义字符常量:又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表一个特定的ASCII字符,这些字符常量必须阔在一对单括号内。
    • ‘\0’是一个转义字符,称为空值,它的ASCII码值为0。‘\0’作为标志占用存储空间,但不计入字符串的实际长度。
  • 字符串常量
    • 字符串常量是由双引号括起来的一串字符,是借助字符型一维数组来存放的,并规定以字符‘\0’作为“字符串结束标志”。

2、C运算符的种类、运算优先级和结合性

运算符的种类
需要两个运算单位,称为双目运算符。

  • 算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(%)、自增(++),自减(–),一共7种;
  • 关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)、不等于(!=),一共6种;
  • 逻辑运算符:用于逻辑运算。包括逻辑与(&&)、逻辑或(||),非(!),共3种;
  • 位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(!)、位异或(^)、左移(<<)、右移(>>),共6种;
    • <<:双目运算符,右端(低位)补0;左端(高位)移出的部分舍弃
    • :右端(低位)移出得二进制数舍弃,左端(高位)移入得二进制数分两种情况:对于无符号整数和正整数,高位补0;对于负整数,高位补1

    • ^:转化为二进制,相同为0,相异为1
  • 赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=、-=,*=、/=、%=)、和复合位运算赋值(&=、!=、^=、>>=、<<=),三类共11种;
  • 条件运算符:这是一个三目运算符,用于条件求值(? :);
  • 逗号运算符:用于把若干表达式组合成一个表达式(,);
  • 指针运算符:用于取内容(*)和区地址(&),两种运算;
  • 求字节数运算符:用于计算数据类型所占的字节数(sizeof);
  • 特殊运算符:有括号( )、下标[ ]、成员(->,)等几种。

运算优先级和结合性
在这里插入图片描述

3、不同类型数据间的转换与运算

强制类型转换
利用强制类型转换运算符可以将一个表达式的值转换成所需类型
【格式】(类型名)(表达式)
”类型名“称为强制类型转换运算符

4、C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则

赋值表达式
赋值运算符的符号为”=“,由赋值运算符组成的表达式称为赋值表达式。

  • 【格式】<变量><赋值运算符>(表达式)
  • 赋值运算符的左侧只能是变量,不能是常量或者表达式
  • 在赋值表达式的尾部加上一个”;“号,就构成了赋值语句,也称表达式语句
  • 赋值运算符=号的左边必须是变量

算术表达式
算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(%)、自增(++),自减(–),一共7种;
加、减、乘、除可以使用整型和实型数据,而求余运算符,其运算对象只能是整型。除法运算符两边运算对象都为整型时,运算结果也为整型即舍掉小数部分。

关系表达式
关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)、不等于(!=),一共6种;

  • 关系运算符的值为“逻辑值”,只有两种可能值:0或1

逻辑表达式
逻辑运算符:用于逻辑运算。包括逻辑与(&&)、逻辑或(||),非(!),共3种。

  • 优先级次序是:“!”最高;“&&”次之;“||”最低
  • 逻辑表达式的运算结果为真(1)或假(0)

条件表达式
条件运算符:这是一个三目运算符,用于条件求值(? :);

逗号表达式
逗号运算符:用于把若干表达式组合成一个表达式(,);

  • 【格式】(表达式1),(表达式2)…(表达式n)
  • 逗号表达式的值为表达式n的值

三、基本语句

1、表达式语句,空语句,复合语句

表达式语句
运算对象加运算符构成表达式,表达式加分号构成表达式语句,运算对象可以是表达式、常量、变量。如赋值运算符加运算对象构成赋值表达式,赋值表达式加分号又可构成赋值语句。

空语句
空语句的一般形式为在一行上只有一个分号,如:

复合语句
把多个语句用括号{}括起来组成的一个语句称复合语句,如:
{
x=3;
y=5;
}

2、输入输出函数的调用,正确输入数据并正确设计输出格式

printf函数
【格式】printf(格式控制,输出列表);
格式控制:是用一对双引号括起来的,包含格式说明和原样信息

  • 格式说明:每个格式说明都必须用“%”开头,以一个格式字符作为结束,在此之间可以根据需要插入“宽度说明”、左对齐符号”-“等。
    • 格式字符:主要用于说明输出字符的格式;
      • %d 整型
      • %f 单精度实型
      • %lf 双精度实型
      • %c 字符型
      • %s 字符串型
    • 长度修饰符:在”%“和格式字符之间,可以加入长度修饰符;如”%4d“
    • 输出数据左对齐:输出数据都默认为右对齐,若想左对齐,可以在格式控制中的”%“和宽度之间加一个”-“号来实现;如”%-4d"

输出列表:是要输出的字符或变量名

scanf函数
【格式】scanf(格式控制,输出列表);

  • 输入数值数据:输入的数据之间必须用空格、回车符、制表符(Tab键)等间隔符隔开,间隔符个数不限

四、选择结构程序设计

1、用 if 语句实现选择结构

可以单独出现,也可以与else匹配出现,if语句可以嵌套,这是else总是离它最近的且没有与else匹配的if匹配

2、用 switch 语句实现多分支选择结构

switch后小括号里面的表达式不能为实型,case后表达式不能有变量

3、选择结构的嵌套

五、循环结构程序设计

1、for 循环结构

2、while 和 do-while 循环结构

3、continue 语句和 break 语句

break是终止所在整个循环,而continue是提前结束本轮循环,break语句可出现在循环结构与switch语句中,continue只出现在循环结构中

4、循环的嵌套

在一个循环体内又完整包含了另外一个循环,称为循环嵌套。

六、数组的定义和引用

1、一维数组和二维数组的定义、初始化和数组元素的引用

2、字符串与字符数组

七、函数

1、库函数的正确调用

调用C语言标准库函数时要包含include命令,include命令行以#开头,后面是 “ ” 或 <> 括起来的后缀为“.h”的头文件。以#开头的一行编译预处理命令行,编译预处理不是C语言语句,不加分号,不占运行时间。

2、函数的定义方法

函数是具有一定功能的一个程序块。
【格式】函数的首部为:函数类型 函数名(类型1 形参1,类型2 形参2,…)
在函数定义中不可以在定义函数,即不能嵌套定义函数,函数类型默认为int型。

3、函数的类型和返回值

函数的返回值
【格式】return 表达式; / return(表达式);
表达式值得类型必须与函数首部所说明的类型一致,若类型不一致,则以函数值得类型为准,由系统自动进行转换

4、形式参数与实际参数,参数值的传递

形式参数简称形参,是定义函数时函数名后面括号中得参数;
实在参数简称实参,是调用函数时函数名后面括号中的参数;
实参和形参分别占据不同的存储单元,实参向形参单向传递数值。

5、函数的正确调用,嵌套调用,递归调用

函数直接或间接地调用自己称为函数的递归调用。递归调用必须有一个明确的结束递归的条件。
在C语言中,除了主函数外,用户定义的函数都要遵循“先定义,后使用”的使用规则。凡是未在调用前定义的函数,C编译程序都默认函数的返回值为int类型;对于返回值为其他类型的函数,若把函数的定义放在调用之后,应该在调用之前对函数进行说明。

6、局部变量和全局变量

局部变量
【定义】是在函数内部或复合语句内部定义的变量
【作用域】只能在定义它的函数(或复合语句)中使用,离开了定义,它的函数(或复合语句)就不能使用

全局变量
【定义】在函数外部定义的变量,全局变量也称为外部变量
【作用域】从变量定义位置开始,到整个源文件结束为止

7、变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。

变量的存储类别

一、自动变量(auto):
自动变量是C程序中使用最多的一种变量,这种变量的建立和撤销都是在系统中自动进行的

二、寄存器变量(register):
寄存器变量与自动变量的性质相同,其区别只在于存储的位置不同,寄存器变量存储在CPU的寄存器中,而自动变量存储在内存的动态存储区,寄存器变量的存取速度要快些

  • CPU中寄存器的数目是有限的,因此只能把少数的变量说明为寄存器变量
  • 寄存器变量是存放在寄存器中,而不是存放在内存中,所以,寄存器变量无地址
  • 寄存器变量的说明应尽量放在靠近要使用的地方,用完后尽快释放,这样可提高使用效率

三、静态变量(static):
静态类别变量的存储空间在程序的整个运行期间是固定的
静态变量的初始化在编译时进行,定义时可用常量或表达式进行显示初始化。对于没有初始化的静态变量,自动初始化为0(整型)或0.0(实型)

四、外部变量(extern):
extern使外部变量的作用范围扩大到其他源程序文件中

局部变量既可以说明为自动类别,也可以说明为静态类别;全局变量只能说明为静态类别

变量的作用域及生存期

一、局部变量的作用域及生存期

①自动变量的作用域及生存期
自动变量的存储单元被分配在内存的动态存储区,每当进函数体(或复合语句)时,系统自动为自动变量分配存储单元,退出时自动释放这些存储单元。自动变量的作用域为从定义位置起,到函数体(或复合语句)结束为止
自动变量在进入到定义它们的函数体(或复合语句)时生成,在退出所在的函数体(或复合语句)时消失,这就是自动变量的生存期

②寄存器的作用域及生存期
与自动变量相同

③静态存储类别的局部变量
在函数体(或复合语句)内部,用static说明的变量静态存储类别的局部变量,这种变量的作用域与自动(或寄存器)变量的作用于相同,但是生存期有所不同
静态局部变量的生存期将一直延长到程序运行结束

二、全局变量的作用域及生存期
全局变量的作用域为从变量定义的位置开始,到整个源程序文件结束为止。生存期为整个程序的运行期间,全局变量在整个程序运行期间都占用内存空间

①在同一编译单位内用extern标识符来扩展全局变量的作用域
在全局变量定义后,在引用函数前,应在引用它的函数中用extern对此全局变量进行说明,以便使编辑程序确定此外部变量已被定义,不必再为它分配存储单元,此时的作用域从extern说明开始,到此函数结束
注意:全局变量的定义只能出现一次,这时不可使用extern标识符。如果多次引用全局变量,这时必须用extern标识符

②在不同编译单位内用extern标识符来扩展全局变量的作用域
C语言的不同函数可以存放在不同的源程序文件中,每个源程序文件可以单独进行编译,进行语法检查,再生成目标文件,最后用系统提供的连接程序把多个目标文件连接成一个可执行程序。
当程序由多个源程序文件组成时,若每个文件中都要引用同一个全局变量,这时如在每个源程序文件中都定义一个所需的同名全局变量,将在连续时产生重复定义错误。解决的办法是在其中一个源程序文件中定义所有全局变量,而在其他用到全局变量的源程序文件中extern对这些变量进行说明,以表明它们已在其他编译单元中被定义

③静态全局变量
当用static标识符说明全局变量时,全局变量为静态全局变量。静态全局变量只能在定义它的源程序文件中使用,不能被其他源程序文件使用。

八、编译预处理

1、宏定义和调用(不带参数的宏,带参数的宏)

以#号开头的命令称为预处理命令。

无参宏定义
【格式】#define 宏名 字符串
#define 叫做宏定义命令,它也是C语言预处理命令的一种。所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。

  • 宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结束。如要终止其作用域可使用**#undef**命令
  • 末尾不加分号
  • 宏名如果被引号包围,那么预处理程序不对其作宏替换
  • 宏定义允许嵌套
  • 可用宏定义表示数据类型,使书写方便。
  • 宏定义不分配内存,变量定义分配内存

有参宏定义
【格式】#define 宏名(参数表) 字符串

  • 只做替换,不做计算,不做表达式求解
  • 函数调用在编译后程序运行时进行,并且分配内存。宏替换在编译前进行,不分配内存
  • 宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)

2、“文件包含”处理

一个文件包含另一个文件的内容
【格式】#include “文件名” 或 #include <文件名>
编译时以包含处理以后的文件为编译单位,被包含的文件是源文件的一部分。
编译以后只得到一个目标文件.obj
被包含的文件又被称为“标题文件”或“头部文件”、“头文件”,并且常用.h作扩展名。
修改头文件后所有包含该文件的文件都要重新编译
头文件的内容除了函数原型和宏定义外,还可以有结构体定义,全局变量定义:

  • 一个#include命令指定一个头文件;
  • 文件1包含文件2,文件2用到文件3,则文件3的包含命令#include应放在文件1的头部第一行;
  • 包含可以嵌套;
  • <文件名>称为标准方式,系统到头文件目录查找文件,"文件名"则先在当前目录查找,而后到头文件目录查找;
  • 被包含文件中的静态全局变量不用在包含文件中声明。

九、指针

1、地址与指针变量的概念,地址运算符与间址运算符

2、 一维、二维数组和字符串的地址以及指向变量、数组、字符串、函数、结构体的指针变量的定义。通过指针引用以上各类型数据

3、用指针作函数参数

4、返回地址值的函数

5、指针数组,指向指针的指针

十、结构体(即“结构”)与共同体(即“联合”)

1、用typedef说明一个新类型

2、结构体和共用体类型数据的定义和成员的引用

3、通过结构体构成链表,单向链表的建立,结点数据的输出、删除与插入

十一、位运算

1、位运算符的含义和使用

2、简单的位运算

十二、文件操作

只要求缓冲文件系统(即高级磁盘I/O系统),对非标准缓冲文件系统(即低级磁盘I/O系统)不要求。

1、文件类型指针(FILE类型指针)

2、文件的打开与关闭(fopen,fclose)

3、文件的读写(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函数的应用),文件的定位 (rewind,fseek函数的应用)

发布了8 篇原创文章 · 获赞 10 · 访问量 2631
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览