C语言教学课件_第1页
C语言教学课件_第2页
C语言教学课件_第3页
C语言教学课件_第4页
C语言教学课件_第5页
已阅读5页,还剩334页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C 语言程序设计 西北大学西北大学信息学院信息学院 计算机文化基础课教学课件计算机文化基础课教学课件 第一章 语言简介 第二章 数据类型、运算符和表达式第三章语句与流程控制第四章数组第五章函数与程序结构第六章 指 针第七章结构体与共用体第八章 文件概述 第九章 编译预处理C 程序设计一、C语言的发展语言的发展 与计算机对话是从低级语言开与计算机对话是从低级语言开始逐步发展起来的。始逐步发展起来的。 第一章第一章 语言简介语言简介高级语言FORTRAN语言ALGOL 60语言COBOL语言 BASIC语言 PASCAL语言 C/C+语言 ADA语言 PROLOGPROLOG语言语言Java语言

2、机器语言机器语言低级语言低级语言 汇编语言汇编语言它是使用最早的高级语言它是使用最早的高级语言, ,广泛用于科学计算。广泛用于科学计算。一种交互式语言,由于它简单易懂,具有交互功能,成一种交互式语言,由于它简单易懂,具有交互功能,成为微机上配置最广泛的高级语言。为微机上配置最广泛的高级语言。是面向问题的高级语言,它离硬件比较远,不宜用来是面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序。编写系统程序。 使用了十分接近于自然语言英语的语句,很容易理解,使用了十分接近于自然语言英语的语句,很容易理解,在事务处理中有着广泛的应用。在事务处理中有着广泛的应用。第一个系统地体现了结构化程序设计概

3、念的高级语言。第一个系统地体现了结构化程序设计概念的高级语言。 移植力强,编译质量高,可直接访问硬件的高级语言。移植力强,编译质量高,可直接访问硬件的高级语言。便于实现嵌入式应用的高级语言。便于实现嵌入式应用的高级语言。一种逻辑程序设计语言,广泛使用于人工智能领域。一种逻辑程序设计语言,广泛使用于人工智能领域。面向对象程序设计语言。面向对象程序设计语言。 C语言是广泛流行的计算机高级语言,语言是广泛流行的计算机高级语言,C语言已不仅用来语言已不仅用来编写系统软件,也可用来编写应用软件。以前操作系统及其编写系统软件,也可用来编写应用软件。以前操作系统及其它系统软件主要是用汇编语言来编写,由于汇编

4、语言依赖于它系统软件主要是用汇编语言来编写,由于汇编语言依赖于机器硬件,程序的机器硬件,程序的可读性可读性和可和可移植性移植性都很差。都很差。 ALGOL 60 (1960年年) CPL语言语言 (1963年年)C语言的发展语言的发展 BCPL 语言语言(1967年年) B语言语言(1970年年) C语言语言(19721973年年)二、二、 C语言的特点语言的特点编程限制少,程序设计自由度大编程限制少,程序设计自由度大 。 可直接对硬件操作,可直接对硬件操作,C C语言允许直接访问物理地址,能语言允许直接访问物理地址,能进行位操作进行位操作 。数据类型丰富,提供了整型、实型、字符型、数组类型、

5、数据类型丰富,提供了整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等数据类型。指针类型、结构体类型、共用体类型等数据类型。具有结构化的控制语句具有结构化的控制语句 。语言简洁、紧凑,使用方便、灵活。语言简洁、紧凑,使用方便、灵活。运算符丰富,适用的范围也很广泛。运算符丰富,适用的范围也很广泛。生成目标程序质量高,程序执行效率高。生成目标程序质量高,程序执行效率高。具有很好的可移植性。具有很好的可移植性。三、三、C语言的程序结构及特点语言的程序结构及特点main()main() printf(printf(ThisThis is a c program .n is a c pro

6、gram .n) ); 此程序的此程序的结果结果是输出下面的一行信息:是输出下面的一行信息:例 1This is a c program .This is a c program . mainmain() () / /* *求两数之和求两数之和* */ / intint a,b,sum a,b,sum; / /* *定义变量定义变量* */ / a=123 a=123;b=456b=456; / /* *给变量赋值给变量赋值* */ / sum=a+b sum=a+b; printfprintf( (sumsum is %dn is %dn,sum),sum); / /* *输出结果输出结果*

7、 */ / 例例 2 2 程序的功能是求两个整数的和,并将其输出。程序的功能是求两个整数的和,并将其输出。 程序的结果是输出如下一行信息:程序的结果是输出如下一行信息:例例 2sum is 579 例例 3 main() / /* *主函数主函数* */ / intint max() max(); / /* *函数说明函数说明* */ / intint a,b,c a,b,c; / /* *定义变量定义变量* */ / scanf(%d,%d,&a,&b scanf(%d,%d,&a,&b) ); / /* *输入变量输入变量a a和和b b* */ / c=m

