《全国计算机等级考试二级C1.ppt》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C1.ppt(80页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C C语言程序设计语言程序设计章节笔试上机C语言的概述2%2%数据类型及其运算10%5%顺序结构程序设计14%10%选择结构程序设计8%13%循环结构程序设计12%17%函数14%5%指针18%20%数组17%18%结构体与共用体2%7%位运算2%1%文件操作1%2%C语言考试大纲及所占考试比例第一章C语言概述1.1.1 1.1.1 什么是程序?什么是程序?什么是程序?什么是程序?常见的软件:常见的软件:常见的软件:常见的软件:WordWordWordWord、ExcelExcelExcelExcel、暴风影音等。暴风影音等。暴风影音等。暴风影音等。由一系列详细的指令组成,它们用某种计算机语言
2、写成由一系列详细的指令组成,它们用某种计算机语言写成由一系列详细的指令组成,它们用某种计算机语言写成由一系列详细的指令组成,它们用某种计算机语言写成(如(如(如(如C C C C、VC+VC+VC+VC+、JavaJavaJavaJava、C#C#C#C#等),能准确的告诉计算机怎么处等),能准确的告诉计算机怎么处等),能准确的告诉计算机怎么处等),能准确的告诉计算机怎么处理文字或数据。理文字或数据。理文字或数据。理文字或数据。程序员必须给出计算机要执行的详细指令序列,即程序。程序员必须给出计算机要执行的详细指令序列,即程序。程序员必须给出计算机要执行的详细指令序列,即程序。程序员必须给出计算
3、机要执行的详细指令序列,即程序。程序程序程序程序就是就是就是就是完成某种功能的指令序列完成某种功能的指令序列完成某种功能的指令序列完成某种功能的指令序列。1.1程序和程序设计1.1.2 程序设计程序设计一个简单的程序设计一般包含以下几个部分:一个简单的程序设计一般包含以下几个部分:确定数据结构。确定数据结构。确定算法。确定算法。编码。编码。调试程序。调试程序。整理并写出文档。整理并写出文档。1.2程序运行过程1.2.1 1.2.1 几个基本概念几个基本概念qq源程序源程序源程序源程序:用高级语言或汇编语言编写的程序称为源程序,以:用高级语言或汇编语言编写的程序称为源程序,以:用高级语言或汇编语
4、言编写的程序称为源程序,以:用高级语言或汇编语言编写的程序称为源程序,以ASCIIASCII码形式存储。码形式存储。码形式存储。码形式存储。C C源程序的扩展名为源程序的扩展名为源程序的扩展名为源程序的扩展名为“.C.C”(.CPP.CPP)。)。)。)。qq目标程序目标程序目标程序目标程序:源程序经过:源程序经过:源程序经过:源程序经过“编译程序编译程序编译程序编译程序”翻译所得到的二进制代翻译所得到的二进制代翻译所得到的二进制代翻译所得到的二进制代码称为目标程序。目标程序的扩展名为码称为目标程序。目标程序的扩展名为码称为目标程序。目标程序的扩展名为码称为目标程序。目标程序的扩展名为“.OB
5、J.OBJ”。qq可执行程序可执行程序可执行程序可执行程序:目标程序与库函数连接,形成完整的可在操:目标程序与库函数连接,形成完整的可在操:目标程序与库函数连接,形成完整的可在操:目标程序与库函数连接,形成完整的可在操作系统下独立执行的程序。可执行程序的扩展名为作系统下独立执行的程序。可执行程序的扩展名为作系统下独立执行的程序。可执行程序的扩展名为作系统下独立执行的程序。可执行程序的扩展名为“.EXE.EXE”。#include#include void main()void main()printf(Thisprintf(This is a C program!n);is a C progr
6、am!n);1.2C程序的运行过程C语言中的指令哎呀 我理解不了编译程序/解释程序可以 我现在可以理解了C语言由编译/解释程序转换为机器代码这种机器代码计算机可以理解编译和执行C程序C源程序目标文件可执行程序C语言函数库编译连接源程序:是用户创建的文件,以“.c.c”为文件扩展名保存 目标文件:是编译器的输出结果。这类文件的常见扩展名为.objobj”0 1 形式头文件:含有函数的声明和预处理语句,用于帮助访问外部定义的函数。头文件的扩展名为“.h.h”。可执行文件:是连接器的输出结果。可执行文件的扩展名为“.exe.exe”。1.2.2 C程序上机步骤一、一、一、一、编辑编辑编辑编辑:将源程
7、序输入计算机内存中将源程序输入计算机内存中修改源程序修改源程序将改正将改正后的源程序保存为磁盘文件。后的源程序保存为磁盘文件。以以以以ASCIIASCII码形式输入和存储码形式输入和存储码形式输入和存储码形式输入和存储-扩展名为扩展名为扩展名为扩展名为.C.C或或或或.CPP.CPP(源程序)源程序)源程序)源程序)二、二、二、二、编译编译编译编译:先先进行语法检查,并将无语法错误的源程序翻译成进行语法检查,并将无语法错误的源程序翻译成二进制形式的目标代码二进制形式的目标代码-扩展名为扩展名为.OBJ.OBJ(目标程序目标程序目标程序目标程序)三、三、三、三、链接链接链接链接:将各模块的二进制
8、目标代码与系统标准模块连接,将各模块的二进制目标代码与系统标准模块连接,得到一个可执行文件得到一个可执行文件-扩展名为扩展名为.EXE.EXE(可执行程序可执行程序可执行程序可执行程序)四、四、四、四、执行执行执行执行:执行经过编译和连接的可执行目标文件。执行经过编译和连接的可执行目标文件。编辑编辑编辑编辑键盘输入键盘输入源程序源程序A.cA.c编译编译编译编译目标程序目标程序A.objA.obj链接链接链接链接可执行程序可执行程序A.exeA.exe执行执行执行执行结果结果1.2.3 VC+6.0上机步骤1 1 1 1、启动、启动、启动、启动VC+6.0VC+6.0VC+6.0VC+6.0、
9、启动:启动:启动:启动:开始开始菜单菜单程序程序VisualVisual C+6.0 C+6.0、工作窗口工作窗口工作窗口工作窗口:编辑窗口、工作空间窗口、输出窗口编辑窗口、工作空间窗口、输出窗口2 2 2 2、在编辑状态下输入或修改源文件、在编辑状态下输入或修改源文件、在编辑状态下输入或修改源文件、在编辑状态下输入或修改源文件、编辑新文件、编辑新文件、编辑新文件、编辑新文件 编辑新文件:编辑新文件:文件文件文件文件新建新建新建新建文件文件文件文件“C+Source C+Source C+Source C+Source FileFileFileFile”保存文件:保存文件:文件文件文件文件保存
10、保存保存保存 或或 Ctrl+SCtrl+SCtrl+SCtrl+S、编辑已存在的文件编辑已存在的文件编辑已存在的文件编辑已存在的文件 打开文件:打开文件:文件文件文件文件打开打开打开打开 或或 Ctrl+O Ctrl+O Ctrl+O Ctrl+O 或或 直接双击文件直接双击文件直接双击文件直接双击文件 另存文件:另存文件:文件文件文件文件另存为另存为另存为另存为编译时的提示信息将显示在输出窗口,双击错误信息则转编译时的提示信息将显示在输出窗口,双击错误信息则转到相应出错处,修改完毕再重新编译,直到无任何错误后编译到相应出错处,修改完毕再重新编译,直到无任何错误后编译成功,显示成功,显示“0
11、 error(s),0 warning(s)0 error(s),0 warning(s)”。注意:编译成功只能说明程序无语法错误,不一定代表算注意:编译成功只能说明程序无语法错误,不一定代表算注意:编译成功只能说明程序无语法错误,不一定代表算注意:编译成功只能说明程序无语法错误,不一定代表算法正确或运行结果正确。法正确或运行结果正确。法正确或运行结果正确。法正确或运行结果正确。3 3、编译源程序、编译源程序、编译源程序、编译源程序组建组建组建组建编译编译编译编译 或或 Ctrl+F7Ctrl+F7编译时若弹出如下提示框,选择编译时若弹出如下提示框,选择“是是”。4 4、运行源程序、运行源程序
12、、运行源程序、运行源程序组建组建组建组建执行执行执行执行 或或 Ctrl+F5Ctrl+F51.2 算法算法特性算法特性 有穷性:经过有限步骤解决问题。有穷性:经过有限步骤解决问题。确定性:每个步骤所规定的操作必须是确定的确定性:每个步骤所规定的操作必须是确定的 可行性:每一个步骤必须能够有效地执行可行性:每一个步骤必须能够有效地执行 输入和输出特性:有零个或多个输入,有一个输入和输出特性:有零个或多个输入,有一个或多个输出。或多个输出。程序程序=数据结构数据结构+算法算法算法概念算法概念 算法是指为解决某个特定问题而采取的确定算法是指为解决某个特定问题而采取的确定且有限的且有限的 步骤。步骤
13、。自然语言描述自然语言描述自然语言描述自然语言描述专门的算法表达工具进行算法描述专门的算法表达工具进行算法描述专门的算法表达工具进行算法描述专门的算法表达工具进行算法描述算法描述方法算法描述方法 流程图流程图 N-S图图 PAD图图 伪代码伪代码结构化程序设计由三大基本结构组成:顺序结构、选择结结构化程序设计由三大基本结构组成:顺序结构、选择结构和循环结构。构和循环结构。1.顺序结构:(第三章)语句1语句2语句31.3 结构化程序设计2.选择结构判断表达式满足语句1语句2不满足3.循环结构判断表达式循环体循环体满足不满足第四章内容第五章内容1.4语言程序的基本结构1.4.1 简单程序介绍#in
14、clude#include void main()void main()printf(printf(ThisThis is a C program!n is a C program!n););#include#include void main()void main()printf(Thisprintf(This is a C program!n);is a C program!n);编译预处理命令编译预处理命令编译预处理命令编译预处理命令函数函数函数函数语言程序的两大部分:语言程序的两大部分:语言程序的两大部分:语言程序的两大部分:编译预处理命令:以编译预处理命令:以编译预处理命令:以编译预
15、处理命令:以“#”开头;一般放在程序的最前面开头;一般放在程序的最前面开头;一般放在程序的最前面开头;一般放在程序的最前面#include#include表示文件包含,即将后面文件的内容包含到本程序中表示文件包含,即将后面文件的内容包含到本程序中表示文件包含,即将后面文件的内容包含到本程序中表示文件包含,即将后面文件的内容包含到本程序中 stdio.hstdio.h是是是是包含了输入输出函数的头文件包含了输入输出函数的头文件包含了输入输出函数的头文件包含了输入输出函数的头文件 函数:一个程序中可以有多个,必须有一个函数:一个程序中可以有多个,必须有一个函数:一个程序中可以有多个,必须有一个函数
16、:一个程序中可以有多个,必须有一个mainmain函数函数函数函数#include#include void main()void main()printfprintf(ThisThis is a C program!n is a C program!n);函数:用于实现程序要求的功能函数:用于实现程序要求的功能函数:用于实现程序要求的功能函数:用于实现程序要求的功能 包括包括包括包括函数首部函数首部函数首部函数首部和和和和函数体函数体函数体函数体两部分:两部分:两部分:两部分:函数首部:即函数的第一行,包括函数类型、函数名、参数函数首部:即函数的第一行,包括函数类型、函数名、参数函数首部:即
17、函数的第一行,包括函数类型、函数名、参数函数首部:即函数的第一行,包括函数类型、函数名、参数(放在括号内,可以没有参数(放在括号内,可以没有参数(放在括号内,可以没有参数(放在括号内,可以没有参数)函数体:即由函数体:即由函数体:即由函数体:即由 开始、到开始、到开始、到开始、到 结束的内容结束的内容结束的内容结束的内容函数首部函数首部函数首部函数首部函数体函数体函数体函数体#include#include void main()void main()printfprintf(ThisThis is a C program!n is a C program!n);、mainmain是函数名,称
18、为主函数。每个程序必须是函数名,称为主函数。每个程序必须是函数名,称为主函数。每个程序必须是函数名,称为主函数。每个程序必须有且只能有有且只能有有且只能有有且只能有一一一一个个个个mainmain函数。函数。函数。函数。程序总是从程序总是从程序总是从程序总是从mainmain函数开始执行函数开始执行函数开始执行函数开始执行。、voidvoid用于说明函数值的类型,用于说明函数值的类型,用于说明函数值的类型,用于说明函数值的类型,voidvoid表示函数表示函数表示函数表示函数空值空值空值空值(没有值没有值没有值没有值)。、函数体由一对大括号括起来;范围以、函数体由一对大括号括起来;范围以、函数
19、体由一对大括号括起来;范围以、函数体由一对大括号括起来;范围以“”开始,开始,开始,开始,“”结结结结束。束。束。束。、printfprintf是是是是C C语言的语言的语言的语言的标准输出函数标准输出函数标准输出函数标准输出函数,表示把,表示把,表示把,表示把“”内的字符串内的字符串内的字符串内的字符串按原样输出到显示器上按原样输出到显示器上按原样输出到显示器上按原样输出到显示器上(除非遇到除非遇到除非遇到除非遇到%或或或或)。)。)。)。、“nn”是换行符,即输出完后回车换行。是换行符,即输出完后回车换行。是换行符,即输出完后回车换行。是换行符,即输出完后回车换行。、每个语句必须以分号每个
20、语句必须以分号每个语句必须以分号每个语句必须以分号“;”结束结束结束结束。This is a C program!This is a C program!EG101.C语言程序的基本结构:语言程序的基本结构:语言程序的基本结构:语言程序的基本结构:#include#include void mainvoid main()()例例例例.输出下列图形:输出下列图形:输出下列图形:输出下列图形:*very goodvery good*#include#include void main()void main()printfprintf(*n);(*n);printfprintf(very good
21、n);(very good n);printfprintf(*n);(*n);例例例例2 2:#include#include void main()void main()/*/*主函数主函数主函数主函数 */intint a a,b b,sumsum;/*/*定义三个整型变量定义三个整型变量定义三个整型变量定义三个整型变量 */a=2 a=2;b=3 b=3;/*/*为为为为变量变量变量变量a a,b b赋值赋值赋值赋值 */sum=a+b sum=a+b;printf(printf(sumsum is is%d%dnn,sumsum);说明:说明:说明:说明:、“/*/*/*/*/*/*/
22、*/”表示注释部分,以表示注释部分,以表示注释部分,以表示注释部分,以“/*/*/*/*”开始,以开始,以开始,以开始,以“*/”结束;结束;结束;结束;注释注释注释注释只是对程序的说明,仅起帮助阅读程序的作用,不影响程序的运行,只是对程序的说明,仅起帮助阅读程序的作用,不影响程序的运行,只是对程序的说明,仅起帮助阅读程序的作用,不影响程序的运行,只是对程序的说明,仅起帮助阅读程序的作用,不影响程序的运行,可以放在程序的任意位置。注意不能嵌套注释可以放在程序的任意位置。注意不能嵌套注释可以放在程序的任意位置。注意不能嵌套注释可以放在程序的任意位置。注意不能嵌套注释(即即即即/*/*/*/*/*
23、/*/*/*/*/*/*/*/)*/)*/)*/)。、定义变量后,系统就为其、定义变量后,系统就为其、定义变量后,系统就为其、定义变量后,系统就为其分配相应大小的存储单元分配相应大小的存储单元分配相应大小的存储单元分配相应大小的存储单元,用于存放其,用于存放其,用于存放其,用于存放其值。语言要求变量必须值。语言要求变量必须值。语言要求变量必须值。语言要求变量必须先定义,后使用先定义,后使用先定义,后使用先定义,后使用。a a a ab b b bsumsumsumsum、“=”为赋值运算符,把为赋值运算符,把为赋值运算符,把为赋值运算符,把“=”右边表达式的值赋值给左边的变量右边表达式的值赋值
24、给左边的变量右边表达式的值赋值给左边的变量右边表达式的值赋值给左边的变量sum is 5sum is 5eg102.c235、“%d%d%d%d”表示以表示以表示以表示以“十进制整数十进制整数十进制整数十进制整数”形式输出数据形式输出数据形式输出数据形式输出数据,输出时代以一个十输出时代以一个十输出时代以一个十输出时代以一个十进制整数值,该值由进制整数值,该值由进制整数值,该值由进制整数值,该值由“,”后边对应的变量或表达式提供后边对应的变量或表达式提供后边对应的变量或表达式提供后边对应的变量或表达式提供更常用的形式:更常用的形式:更常用的形式:更常用的形式:#include#include
25、void main()void main()intint a,b,sum;a,b,sum;scanf(%d%d,&a,&bscanf(%d%d,&a,&b););sum=a+b;sum=a+b;printf(sumprintf(sum is%dn,sum)is%dn,sum);说明:说明:说明:说明:、scanfscanf是是是是C C语言的语言的语言的语言的标准输入函数标准输入函数标准输入函数标准输入函数,“&”的含义是得到后面变的含义是得到后面变的含义是得到后面变的含义是得到后面变量的地址。即将输入的数量的地址。即将输入的数量的地址。即将输入的数量的地址。即将输入的数按前面指定的格式按前面
26、指定的格式按前面指定的格式按前面指定的格式给后面指定的变量给后面指定的变量给后面指定的变量给后面指定的变量、“%d%d”表示输入输出一个整数。表示输入输出一个整数。表示输入输出一个整数。表示输入输出一个整数。eg102.c可以是任意两个整可以是任意两个整可以是任意两个整可以是任意两个整数,即程序执行前数,即程序执行前数,即程序执行前数,即程序执行前不能确定不能确定不能确定不能确定a a、b b的值的值的值的值例例例例3 3 3 3:求任意:求任意:求任意:求任意2 2 2 2个整数中的较大数个整数中的较大数个整数中的较大数个整数中的较大数用函数实现比较大小用函数实现比较大小用函数实现比较大小用
27、函数实现比较大小#include#include void main()void main()intint a,b,c;a,b,c;scanf(%d%dscanf(%d%d,&a,&b);,&a,&b);c=c=max(a,max(a,b)b);/*/*函数调用函数调用函数调用函数调用*/printf(maxprintf(max=%dn,c);=%dn,c);intint max(intmax(int x,x,intint y)y)intint z;z;if(xy)z=x;if(xy)z=x;else z=y;else z=y;return(z);return(z);1.4.2 程序的基本结构
28、#include#include#include#include#define#define /*/*预处理命令预处理命令预处理命令预处理命令*/void main()void main()声明部分声明部分声明部分声明部分 /*/*定义本函数中用到的变量定义本函数中用到的变量定义本函数中用到的变量定义本函数中用到的变量*/执行部分执行部分执行部分执行部分 /*/*完成本函数功能的语句完成本函数功能的语句完成本函数功能的语句完成本函数功能的语句*/其他函数其他函数其他函数其他函数 声明部分声明部分声明部分声明部分 执行部分执行部分执行部分执行部分 1 1、一个程序由一个或多个函数构成。程序中应至
29、少包含一、一个程序由一个或多个函数构成。程序中应至少包含一、一个程序由一个或多个函数构成。程序中应至少包含一、一个程序由一个或多个函数构成。程序中应至少包含一个个个个mainmain函数。函数。函数。函数。函数是语言的基本单位函数是语言的基本单位函数是语言的基本单位函数是语言的基本单位(函数式语言)(函数式语言)(函数式语言)(函数式语言)。2 2、一个程序、一个程序、一个程序、一个程序总是从总是从总是从总是从mainmain函数开始执行函数开始执行函数开始执行函数开始执行,而不论,而不论,而不论,而不论mainmain函数在函数在函数在函数在整个程序中的位置如何;一般说来,又随着整个程序中的
30、位置如何;一般说来,又随着整个程序中的位置如何;一般说来,又随着整个程序中的位置如何;一般说来,又随着mainmain函数的结束而函数的结束而函数的结束而函数的结束而整个程序结束。整个程序结束。整个程序结束。整个程序结束。3 3、被调用的函数可以是系统提供的库函数,也可以是用户根、被调用的函数可以是系统提供的库函数,也可以是用户根、被调用的函数可以是系统提供的库函数,也可以是用户根、被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己编写的函数。据需要自己编写的函数。据需要自己编写的函数。据需要自己编写的函数。4 4、语言本身没有输入输出语句,、语言本身没有输入输出语句,、语言本身没有
31、输入输出语句,、语言本身没有输入输出语句,输入和输出操作由库函数输入和输出操作由库函数输入和输出操作由库函数输入和输出操作由库函数scanfscanf和和和和printfprintf等函数来完成等函数来完成等函数来完成等函数来完成,对输入输出实行函数化。,对输入输出实行函数化。,对输入输出实行函数化。,对输入输出实行函数化。5 5、每个语句和数据定义的最后、每个语句和数据定义的最后、每个语句和数据定义的最后、每个语句和数据定义的最后必须有一个分号必须有一个分号必须有一个分号必须有一个分号;分号是语;分号是语;分号是语;分号是语句的必要组成部分。句的必要组成部分。句的必要组成部分。句的必要组成部
32、分。函数的构成:函数的构成:函数的构成:函数的构成:一个函数由两部分构成:一个函数由两部分构成:一个函数由两部分构成:一个函数由两部分构成:1 1 1 1、函数首部函数首部函数首部函数首部:即函数的第一行。包括函数名、函数类型、函数参数:即函数的第一行。包括函数名、函数类型、函数参数:即函数的第一行。包括函数名、函数类型、函数参数:即函数的第一行。包括函数名、函数类型、函数参数(形参形参形参形参)名、参数类型。名、参数类型。名、参数类型。名、参数类型。intint max(intmax(int x,x,intint y)y)注意:一个函数名后面必须跟注意:一个函数名后面必须跟注意:一个函数名后
33、面必须跟注意:一个函数名后面必须跟“()()()()”作为函数的标志:作为函数的标志:作为函数的标志:作为函数的标志:main()main()main()main()2 2 2 2、函数体函数体函数体函数体:即函数首部下面:即函数首部下面:即函数首部下面:即函数首部下面“”内的部分内的部分内的部分内的部分函数体内一般又分为两部分:函数体内一般又分为两部分:函数体内一般又分为两部分:函数体内一般又分为两部分:、变量定义(数据声明)部分变量定义(数据声明)部分变量定义(数据声明)部分变量定义(数据声明)部分:定义在本:定义在本:定义在本:定义在本函数中用到的变量或数组的数据类型;函数中用到的变量或
34、数组的数据类型;函数中用到的变量或数组的数据类型;函数中用到的变量或数组的数据类型;、执行部分执行部分执行部分执行部分:由若干语句组成,完成函数:由若干语句组成,完成函数:由若干语句组成,完成函数:由若干语句组成,完成函数所规定的功能。所规定的功能。所规定的功能。所规定的功能。intint max(intmax(int x,x,intint y)y)intint z;z;if(xy)z=x;if(xy)z=x;else z=y;else z=y;return(z);return(z);第二章数据类型及其运算2.1标识符标识符:在C语言中,有许多符号的命名,如变量名、函数名、数组名等,都必须遵守
35、一定的规则,按此规则命名的符号称为标识符。1、标识符的命名规则:由字母、数字和下划线(_)组成。第一个字符必须是字母或下划线,不是是数字。区分字母的大小写。有效名称有效名称principalcost_pricemarks_3lastnamecity无效名称无效名称123ratecurrency$discount%zipcode2、标识符、标识符分类:分类:关键字:关键字:c c语言规定了一批标识符,他们在语言规定了一批标识符,他们在c c语语言中代表着固定的含义,言中代表着固定的含义,不能另做它用。不能另做它用。标识数据类型的关键字:intlongshortcharfloatdoublesig
36、nedunsignedstructunionenumvoidconst标识存储类型的关键字:autostaticregisterexterntypedef标识流程控制的关键字:ifelseswitchcasedefaultforwhiledobreakcontinuereturngoto标识运算符的关键字:sizeof2、标识符、标识符分类:分类:预定义标识符:一类具有特殊含义的标识符,预定义标识符:一类具有特殊含义的标识符,用于标识库函数名和编译预处理命令。用于标识库函数名和编译预处理命令。c语言语法允许用户把这类标识符另做它用,但语言语法允许用户把这类标识符另做它用,但是这些标识是这些标识
37、 符将失去系统规定的原意。符将失去系统规定的原意。(可以(可以用但最好不用)用但最好不用)编译预处理命令:编译预处理命令:define include ifdef ifndef endif 等。等。标准库函数:标准库函数:scanf printf getchar putchar等等用户标识符:由用户根据需要定义的标识符用户标识符:由用户根据需要定义的标识符称为用户标识符。称为用户标识符。图图2-1 数据类型分类数据类型分类短整型(短整型(shortshort)整整 型(型(intint)长整型(长整型(longlong)浮点型(实型)浮点型(实型)单精度型(单精度型(float)双精度型(双精
38、度型(double)字符类型(字符类型(char)整型整型 基本类型基本类型构造类型构造类型数组类型数组类型 结构体类型(结构体类型(struct)共用体类型(共用体类型(union)指针类型指针类型 空类型(空类型(void)数据数据类型类型2.2 数据及数据类型 枚举型枚举型2.3、常量 直接直接常量常量十进制数:十进制数:八八进制数:进制数:十六十六进制数:进制数:符号常量符号常量常常量量字符常量字符常量整型整型常量常量以非以非0开始的数,如:开始的数,如:220、-560、+369等。等。以以0开始的数,如:开始的数,如:06、0106、0677等。等。以以0X或或0 x开始的数:开始
39、的数:0X123、0 xab、0X4e浮点型常量浮点型常量(十进制十进制实数实数)小数小数形式形式指数指数形式形式由数字、小数点以及必要时的正负号组成。由数字、小数点以及必要时的正负号组成。如:如:29.56、-56.33、0.056、.056、0.0等。等。相当于科学计数法,将形如相当于科学计数法,将形如a10b的数值表的数值表示成如下形式:示成如下形式:aEb 或或 aeb如:如:2.956E3、-0.789e8、.792e-6等。等。用两个英文单引号限定的一个字符,如:用两个英文单引号限定的一个字符,如:a、9、Z等。等。占一个字节的存储空间,存放的是其占一个字节的存储空间,存放的是其A
40、SCII码码值值(一个整数一个整数)另外,还有以另外,还有以“”开头的转义字符常数,如开头的转义字符常数,如n。(。(见表见表2-1)字符串字符串 常量常量用英文双引号限定的一个字符序列,如:用英文双引号限定的一个字符序列,如:Hello world、aSTUDY0占用一段连续存储单元,每个字符占一个字节。尾部加字符串占用一段连续存储单元,每个字符占一个字节。尾部加字符串结束标志符结束标志符0,如字符串如字符串STUDY的存储形式的存储形式:定义格式:定义格式:#define 符号常量名符号常量名 常量常量 举例:举例:#definePI3.14159(例2-1)常量是在程序运行过程中其值不能
41、被改变的量常量是在程序运行过程中其值不能被改变的量整型常量注意以下几点:整型常量注意以下几点:(1)在)在C程序中,只有十进制数可以是负数,程序中,只有十进制数可以是负数,而八进制和十六进制数只能是正数。而八进制和十六进制数只能是正数。(2)在)在C语言中,在一个整型常量的后面加语言中,在一个整型常量的后面加上字母上字母L或或l,表示长整型数。,表示长整型数。(3)十进制转换为)十进制转换为N进制的方法进制的方法-除除N取余取余倒排倒排(4)N进制转换为十进制的方法进制转换为十进制的方法-从右向左从右向左按权展开相加。按权展开相加。实型常量注意以下几点:实型常量注意以下几点:(1)小数形式必须
42、有小数点。)小数形式必须有小数点。12.12(2)指数形式:)指数形式:e的前后必须有数字,比且的前后必须有数字,比且e的后面必须为整数(正数或负数)的后面必须为整数(正数或负数)字符型常量注意以下几点:字符型常量注意以下几点:(1)字符常量只能用单引号括起来,不能用)字符常量只能用单引号括起来,不能用双引号或其他括号双引号或其他括号(2)字符常量只能是单个字符,不能是字符)字符常量只能是单个字符,不能是字符串串(3)字符型常量可以参与数值运算,此时用)字符型常量可以参与数值运算,此时用的是字符的的是字符的ASCII码进行运算的。码进行运算的。例如:例如:5+10 5+10(4)ddd和和xh
43、h中的中的ddd和和hh分别为八进制分别为八进制和十六进制的和十六进制的ASCII代码。如代码。如101和和X41都都表示字母表示字母A,字符型常量与字符串常量的区别:字符型常量与字符串常量的区别:(1)字符型常量是用单引号括起来的,字符)字符型常量是用单引号括起来的,字符串常量使用双引号括起来的。串常量使用双引号括起来的。A “A”(2)字符常量只能是单个字符,字符串常量)字符常量只能是单个字符,字符串常量则可以含零个或多个字符。则可以含零个或多个字符。(3)可以把一个字符常量赋值给一个字符变)可以把一个字符常量赋值给一个字符变量,但不能把一个字符串常量赋给一个字符量,但不能把一个字符串常量
44、赋给一个字符变量。变量。注意:在注意:在C语言中没有相应的字符串变量,但语言中没有相应的字符串变量,但可以用一个字符数组来存放一个字符串变量。可以用一个字符数组来存放一个字符串变量。(4)字符型常量占一个字节的内存空间,字)字符型常量占一个字节的内存空间,字符串常量占的内存字节数等于字符串中字符符串常量占的内存字节数等于字符串中字符个数加个数加1,增加的一个字节用来存放字符串结,增加的一个字节用来存放字符串结束符束符0(ASCII码为码为0)例如:例如:a在内存中占一个字节,在内存中占一个字节,”a”在在内存中占两个字节。内存中占两个字节。表2-1转义字符表字符形式字符形式功功 能能n换换行,
45、将当前位置移到下一行开行,将当前位置移到下一行开头头t水平跳格,跳到下一个水平跳格,跳到下一个Tab位置位置b退格,将当前位置移到前一列退格,将当前位置移到前一列r回回车车,将当前位置移到本行开,将当前位置移到本行开头头反斜杠字符反斜杠字符“”单单引号字符引号字符双引号字符双引号字符ddd13位位8进进制数表示的制数表示的对应对应ASCII码码字符字符xhh12位位16进进制数表示的制数表示的对应对应ASCII码码字符字符这样实现:这样实现:printf(I don t like.);例如输出:例如输出:I dont like./*程序程序eg2.c*/#include#define PI 3
46、.14159 /*定义符号常量定义符号常量PI*/void main()float r=16.7;/*定义变量定义变量r并赋初值并赋初值*/float l,s;/*定义圆周长和圆面积的变量定义圆周长和圆面积的变量*/l=2*PI*r;/*计算圆周长计算圆周长*/s=PI*r*r;/*计算圆面积计算圆面积*/printf(L=%f S=%fn,l,s);/*输出圆周长、面积的计算结果输出圆周长、面积的计算结果*/例例2-1已知圆的半径,编写程序计算圆的周长和面积。已知圆的半径,编写程序计算圆的周长和面积。使用符号常量的好处:使用符号常量的好处:含义清楚。含义清楚。在需要改变一个常量时能做到在需要
47、改变一个常量时能做到“一改全改一改全改”。注意:注意:(1)符号常量在使用之前必须先定义。)符号常量在使用之前必须先定义。(2)符号常量一般用大写)符号常量一般用大写变量的特点:变量的特点:变量的值可以改变;变量的值可以改变;变量具有特定的变量具有特定的数据类型数据类型;根据数据类型为其分配存储单元;根据数据类型为其分配存储单元变量有相应的内存空间;变量有相应的内存空间;变量的值存储在它所占的存储空间中。变量的值存储在它所占的存储空间中。2.4、变量 变量是在程序运行过程中其值可以被改变的量变量是在程序运行过程中其值可以被改变的量变量变量变量名变量名存储单元存储单元标识标识值值人人房间房间房间
48、号房间号具体的屋子具体的屋子常量常量变量变量变量名变量名存储单元存储单元变量就是存储常量的量。变量就是存储常量的量。变量的分类(变量的分类(分类、标识符、所占字节数分类、标识符、所占字节数):):(1)整型变量)整型变量(2)实型变量)实型变量(3)字符型变量)字符型变量类类型型说说明明内存内存单单元数元数取取值值范范围围char字符型字符型1个字个字节节(8位)位)-2727-1int整型整型4个字个字节节(32位)位)-231231-1short短整型短整型2个字个字节节(16位)位)-215215-1long 长长整型整型4个字个字节节(32位)位)-231231-1unsigned无符
49、号型无符号型同有符号型同有符号型无无负负数,没有符号位。数,没有符号位。float单单精度精度实实型型4个字个字节节(32位)位)-3.4E+383.4E+38(7个有效位个有效位)double双精度双精度实实型型8个字个字节节(64位)位)-1.7E+3081.7E+308(15-16个有效位个有效位)表表2-2 变量的分类变量的分类eg3变量定义的一般格式为:变量定义的一般格式为:数据类型标识符变量名表;数据类型标识符变量名表;说明说明:()数据类型符用来说明变量的数据类型,它可以()数据类型符用来说明变量的数据类型,它可以是语言提供的任意一种类型。是语言提供的任意一种类型。()变量名表可
50、以是一个变量,也可以是多个变量,()变量名表可以是一个变量,也可以是多个变量,多个变量之间用逗号分隔。多个变量之间用逗号分隔。(3 3)程序中用到的变量,必须)程序中用到的变量,必须“先定义后使用先定义后使用”。变量的值:变量的值:变量赋值的一般格式为:变量赋值的一般格式为:变量名变量名=表达式;表达式;变量的赋值一般有以下几种情况变量的赋值一般有以下几种情况:()在定义变量的同时为其赋值,也称为初始化。()在定义变量的同时为其赋值,也称为初始化。例如:例如:int x=12,y=9;()先定义变量后赋值。()先定义变量后赋值。例如例如:int x,y;x=12;y=19;或或x=y=12;i