计算机二级考试C语言程序设计,全国计算机二级c语言考试内容整理
C程序
用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。C语言有三种基本结构:顺序结构、选择结构、循环结构。
mian函数
又称主函数,是C程序的入口。main后面跟一对小括号和一对花括号,花括号括起来的部分称为main函数的函数体。一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。每一个程序有且仅有一个mian函数,其他函数都是为main函数服务的。
头文件
程序中的注释
是对程序的说明,可出现在程序中任意合适的地方,注释从"/" 开始到最近一个 "/"结束,其间任何内容都不会被计算机执行,注释不可以嵌套。
C语言的风格主要有:C语言简洁、紧凑,使用方便、灵活;运算符丰富。
C语言的运算符包含的范围很广泛,共有34种运算;
数据结构丰富,具有现代化语言的各种数据结构;
用函数作为程序模块化实现C程序的模块化;
C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作;
生成目标代码质量高,程序执行效率高;用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运算符的种类、运算优先级和结合性
运算符的种类
需要两个运算单位,称为双目运算符。
:右端(低位)移出得二进制数舍弃,左端(高位)移入得二进制数分两种情况:对于无符号整数和正整数,高位补0;对于负整数,高位补1
^:转化为二进制,相同为0,相异为1 赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=、-=,*=、/=、%=)、和复合位运算赋值(&=、!=、^=、>>=、<<=),三类共11种;条件运算符:这是一个三目运算符,用于条件求值(? :);逗号运算符:用于把若干表达式组合成一个表达式(,);指针运算符:用于取内容(*)和区地址(&),两种运算;求字节数运算符:用于计算数据类型所占的字节数(sizeof);特殊运算符:有括号( )、下标[ ]、成员(->,)等几种。运算优先级和结合性
强制类型转换
利用强制类型转换运算符可以将一个表达式的值转换成所需类型
【格式】(类型名)(表达式)
”类型名“称为强制类型转换运算符
赋值表达式
赋值运算符的符号为”=“,由赋值运算符组成的表达式称为赋值表达式。
算术表达式
算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(%)、自增(++),自减(–),一共7种;
加、减、乘、除可以使用整型和实型数据,而求余运算符,其运算对象只能是整型。除法运算符两边运算对象都为整型时,运算结果也为整型即舍掉小数部分。
关系表达式
关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)、不等于(!=),一共6种;
逻辑表达式
逻辑运算符:用于逻辑运算。包括逻辑与(&&)、逻辑或(||),非(!),共3种。
条件表达式
条件运算符:这是一个三目运算符,用于条件求值(? :);
逗号表达式
逗号运算符:用于把若干表达式组合成一个表达式(,);
表达式语句
运算对象加运算符构成表达式,表达式加分号构成表达式语句,运算对象可以是表达式、常量、变量。如赋值运算符加运算对象构成赋值表达式,赋值表达式加分号又可构成赋值语句。
空语句
空语句的一般形式为在一行上只有一个分号,如:
;
复合语句
把多个语句用括号{}括起来组成的一个语句称复合语句,如:
{
x=3;
y=5;
}
printf函数
【格式】printf(格式控制,输出列表);
格式控制:是用一对双引号括起来的,包含格式说明和原样信息
输出列表:是要输出的字符或变量名
scanf函数
【格式】scanf(格式控制,输出列表);
可以单独出现,也可以与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型。
函数的返回值
【格式】return 表达式; / return(表达式);
表达式值得类型必须与函数首部所说明的类型一致,若类型不一致,则以函数值得类型为准,由系统自动进行转换
形式参数简称形参,是定义函数时函数名后面括号中得参数;
实在参数简称实参,是调用函数时函数名后面括号中的参数;
实参和形参分别占据不同的存储单元,实参向形参单向传递数值。
函数直接或间接地调用自己称为函数的递归调用。递归调用必须有一个明确的结束递归的条件。
在C语言中,除了主函数外,用户定义的函数都要遵循“先定义,后使用”的使用规则。凡是未在调用前定义的函数,C编译程序都默认函数的返回值为int类型;对于返回值为其他类型的函数,若把函数的定义放在调用之后,应该在调用之前对函数进行说明。
局部变量
【定义】是在函数内部或复合语句内部定义的变量
【作用域】只能在定义它的函数(或复合语句)中使用,离开了定义,它的函数(或复合语句)就不能使用
全局变量
【定义】在函数外部定义的变量,全局变量也称为外部变量
【作用域】从变量定义位置开始,到整个源文件结束为止
变量的存储类别
一、自动变量(auto):
自动变量是C程序中使用最多的一种变量,这种变量的建立和撤销都是在系统中自动进行的
二、寄存器变量(register):
寄存器变量与自动变量的性质相同,其区别只在于存储的位置不同,寄存器变量存储在CPU的寄存器中,而自动变量存储在内存的动态存储区,寄存器变量的存取速度要快些
三、静态变量(static):
静态类别变量的存储空间在程序的整个运行期间是固定的
静态变量的初始化在编译时进行,定义时可用常量或表达式进行显示初始化。对于没有初始化的静态变量,自动初始化为0(整型)或0.0(实型)
四、外部变量(extern):
extern使外部变量的作用范围扩大到其他源程序文件中
局部变量既可以说明为自动类别,也可以说明为静态类别;全局变量只能说明为静态类别
变量的作用域及生存期
一、局部变量的作用域及生存期
①自动变量的作用域及生存期
自动变量的存储单元被分配在内存的动态存储区,每当进函数体(或复合语句)时,系统自动为自动变量分配存储单元,退出时自动释放这些存储单元。自动变量的作用域为从定义位置起,到函数体(或复合语句)结束为止
自动变量在进入到定义它们的函数体(或复合语句)时生成,在退出所在的函数体(或复合语句)时消失,这就是自动变量的生存期
②寄存器的作用域及生存期
与自动变量相同
③静态存储类别的局部变量
在函数体(或复合语句)内部,用static说明的变量静态存储类别的局部变量,这种变量的作用域与自动(或寄存器)变量的作用于相同,但是生存期有所不同
静态局部变量的生存期将一直延长到程序运行结束
二、全局变量的作用域及生存期
全局变量的作用域为从变量定义的位置开始,到整个源程序文件结束为止。生存期为整个程序的运行期间,全局变量在整个程序运行期间都占用内存空间
①在同一编译单位内用extern标识符来扩展全局变量的作用域
在全局变量定义后,在引用函数前,应在引用它的函数中用extern对此全局变量进行说明,以便使编辑程序确定此外部变量已被定义,不必再为它分配存储单元,此时的作用域从extern说明开始,到此函数结束
注意:全局变量的定义只能出现一次,这时不可使用extern标识符。如果多次引用全局变量,这时必须用extern标识符
②在不同编译单位内用extern标识符来扩展全局变量的作用域
C语言的不同函数可以存放在不同的源程序文件中,每个源程序文件可以单独进行编译,进行语法检查,再生成目标文件,最后用系统提供的连接程序把多个目标文件连接成一个可执行程序。
当程序由多个源程序文件组成时,若每个文件中都要引用同一个全局变量,这时如在每个源程序文件中都定义一个所需的同名全局变量,将在连续时产生重复定义错误。解决的办法是在其中一个源程序文件中定义所有全局变量,而在其他用到全局变量的源程序文件中extern对这些变量进行说明,以表明它们已在其他编译单元中被定义
③静态全局变量
当用static标识符说明全局变量时,全局变量为静态全局变量。静态全局变量只能在定义它的源程序文件中使用,不能被其他源程序文件使用。
以#号开头的命令称为预处理命令。
无参宏定义
【格式】#define 宏名 字符串
#define 叫做宏定义命令,它也是C语言预处理命令的一种。所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。
有参宏定义
【格式】#define 宏名(参数表) 字符串
一个文件包含另一个文件的内容
【格式】#include “文件名” 或 #include <文件名>
编译时以包含处理以后的文件为编译单位,被包含的文件是源文件的一部分。
编译以后只得到一个目标文件.obj
被包含的文件又被称为“标题文件”或“头部文件”、“头文件”,并且常用.h作扩展名。
修改头文件后所有包含该文件的文件都要重新编译
头文件的内容除了函数原型和宏定义外,还可以有结构体定义,全局变量定义:
只要求缓冲文件系统(即高级磁盘I/O系统),对非标准缓冲文件系统(即低级磁盘I/O系统)不要求。
1、文件类型指针(FILE类型指针) 2、文件的打开与关闭(fopen,fclose) 3、文件的读写(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函数的应用),文件的定位 (rewind,fseek函数的应用)