8、ax(a,b) c=max(a,b);/ /* *调用调用maxmax函数,将返回值赋给函数,将返回值赋给c c* */ / printf( printf(maxmax=%dn=%dn,c),c); / /* *输出输出c c的值的值* */ / intint max(x,y) max(x,y) / /* * max max函数的定义,函数值为整型,函数的定义,函数值为整型,x,yx,y为形式参数为形式参数* */ / int int x,y x,y; / /* *对形参对形参x,yx,y作类型定义作类型定义* */ / int int z z; / /* *定义定义maxmax中用到的变量中

9、用到的变量z z* */ / if (xy) z=x if (xy) z=x; else z=yelse z=y; return(z) return(z) ;/ /* *将将z z的值作为函数的值作为函数maxmax返回值带回调用处返回值带回调用处* */ / C函数从函数从main()开始执行。开始执行。变量定义和语句之变量定义和语句之后必须有一个分号后必须有一个分号(;)。(;)。一行内可写几个语一行内可写几个语句,一个语句可分写句,一个语句可分写在多行。在多行。可以用可以用/ /* * */ /作作注释。注释。语言没有输入输语言没有输入输出语句。出语句。此程序的执行结果如下:此程序的执行

10、结果如下:10,20(输入(输入10,20)max=20(输出(输出c的值)的值)一个函数是由函数的说明部分和函数体两部分组成。一个函数是由函数的说明部分和函数体两部分组成。 函数的说明部分函数的说明部分 函数类型函数类型 函数名函数名 函数参数函数参数 形参类型形参类型 形参形参int max(x,y)int x,y; C 程序是由函数组成的,每一个源程序至少包含一程序是由函数组成的,每一个源程序至少包含一个个main()函数,也可以包含一个函数,也可以包含一个main函数和若干个其函数和若干个其它函数。它函数。 因此,函数是因此,函数是C程序的基本单位。被调用的函数可以是系统程序的基本单位

11、。被调用的函数可以是系统提供的库函数,也可以是用户自定义的函数。提供的库函数,也可以是用户自定义的函数。 函数体函数体 (括在一对大括弧括在一对大括弧-中的部分)中的部分) 变量定义变量定义(int(int a,b,c;) a,b,c;) 函数体函数体 执行部分执行部分( (由若干语句组成)由若干语句组成)特例:特例:空函数空函数 dump() 四、源程序的执行过程四、源程序的执行过程 源程序:源程序:用高级语言所提供的语句和函数写出的语用高级语言所提供的语句和函数写出的语 句序列叫源程序。句序列叫源程序。 程序从输入和运行一般需如下几个步骤:程序从输入和运行一般需如下几个步骤: 编编 辑辑

12、编编 译译 连接连接运行运行输入输入程序程序获得源获得源程序程序 机器码机器码 文件文件 可执行可执行 文件文件f.cf.objf.exe 从编辑到执行的过程示意图从编辑到执行的过程示意图五、五、在在Turbo CTurbo C下运行下运行C C程序的步骤程序的步骤 1 1、在在Turbo CTurbo C下运行下运行C C程序的步骤程序的步骤调用调用Turbo CTurbo C程序程序(Turbo C (Turbo C 的启动的启动) ): 在在windowswindows下:下:tc 的运行和一般文件的运行方法相同的运行和一般文件的运行方法相同 (快捷方式、菜单方式、命令方式均可)(快捷方

13、式、菜单方式、命令方式均可) 在在DOSDOS提示符下:提示符下:键入键入 tc并按回车,即可运行并按回车,即可运行Turbo C 编辑源文件:编辑源文件: 在在Turbo CTurbo C窗口中,根据需要输入或者修改源文件。窗口中,根据需要输入或者修改源文件。 退出退出Turbo CTurbo C: 按下按下“ALT+X”ALT+X”键,退出键,退出Turbo CTurbo C的集成环境,的集成环境, 回到操作系统状态。回到操作系统状态。编译源程序:编译源程序: 按按“F9”键可对当前打开的源文件进行编译键可对当前打开的源文件进行编译 。运行:运行: 按按 “ F 1 0 ” 键 , 启 动

14、 系 统 菜 单 , 将 光 标 移 到键 , 启 动 系 统 菜 单 , 将 光 标 移 到“RUN”, 按回车键按回车键 。2 2、Turbo CTurbo C集成开发环境集成开发环境 在在TCTC中程序的执行过程如图中程序的执行过程如图编编 辑辑编编 译译连接连接运行运行输入输入程序程序源程序源程序机器码机器码文件文件可执行可执行文件文件f.cf.objf.exeALT+F9Ctrl+F9从编辑到执行的操作过程示意图从编辑到执行的操作过程示意图Turbo C 2.0的初启屏幕如图的初启屏幕如图 File Edit Run Compile Project Options Debug Bre

15、ak/watchLine 1Col 1Insert Indent Tab Fill Unindent C:NONAME.CF1-HelpF5-ZoomF6-Switch F7-Trace F8-Step F9-Make F10-MenuEditMessageTurbo C的主屏幕的主屏幕文件菜单(文件菜单(File)Load F3Pick Alt-F3 NewSave F2Write toDirectoryChange dirOS shellQuit Alt-X文件菜单选择项文件菜单选择项编辑命令(编辑命令(EditEdit) 运行菜单(运行菜单(Run) 编译菜单(编译菜单(Compile)

16、 Run Ctrl-F9Program reset Ctrl-F2Go to cursor F4Trace into F7 Step over F8User screen Alt-F5 运行菜单选项运行菜单选项Compile to OBJMake EXE fileLink EXE fileBuild allPrimary C fileGet Info 编译菜单选项编译菜单选项工程菜单(工程菜单(Project) 选择项菜单(选择项菜单(Options) CompilerLinkerEnviromentDirectoriesArgumentsSave optionsRetrieve option

17、s选择项菜单选择项菜单Include directories: C:TCINCLUDELibrary directories: C:TCLIBOutput directory: Turbo C directory: C:TCPick file name:Current pick file:路径设置窗口路径设置窗口Project NameBreak make onAuto dependenciesClear ProjectClear Message调试菜单(调试菜单(Debug) (8) 断点断点/观测菜单观测菜单(Break/watch) Evaluate Ctrl-F4Call stack

18、Ctrl-F3Find function Refresh displayDisplay swappingSource debugging调试菜单选择项调试菜单选择项Add watch Ctrl-F7Delete watchEdit watch Remove all watchesToggle breakpoint Ctrl-F8Clear all breakpointsView next breakpoint断点断点/监测菜单选择项监测菜单选择项参考第参考第8页页第二章第二章数据类型、运算符和表达式数据类型、运算符和表达式一、一、 C语言语言的数据类型的数据类型整型整型字符型字符型实型(浮点型

19、)实型(浮点型)枚举类型枚举类型数组类型数组类型结构体类型结构体类型共用体类型共用体类型单精度型单精度型双精度型双精度型指针类型指针类型空类型空类型构造类型构造类型基本类型基本类型数据类型数据类型C C语言中有以下几个基本数据类型:语言中有以下几个基本数据类型:charchar( (字符型字符型) ) intint( (整型整型) )floatfloat( (单精度浮点型单精度浮点型) ) doubledouble( (双精度浮点型双精度浮点型) )其中:其中:charchar、intint、floatfloat、doubledouble是关键字是关键字。 修饰符修饰符long一般指存储空间相

20、对一般指存储空间相对int型型扩大一倍扩大一倍,而,而short一般指存储空间相对一般指存储空间相对int型型缩小一倍缩小一倍。但不同。但不同C编译系统具体编译系统具体规定是不同的。如:规定是不同的。如:Turbo C中的中的int与与short int 所占用内存所占用内存位数一样位数一样(都为都为16个二进制位个二进制位) 另外,还有另外,还有4 4个修饰词可个修饰词可以出现在上面几个基本类以出现在上面几个基本类型之前,从而改变原来的型之前,从而改变原来的含义,含义,它们是:它们是:shortshort( (短型短型) )longlong( (长型长型) )signedsigned( (有

21、符号有符号) ) unsignedunsigned( (无符号无符号) )short intshort int 表示短整型。表示短整型。 unsigned char unsigned char 表示无符号字符型。表示无符号字符型。 long intlong int 表示长整型。表示长整型。 unsigned short intunsigned short int 表示无符号短整型。表示无符号短整型。 例如:例如:Turbo CTurbo C语言语言基本数据类型、字宽和范围基本数据类型、字宽和范围 表表9.1 9.1 基本数据类型、字宽和范围基本数据类型、字宽和范围类型类型所占位数所占位数数的范

22、围数的范围signed charsigned char8 8-128-128127127unsigned charunsigned char8 80 0255255signed intsigned int1616-32768-327683276732767short intshort int 1616-32768-327683276732767long intlong int 3232-2147483648-214748364821474836472147483647unsigned intunsigned int 16160 06553565535unsigned short intunsi

23、gned short int 16160 06553565535unsigned long intunsigned long int 32320 042949672954294967295floatfloat3232约约6 67位有效数字位有效数字doubledouble6464约约15151616位有效数字位有效数字在在IBM PC MS-CIBM PC MS-C中,单精度范围:中,单精度范围:1010-38-38到到10103838 双精度范围:双精度范围:10-308到到10308 二、二、 常量常量常量:程序中其值不发生变化的量。常量:程序中其值不发生变化的量。语言中有语言中有符号常量

24、符号常量整型整型实型实型十进制十进制八进制八进制(由数字开头由数字开头)十六进制十六进制( 由由0 x 或或0X 开头开头)常用形式常用形式(3.14159 , -0.555 , .666)指数形式指数形式(0.55e5 , 3.33E-3 , 4e+2(用单引号括起来的一个字符。如:用单引号括起来的一个字符。如: a, D)(用双引号括起来的一串字符。如:用双引号括起来的一串字符。如:abcd)( (用一个标识符代表一个常量用一个标识符代表一个常量) )注意:注意: a 和和a的区别的区别数值常量数值常量字符常量字符常量字符串常量字符串常量1、数值常量、数值常量是通常使用的常数,包括整型和实

25、型常量。是通常使用的常数,包括整型和实型常量。 C语言程序中可以使用语言程序中可以使用十进制十进制、八进制八进制和和十六进制十六进制来表示来表示整型常量。在使用时不能有小数部分。整型常量。在使用时不能有小数部分。 十进制整型常量十进制整型常量,由正、负号和由正、负号和0至至9十个数字组成,没有十个数字组成,没有小数部分。小数部分。(1) 整型常量整型常量int型型 32、345、12 、-65、-32768、32767long int型型 234L、234567453l、32L、32l、 -2147483648L、2147483647lunsigned int型型 345u、238U、6553

26、5uunsigned long int型型 256ul、12345678UL、 4294967295uL如如 :八进制整型常量:八进制整型常量:037u、0364L、0567453ul十六进制整型常量:十六进制整型常量: 0 x1f 、0 x1FL 、0 xFul、0 x10L指数表示法:指数表示法:方法是在小数表示法后面加字母方法是在小数表示法后面加字母E(或或e)表示指数。表示指数。 1e-2 0.5E10 35.56E-3 7.e-2 (都是(都是double型常量)型常量)(2)实型常量)实型常量 实型常量就是我们日常使用的带小数的常数,也叫浮点数。实型常量就是我们日常使用的带小数的常

27、数,也叫浮点数。在在C语言中,只有十进制表示。它有两种表示形式:小数表示法语言中,只有十进制表示。它有两种表示形式:小数表示法和指数表示法。和指数表示法。小数表示法:小数表示法:它由整数和小数两部分组成,这两部分可以省略其它由整数和小数两部分组成,这两部分可以省略其中的一个部分,但不能同时都省略(小数点不能省略)。中的一个部分,但不能同时都省略(小数点不能省略)。 12.35 35. .689 (都是都是double型常量)型常量)整型数:整型数:125 , 0125 , 0 x125 , -35 实型数:实型数:3.14159 , -555.6 , 45.8E-4 , 8.88e+18例例1

28、注意:注意:指数部分可正可负,但必须是整数。指数部分可正可负,但必须是整数。 在浮点数常量的后面用字母在浮点数常量的后面用字母F(或或f)表示表示float(单精度浮点单精度浮点)类型。类型。 如:如:1e-2f表示表示float型。型。 如果在浮点数常量的后面不加字母,则表示是一个如果在浮点数常量的后面不加字母,则表示是一个double(双双精度浮点精度浮点)型常量。型常量。 2.1e-2 0.689 (都是都是double型常量)型常量)而字母而字母L(或或l)表示表示long double(长精度浮点长精度浮点)型型 , 如:如:3.2L表示表示long double型。型。如:如:e1

29、2 , .e43 , 0.25e4.5 , e 等是错误的。等是错误的。注意:注意:用指数形式表示的浮点数必须有尾数,指数部分必须是整数用指数形式表示的浮点数必须有尾数,指数部分必须是整数。 字符常量是由一个字母或转义字符两边用单引号括起来表示,字符常量是由一个字母或转义字符两边用单引号括起来表示,例如:例如: a 、DD、 n 等。等。字符常量在计算机内存放的值,为该字符字符常量在计算机内存放的值,为该字符ASCII编码值。编码值。例如:例如:0其编码值为其编码值为48,而不对应数值,而不对应数值0。 A的的ASCII码值为码值为65。 八进制八进制用用 dddddd 表示,其中表示,其中d

30、ddddd代表三位八进制数。代表三位八进制数。例如:例如: 101 代表代表字母字母 A ,60 代表代表字符字符 0(零零) )。2、字符常量、字符常量字符常量也可以用它的字符常量也可以用它的ASCII码值来表示,具体表示方法为:码值来表示,具体表示方法为:十六十六进制用进制用 xhh 表示,其中表示,其中hhhh代表两位十六进制数。代表两位十六进制数。例如:例如: x41 代表代表字母字母 A ,x30 代表代表字符字符 0(零零) )。字符形式功能字符形式功能n n 回车换行(回车换行(EnterEnter)t t 横向跳格(即跳到下一个输出区)横向跳格(即跳到下一个输出区) vv 竖向

31、跳格竖向跳格 b b 退格(退格(BackspaceBackspace) rr 回车回车 f f 走纸换页走纸换页 反斜杠字符反斜杠字符“” 单引号字符单引号字符()() ” ” 双双引号字符引号字符()() ddd ddd 1 1到到3 3位位8 8进制数所代表的字符进制数所代表的字符 xhhxhh 1 1到到2 2位位1616进制数所代表的字符进制数所代表的字符转义字符:转义字符:常用反斜线常用反斜线 “”开头后跟一个字符,但含义改变。开头后跟一个字符,但含义改变。见下表:见下表:例如:例如: How are you! 表示字符串表示字符串 How are you! 。 表示空字符串。表示

32、空字符串。 a 表示字符串表示字符串a。字符串中可以包含空字符、空格字符、转义字符和其它字符串中可以包含空字符、空格字符、转义字符和其它字符,也可以包含汉字等文字符号字符,也可以包含汉字等文字符号。 3、字符串常量、字符串常量 字符串常量是由一对双引号括起来的零个或多个字符序列。字符串常量是由一对双引号括起来的零个或多个字符序列。例如:例如:Please enter YorN: 表示字符串:表示字符串:Please enter Y or N:在字符串中也可使用转义字符在字符串中也可使用转义字符例如:例如:请输入请输入x和和y两个数据两个数据! 表示字符串:请输入表示字符串:请输入x和和y两个数

33、据两个数据! 一个字符常量在内存中存放,只占一个字节。而字符串常一个字符常量在内存中存放,只占一个字节。而字符串常量是用一个一维字符数组来存放的,即在内存中用多个连续量是用一个一维字符数组来存放的,即在内存中用多个连续的字节存放的字节存放 , 字符串的结尾加一个结束符字符串的结尾加一个结束符(0), 其其 ASCII码值码值为为0 。0 1 1 0 0 0 0 1 a a a与与a a的存储空间示意图的存储空间示意图字符串常量与字符常量的区别:字符串常量与字符常量的区别:0 1 1 0 0 0 0 1 a0 0 0 0 0 0 0 0 在在C C语言中我们还可以用一个与常量语言中我们还可以用一

34、个与常量相关的标识符相关的标识符( (标识标识符的概念在后面介绍符的概念在后面介绍) )来代替来代替常量常量出现在程序中,这种相关的出现在程序中,这种相关的标识符称为符号常量。标识符称为符号常量。定义符号常量的方法是:定义符号常量的方法是: #define #define 使用符号常量对程序设计有许多好处使用符号常量对程序设计有许多好处: 一是增加程序的可读性;一是增加程序的可读性; 二是增强可维护性。二是增强可维护性。 4 、符号常量、符号常量例如例如:用:用PI代表圆周率代表圆周率,即,即3.1415926。 例如:例如:定义符号常量定义符号常量PIPI的命令方法为:的命令方法为: #de

35、fine PI 3.1415926#define PI 3.1415926#define PRICE 30main( ) int num, total; num=10; total=num*PRICE; printf (total=%d,total);符号常量符号常量符号常量应用实例符号常量应用实例符号常量符号常量#define PI 3.1415926main( ) int area, r; printf (Input the radius: ); scanf (%d,&r); area=PI*r*r; printf (“area=is: %d n, area);计算圆的面积计算圆的

36、面积变量名:变量名:每一个变量都应有一个名字。每一个变量都应有一个名字。变量的数据类型:变量的数据类型:每一个变量都应具有一种数据类型每一个变量都应具有一种数据类型 (在定义时指定)内存中占据一定的存储空间(在定义时指定)内存中占据一定的存储空间 。变量的值:变量的值:变量对应的存贮空间中所存放的数。变量对应的存贮空间中所存放的数。 是由程序员定义的单词,用它来命名程序中的一些实体对是由程序员定义的单词,用它来命名程序中的一些实体对象(如符号常量名、变量名、函数名、类型名、数组名等)。象(如符号常量名、变量名、函数名、类型名、数组名等)。三、三、 变量变量变量:程序中其值可发生变化的量。变量:

37、程序中其值可发生变化的量。变量的三个基本要素:变量的三个基本要素:(即:名字、类型和值即:名字、类型和值)1、标识符、标识符关键字关键字是系统已定义的单词,它们都是系统已定义的保留是系统已定义的单词,它们都是系统已定义的保留字,用户不能再对它们定义。字,用户不能再对它们定义。 注意:注意:这些关键字都用的是小写字母。这些关键字都用的是小写字母。大小写字母不一样大小写字母不一样, 即标识符即标识符a1和和A1是两个不同的标识符。是两个不同的标识符。长度任意(最少一个字符)。长度任意(最少一个字符)。不能采用系统关键字(保留字)。不能采用系统关键字(保留字)。语言规定标识符的组成规则:语言规定标识

38、符的组成规则: 是由大小写字母、数字字符是由大小写字母、数字字符(09)和下划线和下划线( _ )三种字符组三种字符组成,且第一个字符必须为字母或下划线。成,且第一个字符必须为字母或下划线。autobreak case charcontinueconst default dodouble elseenumexternfloat forgotoifintlongregisterreturnshortsigned sizeofstaticstructswitch typedef unionunsigned viod volatile while常用的常用的32个关键字,它们都是系统已定义的保留字个

39、关键字,它们都是系统已定义的保留字2、变量名及变量定义、变量名及变量定义下划线下划线( _ )符号一般是系统函数常用的开始符号,故一般符号一般是系统函数常用的开始符号,故一般不要用它作为变量名的第一个字符。不要用它作为变量名的第一个字符。 C语言变量名命名规定同标识符。强调一些有关命名变量名时应注意语言变量名命名规定同标识符。强调一些有关命名变量名时应注意的几个问题。的几个问题。大写字母与小写字母表示不同的名字。如大写字母与小写字母表示不同的名字。如area、Area、aREA、Area、ArEa、areA等等,是不同的变量名。等等,是不同的变量名。(1)变量名)变量名 命名变量名时应尽量做到

40、命名变量名时应尽量做到“见名知意见名知意”,这样有助于记,这样有助于记忆,又增加了程序的可读性。忆,又增加了程序的可读性。不能用数字符号不能用数字符号(09)作名字的开始字符。作名字的开始字符。系统规定的保留字不可再作为变量名。系统规定的保留字不可再作为变量名。习惯上一般变量名用小写字母命名,而符号常量名用大习惯上一般变量名用小写字母命名,而符号常量名用大写字母命名。写字母命名。(2)变量的定义)变量的定义 语言规定对使用的变量必须语言规定对使用的变量必须先定义先定义,后使用后使用。 目的:目的:保证程序中变量名的正确使用。保证程序中变量名的正确使用。 可分配相应的存储空间。可分配相应的存储空

41、间。 便于检查变量所进行的运算是否合法。便于检查变量所进行的运算是否合法。定义一个或多个变量可使用一个说明语句完成,其格式如下:定义一个或多个变量可使用一个说明语句完成,其格式如下: ;例如:例如:int lower,upper,step; (定义三个整型变量(定义三个整型变量lower、upper和和step) char c1,c2,c3,c4; (定义四个字符变量(定义四个字符变量c1、c2、c3和和c4。)。) float x,y,z; (定义三个实型变量(定义三个实型变量x、y和和z。)。)其中:其中:类型类型包括基本数据类型和构造数据类型两类,包括基本数据类型和构造数据类型两类, 例

42、如:例如:int、char、float等类型等类型。 变量名表变量名表可以是一个变量名,也可以是多个变量名。可以是一个变量名,也可以是多个变量名。 当为多个变量名时,变量名之间用逗号分割。当为多个变量名时,变量名之间用逗号分割。 变量存在两个有用的值。一个是变量所表示的数据值,另变量存在两个有用的值。一个是变量所表示的数据值,另一个是变量的地址值。一个是变量的地址值。 char c1; c1=a;变量赋值,方法:变量赋值,方法: = ;变量赋初值:变量赋初值:在定义变量的同时给变量赋一个初始值。该在定义变量的同时给变量赋一个初始值。该变量被称为已初始化的变量。变量被称为已初始化的变量。例如例如

43、:int a=10; char c=a ; 例:例:int x,y; char c1; x=10;y=20; c1=H;3、变量值、变量值 如:如:int a=10; float f=5.55; char c=a; int a=15, b=15, d=15;不能写成:不能写成:int a=b=d=15;请分析下面程序:请分析下面程序:相当于:相当于:int a; a=10;main() int a; printf(n%d,a); 输出结果是什么?输出结果是什么?没有赋初值的变量,其值为一个不定的值。引用该变量,没有赋初值的变量,其值为一个不定的值。引用该变量,就会产生莫名奇妙的结果。就会产生莫

44、名奇妙的结果。 类型类型 所占位数所占位数 数的范围数的范围 基本型基本型(int) 16 -3276832767 短整型短整型(short int) 16 -3276832767 长整型长整型(long int) 32 -21474836482147483647 无符号整型无符号整型(unsigned int) 16 065535 无符号短型无符号短型(unsigned short) 16 065535 无符号长整型无符号长整型(unsigned long) 32 04294967295无符号型无符号型例例 main() int a,b,c,d; unsigned u; a=12;b=-24

45、;整型变量:整型变量:(四种类型四种类型)整型变量的定义格式整型变量的定义格式: 类型类型 变量名表列变量名表列;u=10; c=a+u;d=b+u;printf(a+u=%d,b+u=%dn,c,d);单精度实型提供单精度实型提供7位有效数字,位有效数字,双精度实型提供双精度实型提供1516位有效数字。位有效数字。 如:如:float a; a=111111.111 (最后两位小数不起作用)最后两位小数不起作用) 而:而:double a; a=111111.111 (全部接收)全部接收)例例 main() float a,b; a=123456.789e5;实型变量:实型变量:(两类)两类

46、)-3838-308308 类型类型 所占位数所占位数 数的范围数的范围 单精度实型单精度实型(float) 32 10 10 双精度实型双精度实型(double) 64 10 10b=a+20;printf(“%f”, b)输出结果是什么?输出结果是什么?用来存放一个字符常量。占一个字节用来存放一个字符常量。占一个字节(8位位),存放该字符的,存放该字符的ASCII码值。码值。 如:如: char c1,c2; c1=a;c2=b;字符变量:字符变量:char 理论上理论上 a+20的值应为的值应为12345678920,而实际输出:而实际输出:b的值与的值与a的值相等,为(的值相等,为(1

47、2345678848.000000)这主要因为这主要因为float型变量只能保证型变量只能保证7位有效数字,后面的数是无位有效数字,后面的数是无意义的,并不精确的表示该数。意义的,并不精确的表示该数。例例 main() char c1,c2; c1=97;c2=98; printf(%c %c,c1,c2); 9798c1c20110000101100010c1c2c1=a;c2=b;a=A+32ASCII码表中大小码表中大小写字母之间具有:写字母之间具有:如:如: int i; i=a; char c; c=97;例例 main() char c1,c2; c1=a;c2=b; c1=c1-

48、32;c2=c2-32; printf(%c %c,c1,c2); C语言中允许字符型数据与整型数据互相赋值。语言中允许字符型数据与整型数据互相赋值。 main() int i; char c; i=a; c=97; printf(%c,%dn,c,c); printf(%c,%dn,i,i); 输出结果:输出结果:a, 97 a, 97例例0110000101100001ic 所谓枚举就是变量在定义时,将它所有可能的取值都一一所谓枚举就是变量在定义时,将它所有可能的取值都一一列举出来。这种在定义时就明确规定变量只能取哪几个值,而列举出来。这种在定义时就明确规定变量只能取哪几个值,而不能取其它

49、值的数据类型叫枚举类型。不能取其它值的数据类型叫枚举类型。 例如:例如: enum day Sun,Mon,Tue,Wed,Thu,Fri,Sat ;四、四、 枚举类型枚举类型 枚举枚举是一种构造的数据类型。它是若干个有名字的整型常是一种构造的数据类型。它是若干个有名字的整型常量的集合(即枚举类型是一种特殊的整型类型)。量的集合(即枚举类型是一种特殊的整型类型)。 1、枚举类型和枚举变量、枚举类型和枚举变量 枚举类型的定义格式如下:枚举类型的定义格式如下: enum ;enum daySun=7,Mon=1,Tue,Wed,Thu,Fri,Sat;2 、枚举变量的值、枚举变量的值 枚举变量的值

50、枚举变量的值,是该枚举变量所属枚举类型的枚举表中,是该枚举变量所属枚举类型的枚举表中某一个枚举符。某一个枚举符。 枚举变量的定义和枚举类型的定义也可放在一个语句中,枚举变量的定义和枚举类型的定义也可放在一个语句中,如:如: enum day Sun=7,Mon=1,Tue,Wed,Thu,Fri,Sat d1,d2,d3;枚举变量的定义格式如下:枚举变量的定义格式如下: enum ; 例如:例如: enum color RED,BLUE,YELLOW,BLACK,WHITE; enum color c1,c2,c3;其中,其中,c1,c2,c3是三个具有是三个具有color枚举名的枚举变量。枚

51、举名的枚举变量。例如:例如: enum day d1,d2,d3;d1=Tue; d2=Sun;c1=RED;c2=YELLOW;可采用强制类型方式进行赋值。例如:可采用强制类型方式进行赋值。例如:c3=(enum color)(3); 等价于:等价于: c3=BLACK;某个枚举变量的输出值总是某个枚举变量的输出值总是整型数值整型数值,而不是枚举符。,而不是枚举符。 对于对于枚举类型变量枚举类型变量只能通过赋值的方法为其赋值。只能通过赋值的方法为其赋值。 而下面的赋值是而下面的赋值是错误的:错误的: d1=BLACK; /*因为因为d1枚举变量对应的枚举符中没有枚举变量对应的枚举符中没有BL

52、ACK。*/ c1=3; /*因为因为c1枚举变量对应的枚举符中没有枚举变量对应的枚举符中没有3。*/例:例: main( ) enum color RED,BLUE,YELLOW,BLACK,WHITE; enum color x1, x2; x1=YELLOW; x2=RED; printf(x1=%d, x2=%d,x1,x2); 例如:例如: enum Booler L1, L2; L1=FALSE; L2=TRUE;运行结果为:运行结果为: x1=2, x2=0对逻辑运算可以定义如下枚举类型:对逻辑运算可以定义如下枚举类型:enum Booler FALSE, TRUE;(1 1)基

53、本算术运算符:)基本算术运算符: + (+ (加加) )、 - (- (减减) ) 、 * * ( (乘乘) ) 、 / (/ (除除) ) 和和 % (% (求余数求余数) ) 这五个运算符的优先级为:这五个运算符的优先级为: *、/ 和和%同级,但比同级,但比+和和-高。即先乘除后加减。高。即先乘除后加减。 例如:例如: 5/2 结果为结果为 2 2/5 结果为结果为 0五、运算符和表达式五、运算符和表达式1、算术运算符和算术表达式、算术运算符和算术表达式这五个运算符的结合性为:自左至右。这五个运算符的结合性为:自左至右。例如:例如:10+6- 4*2第一步先计算第一步先计算10+6,得结

54、果,得结果16,第二步计算第二步计算4*2,得结果,得结果8,然后然后用第一步计算的结果减第二步计算的结果,得结果用第一步计算的结果减第二步计算的结果,得结果8。两个两个整数整数相除,结果为一整数;相除,结果为一整数;分子小于分母,结果为零。分子小于分母,结果为零。余数计算方法:余数计算方法:例如:例如: 5%3 余数是余数是2 5%8 余数是余数是5 -5%3 余数是余数是 2 (注意:符号位取注意:符号位取的符号的符号) 5%-3 余数是余数是2 (注意:符号位取注意:符号位取的符号的符号)求两个数求两个数“%”的余数计算方法如下:的余数计算方法如下:余数余数=-*其中,其中,是是除以除以

55、所取的整数商。所取的整数商。(2)算术表达式)算术表达式 C语言允许不同类型的操作数据进行混合运算,但运算时语言允许不同类型的操作数据进行混合运算,但运算时系统先将操作数转换成同一类型数据,然后进行运算。系统先将操作数转换成同一类型数据,然后进行运算。类型转换分为:类型转换分为: 强制转换强制转换 隐含转换隐含转换 算术表达式是由算术表达式是由算术运算符算术运算符和和操作数操作数组成的表达式。表达式组成的表达式。表达式的值是一个的值是一个数值数值,表达式的类型具体由运算符和操作数确定。,表达式的类型具体由运算符和操作数确定。(3)数据类型转换:)数据类型转换:例如:例如: 5+3*(6-2)

56、表达式的类型为表达式的类型为int 型。型。 3+4.0-3/2.0 表达式的类型为表达式的类型为double型。型。 doublelongunsignedintfloatchar,short低级低级高级高级必定的必定的转换转换必定的必定的转换转换(类型名类型名) (表达式表达式)隐含转换隐含转换 例如:例如: int a; float x,y; (double) a、(int)(x+y)、(float)(5%3)、(int)x+y强制类型转换:强制类型转换:格式如下格式如下运算对象:运算对象:常量、变量、函数等。常量、变量、函数等。优先级:优先级:先乘除后加减。先乘除后加减。结合率:结合率:

57、自左至右。自左至右。例如例如: 若有若有 int i, float f, double d, long e 则则 10+a+i*f-d/e 表达式运算次序为表达式运算次序为:将将a转换成转换成97,然后,然后10+a运算。运算。 将将i和和f都转换成都转换成double型,型,然后然后i*f运算。运算。 将将e转换成转换成double型,型,然后然后d/e运算。运算。 将将 的结果转换为的结果转换为double型,然后与型,然后与 的结果相加。的结果相加。 用用的结果减的结果减 的结果。的结果。小结:小结:用算术运算符和括号用算术运算符和括号“( )”将运算对象连接起来,符合语将运算对象连接起

58、来,符合语法规则的式子称为算术表达式。法规则的式子称为算术表达式。赋值符号赋值符号: (将赋值符右边表达式的值赋给赋值符左边的一个变量。将赋值符右边表达式的值赋给赋值符左边的一个变量。)两种情况:两种情况:2、赋值运算符和赋值表达式、赋值运算符和赋值表达式 赋值运算符的数据类型若不一致,则要进行类型转换。转赋值运算符的数据类型若不一致,则要进行类型转换。转换方式为:换方式为:将实型数据赋给整型变量时,舍弃实数的小数部分。将实型数据赋给整型变量时,舍弃实数的小数部分。如:如:int i; i=5.65; i 的值为的值为 5。将字符数据赋给整型变量时,将字符数据放到整型变量低将字符数据赋给整型变

59、量时,将字符数据放到整型变量低8位中。位中。若字符最高位为若字符最高位为1,整型变量的高,整型变量的高8位置位置1,否则高,否则高8位置位置0。若把字符处理为无符号的量,若把字符处理为无符号的量,整型变量的高整型变量的高8位置位置0。将整型数据赋给实型变量时,数值不变。将整型数据赋给实型变量时,数值不变。float f ; f=23; (先先2323.00000 再存储在再存储在f 中中)double d; d=23; (先先2323.000000000000000再存储在再存储在d中中)1 1 11 11 10c=37611 11 11 101 1 11 11 11i的值为的值为-2i0 0

60、 11 00 00c=000 11 00 000 0 00 00 00i的值为的值为48i设设int i;char c; i=c;(1)所用系统将字符处理为带符号量或对所用系统将字符处理为带符号量或对signed char型变量赋型变量赋值,则:值,则:高位为高位为1高位为高位为0(2)所用系统将字符处理为无符号量或对所用系统将字符处理为无符号量或对unsigned char型变量型变量赋值,则:赋值,则:0 0 11 00 00c= 000 11 00 000 0 00 00 00i的值为的值为48i1 1 11 11 10c=37611 11 11 100 0 00 00 00i的值为的值为254i将整型数据赋给长整型变量时,将整型

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论