(第四版)C语言程序设计1-6章_第1页
(第四版)C语言程序设计1-6章_第2页
(第四版)C语言程序设计1-6章_第3页
(第四版)C语言程序设计1-6章_第4页
(第四版)C语言程序设计1-6章_第5页
已阅读5页,还剩239页未读 继续免费阅读

下载本文档

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

文档简介

1、2022-2-242022-2-24目录目录v第一章第一章 C语言概述语言概述v第二章第二章 数据类型及基本运算数据类型及基本运算v第三章第三章 顺序结构程序设计顺序结构程序设计v第四章第四章 选择结构程序设计选择结构程序设计v第五章第五章 循环结构程序设计循环结构程序设计v第六章第六章 数组数组v第七章第七章 函数函数v第八章第八章 指针指针v第九章第九章 结构与其它自定义类型结构与其它自定义类型v第十章第十章 文件文件2022-2-242022-2-24程序设计与高级语言程序设计与高级语言 早期的机器语言;早期的机器语言; 过渡性语言过渡性语言汇编语言;汇编语言; 2020世纪世纪5050

2、年代末的程序设计语言(高级语言);年代末的程序设计语言(高级语言);2022-2-24 C C语言是国际上广泛流行的计算机高级语言语言是国际上广泛流行的计算机高级语言, ,既可用来写系统既可用来写系统软件,也可用来写应用软件。软件,也可用来写应用软件。 C C语言是在语言是在B B语言的基础上发展起来的。语言的基础上发展起来的。 BCPL (basic combined programming language)语言语言C语语言言扩充扩充C语言的内核,使其能满足面向对象模型的要求,称语言的内核,使其能满足面向对象模型的要求,称“带类的带类的C”,1983年取名年取名C+2022-2-24 C+

3、C+与与C C完全兼容,保存了完全兼容,保存了C C语言的所有组成部分,具有更完美的语言的所有组成部分,具有更完美的体系结构和更强大的功能;体系结构和更强大的功能; C/C+C/C+常用的编译软件有常用的编译软件有Turbo CTurbo C,Quick CQuick C,Borland CBorland C,Microsoft Visual C+Microsoft Visual C+,Borland C+Borland C+,Watcom C+Watcom C+等等;等等;同学们应了解所用的计算机系统所配置的同学们应了解所用的计算机系统所配置的C C编译系统编译系统的特点和规定的特点和规定

4、( (可以参阅有关手册可以参阅有关手册) )。2022-2-241.2.1 1.2.1 简单的简单的C/C+C/C+程序实例程序实例【例【例 1.11.1】 include include 头文件头文件main ( )main ( )函数名函数名 printf (This is a C program.n); printf (This is a C program.n); 函数体函数体本程序的作用是输出以下一行信息:本程序的作用是输出以下一行信息: This is a C program.This is a C program. 2022-2-24 1.2.2 C/C+1.2.2 C/C+程序

5、设计规则程序设计规则 (1 1)C C程序中使用到的一切数据都必须在使用它们之前对其类程序中使用到的一切数据都必须在使用它们之前对其类型和存储属性加以定义和说明;型和存储属性加以定义和说明; (2 2)函数是)函数是C C程序的基本模块,包括函数名、参数说明表和函程序的基本模块,包括函数名、参数说明表和函数体三个部分;数体三个部分; (3 3)语句是函数的基本单位,语句结束必须加)语句是函数的基本单位,语句结束必须加“ “ ;”; (4 4)C C语言允许语言允许“/ /* * * */”/”包围的注释行;包围的注释行; (5 5)C C程序是自由格式书写的程序,通常采用结构化程序设计程序是自

6、由格式书写的程序,通常采用结构化程序设计原则将程序设计成原则将程序设计成“层次型层次型”; (6 6)C C的输入输出操作由库函数的输入输出操作由库函数scanfscanf和和printfprintf完成;完成;2022-2-24c c程序结构程序结构2022-2-24 高级语言源程序高级语言源程序目标程序目标程序编译程序编译程序编译编译执行执行高级语言程序的执行过程高级语言程序的执行过程 在编好一个在编好一个C源程序后,如何上机运行呢源程序后,如何上机运行呢? 要经过以下几个步骤:要经过以下几个步骤:上机输入、编辑源程序、对源程序进行编译、与库函数连接、运行上机输入、编辑源程序、对源程序进行

7、编译、与库函数连接、运行目标程序这样几个步骤。目标程序这样几个步骤。2022-2-24 实线表示操作流程,虚线表示文件的输入输出。实线表示操作流程,虚线表示文件的输入输出。2022-2-241.2.3 C/C+程序的编辑、编译与运行程序的编辑、编译与运行 在在Visual C+Visual C+集成开发环境下编辑集成开发环境下编辑C C程序程序 2022-2-24 在在Visual C+Visual C+集成开发环境下编译与运行集成开发环境下编译与运行C C程序程序 打开打开“Build”Build”菜单,选择菜单,选择“Compile hjm01.c”Compile hjm01.c”命令,命

8、令,编译正确后生成目标文件;编译正确后生成目标文件; 打开打开“Build”Build”菜单,选择菜单,选择“Build hjm01.exe”Build hjm01.exe”命令,命令,将目标程序与库文件相链接,生成可执行文件;将目标程序与库文件相链接,生成可执行文件; 打开打开“Build”Build”菜单,选择菜单,选择“Execute hjm01.exe”Execute hjm01.exe”命命令,运行执行程序。令,运行执行程序。2022-2-24 1.3.1 1.3.1 基本字符集基本字符集 字符集是构成字符集是构成C/C+C/C+程序的基本元素。程序的基本元素。C/C+C/C+语言的

9、字符集有下语言的字符集有下述字符构成:述字符构成: (1 1)英文字母:)英文字母:A AZ Z,a az z (2 2)数字字符:)数字字符:0 09 9 (3 3)特殊符号:!,)特殊符号:!,& &等。等。 2022-2-24 1.3.2 1.3.2 标识符标识符 C/C+C/C+程序中,标识符用来标识变量名、符号常量名、函数名、程序中,标识符用来标识变量名、符号常量名、函数名、数组名、文件名、类名、对象名等。数组名、文件名、类名、对象名等。 有效标识符的构成规则为:有效标识符的构成规则为: (1 1)必须由字母()必须由字母(a az z,A AZ Z)或下划线()或下

10、划线(_ _)开头;)开头; (2 2)由字母、数字和下划线组成的长度不超过)由字母、数字和下划线组成的长度不超过3232的字符串;的字符串; (3 3)标识符中的大小写字母有区别;)标识符中的大小写字母有区别; (4 4)不能与)不能与同名;同名; 下面是不合法的标识符和变量名:下面是不合法的标识符和变量名: .d.d.,ohnohn,y 123y 123,3333,3d643d642022-2-24 1.3.3 1.3.3 关键字关键字 C C编译系统已经预定义的、具有特殊用途的保留标识编译系统已经预定义的、具有特殊用途的保留标识符称为关键字。具体见书符称为关键字。具体见书P P7 7。

11、编译预处理是编译预处理是C C编译系统的一个组成部分。编译系统的一个组成部分。 告诉编译系统在对源程序进行编译之前应该告诉编译系统在对源程序进行编译之前应该做些什么。做些什么。2022-2-24C C源程序源程序目标程序目标程序执行程序执行程序编译预处理编译预处理编译编译链接链接图图1 1 编译预处理的执行过程编译预处理的执行过程(无预处理命令)(无预处理命令)(有预处理命令)(有预处理命令)2022-2-24 编译预处理命令有三种:编译预处理命令有三种: 宏定义宏定义 无参数宏定义无参数宏定义 有参数宏定义(有参数宏定义(7.77.7节介绍)节介绍) 文件包含文件包含 条件编译条件编译 20

12、22-2-24 无参数宏定义的格式为:无参数宏定义的格式为:define define 【例】【例】define PI 3.1415926define PI 3.1415926 【例】分析程序的结果。【例】分析程序的结果。 #define PI 3.1415926#define PI 3.1415926 #define R 4.0 #define R 4.0 main( ) main( ) float area; float area; area=PI area=PI* *R R* *R;R; printf(“area=%.2f”); printf(“area=%.2f”); 宏名一般用大写字

13、母表示宏名一般用大写字母表示1.4.1 1.4.1 无参数宏定义无参数宏定义2022-2-24 1.4.2 1.4.2 文件包含文件包含 文件包含是通过编译预处理命令文件包含是通过编译预处理命令includeinclude把另一个文件的全把另一个文件的全部内容包含到本文件之中。命令格式有两种:部内容包含到本文件之中。命令格式有两种:include “include “文件名文件名” 【例】【例】#include “C#include “C:TCCC1file2.c”TCCC1file2.c”include include 【例】【例】#include #include 按系统指定的标准方式检索

14、文件目录按系统指定的标准方式检索文件目录先在源文件目录中检索文件,没找到再按先在源文件目录中检索文件,没找到再按系统指定的标准方式检索文件目录系统指定的标准方式检索文件目录2022-2-24【例】计算常用对数【例】计算常用对数lgx。 #include “math.h” main( ) float x; scanf(“%f”,&x); printf(“%fn”,log10(x); 【例】【例】 #include main( ) printf(This is a C program.n); 2022-2-242022-2-24 见书见书P P1111图图2.1 2.1 数据类型分类示意图

15、数据类型分类示意图数据在内存中有两种表示形式:其一是在程序运行数据在内存中有两种表示形式:其一是在程序运行过程中值永远保持不变的过程中值永远保持不变的;其二是在程序运行过程;其二是在程序运行过程中值可以发生变化的中值可以发生变化的; 2022-2-24常量常量数值常量数值常量符号常量符号常量整型常量整型常量实型常量实型常量字符常量字符常量字符串常量字符串常量2.3.1 2.3.1 常量常量 常量常量在程序运行过程中其值不能被改变的量;在程序运行过程中其值不能被改变的量; 按表达形式,常量分为:按表达形式,常量分为:2022-2-24 1 1、值常量、值常量 常量通常是直接以自身的存在形式体现其

16、值和类型,常量不占内存,常量通常是直接以自身的存在形式体现其值和类型,常量不占内存,在程序运行时作为操作对象直接出现在运算器的各种寄存器中。在程序运行时作为操作对象直接出现在运算器的各种寄存器中。 2 2、符号常量、符号常量 符号常量的定义形式:符号常量的定义形式: 标识符标识符 值常量值常量 数据类型数据类型 标识符值常量标识符值常量 【例】【例】 define PI 3.14159define PI 3.14159 const float I=3.1415926const float I=32-24 3.3.常用的转义字符常用的转义字符 【例】分析下面两段代码的区

17、别:【例】分析下面两段代码的区别: #include#include main( ) main( ) printf(“This is a C program.n”) printf(“This is a C program.n”); #include#includemain( )main( ) printf(“tThis is a C printf(“tThis is a C program.n”)program.n”); 2022-2-24 2.3.2 2.3.2 变量变量 在程序运行过程中其值可以被改变的量;在程序运行过程中其值可以被改变的量; 1.1.变量的说明变量的说明 【例】【例】 i

18、nt iint i,j j,k k; 2.2.变量的赋初值变量的赋初值在程序中,一个变量占据着一在程序中,一个变量占据着一个实际的存储单元,变量名实际上是存储单元的逻辑地个实际的存储单元,变量名实际上是存储单元的逻辑地址,存储单元中的内容是变量的值;址,存储单元中的内容是变量的值;2022-2-24 (1 1)允许在定义变量的同时对其赋初值;)允许在定义变量的同时对其赋初值; 【例】【例】 int aint a3 3; float ffloat f7.87.8; (2 2)允许仅对说明语句中的部分变量赋初值;)允许仅对说明语句中的部分变量赋初值; 【例】【例】 int aint a,b b,c

19、 c6 6; (3 3)不允许同时对几个变量赋同一个初值;)不允许同时对几个变量赋同一个初值; 【例】【例】 int aint ab bc c1313; (4 4)变量的赋初值不是在程序编译阶段,而是在程序)变量的赋初值不是在程序编译阶段,而是在程序运行时赋的;运行时赋的;2022-2-24 1 1、变量一旦被说明为字符型,就意味着它只能取单字、变量一旦被说明为字符型,就意味着它只能取单字符值。符值。 例:例:char xchar x;x x3333; 字符在计算机内部并不是以字符原形存储的,是以字符在计算机内部并不是以字符原形存储的,是以ASCIIASCII码的形式码的形式存储在一个字节中,

20、所以字符也可以用存储在一个字节中,所以字符也可以用ASCIIASCII码的整数形式来表示。码的整数形式来表示。 2 2、字符型数据与字符串数据的区别、字符型数据与字符串数据的区别和和;2022-2-24 2.4.1 2.4.1 算术运算符和算术表达式算术运算符和算术表达式 1 1)算术运算符)算术运算符 类别类别运算符运算符含义含义备注备注双目双目/ /除除随参与运算的类型而含义有所不同随参与运算的类型而含义有所不同% %求余数求余数运算对象必须为整型运算对象必须为整型单目单目+自增自增1 1运算对象必须为变量运算对象必须为变量-自减自减1 1运算对象必须为变量运算对象必须为变量+ +取正取正

21、- -取负取负2022-2-24 2 2)算术运算符的运算优先级和结合性)算术运算符的运算优先级和结合性 运算符运算符结合性结合性备注备注()()自内向外自内向外+,-,- -(取负)(取负)自右至左自右至左+,-为前缀形式时为前缀形式时* *,/ /,自左至右自左至右+ +(加),(加),- -(减)(减)自左至右自左至右优优先先级级3 3)算术表达式)算术表达式 注意书写的规范注意书写的规范2022-2-24【例】将下列代数式转换成【例】将下列代数式转换成C C语言表达式。语言表达式。 xx212sqrtsqrt(x x* *x+1x+1)/ /(2 2* *x x)x21sqrtsqrt

22、(absabs(x x)/2/24 4)算术型数据的混合运算)算术型数据的混合运算 自动类型转换:规则是由低级向高级转换,如下自动类型转换:规则是由低级向高级转换,如下图所示:(图所示:(P P1717图图2.2 2.2 )2022-2-24 强制类型转换:是根据程序的需要,将某数据强强制类型转换:是根据程序的需要,将某数据强 制转换成指定的数据类型,方法是在被转换对象制转换成指定的数据类型,方法是在被转换对象 (或表达式)前面增加类型标识符,(或表达式)前面增加类型标识符,如下:如下: 数据类型自动转换规则示意数据类型自动转换规则示意(类型标识符)(类型标识符) 表达式表达式水平箭头表示必定

23、转换;纵向箭头表示水平箭头表示必定转换;纵向箭头表示两个不同类型对象时的转换方向两个不同类型对象时的转换方向2022-2-24 【例】【例】 (2.7+6.82.7+6.8) 表示将表示将2.7+6.82.7+6.8的运算结果的运算结果9.59.5强制转换成强制转换成intint型整数型整数9 9,舍弃小数,舍弃小数部分。部分。 【思考题思考题】如何实现运算结果的四舍五入呢?如何实现运算结果的四舍五入呢? 5 5)使用算术表达式的注意事项)使用算术表达式的注意事项 两个整数直接相除,结果自动取整,丢弃小数部分;两个整数直接相除,结果自动取整,丢弃小数部分;【例】【例】 float xfloat

24、 x,y y; x x6/46/4; y y6.0/46.0/4;x x的值为的值为1.01.0y y的值为的值为1.51.5(int)2022-2-24 运算符运算符“+”+”、“-”-”运算的优先级高于算术运算中运算的优先级高于算术运算中所有所有 双目运算符,运算对象双目运算符,运算对象,不能是,不能是或或 【例】【例】 有有int xint x;float yfloat y;下面的式子错在了哪里?;下面的式子错在了哪里? (x+yx+y)+、 5+ 5+ 变量的前缀和后缀运算的区别变量的前缀和后缀运算的区别2022-2-24y y6 6,x x6 6y y2525,x x7 7y y49

25、49,x x7 7y y+x+x* *+x+x;y y+x+x;y yx+x+* *x+x+;y y5 5,x x6 6y yx+x+;2022-2-24 2.4.2 2.4.2 赋值运算符和赋值表达式赋值运算符和赋值表达式 1 1)基本赋值运算符)基本赋值运算符 将赋值运算符右边的表达式的值赋给其左边的将赋值运算符右边的表达式的值赋给其左边的; 【例】【例】float xfloat x3.13.1;int yint y;y yx+2x+2;float yfloat y5.65.6;int xint x;x+2x+2y y;5 5y y;2022-2-24 2 2)复合赋值运算符)复合赋值运算

26、符 算术运算符算术运算符 对赋值运算符左、右两边的运算对象进行指定的算术运算符对赋值运算符左、右两边的运算对象进行指定的算术运算符的运算,再将运算结果赋予左边的变量;的运算,再将运算结果赋予左边的变量; 【例】【例】 a+=3 a+=3 等价于等价于a=a+3a=a+3 那么那么a a* *b+1 b+1 等价于等价于a aa a* *(b+1b+1) a += a +=(b b) ( (其中其中a a为变量,为变量,b b为表达式为表达式) ) a +a += =(b b) ( (将有下划线的将有下划线的“a+”a+”移到移到“=”=”右侧右侧) ) a = a + a = a +(b b)

27、 ( (在在“=”=”左侧补上变量名左侧补上变量名a)a)2022-2-24 3 3)赋值表达式)赋值表达式 用用将将连接而成的式子称为赋值表达连接而成的式子称为赋值表达式。式。 【例】【例】 int kint k,a a1 1,j j5 5;a+a+j+ j+ 【例】【例】 int xint x6 6; x+x+x-x-x x* *x x;a aa +a +(j+j+)a a6 6,j j6 6x xx+x+(x-x-x x* *x x)x xx+x+(x xx-xx-x* *x x)x x-60-602022-2-24 2.4.3 2.4.3 逗号运算符和逗号表达式逗号运算符和逗号表达式

28、1 1)逗号运算符)逗号运算符“,”的用法:的用法: 用作分隔符用作分隔符在变量说明语句、函数调用语句等场合,例在变量说明语句、函数调用语句等场合,例 如如 int aint a,b b,c c; 用作运算符用作运算符是一个双目运算符,构成逗号表达式,是一个双目运算符,构成逗号表达式,运算顺序自左至右;例如,运算顺序自左至右;例如 a a2 2* *6 6,a-4a-4,a+15a+15;12128 82727逗号表达式的值为逗号表达式的值为27272022-2-24 2 2)逗号表达式)逗号表达式 表达式表达式1 1,表达式,表达式2 2,表达式,表达式3 3,表达式,表达式n n 分别计算

29、每一个表达式的值,并将最后一分别计算每一个表达式的值,并将最后一个表达式的值作为整个逗号表达式的结果个表达式的值作为整个逗号表达式的结果 【例】【例】x x5+55+5,10+1010+10 【例】【例】x x(5+55+5,10+1010+10)2020,1010逗号表达式的值和逗号表达式的值和x x的值分别为的值分别为赋值语句之后赋值语句之后x x的值为的值为20202022-2-24 【例】分析逗号表达式(【例】分析逗号表达式(a a3 3* *5 5,a a* *4 4),),a+15a+15的结果。的结果。 6060a a的值为的值为1515整个逗号表达式的值为整个逗号表达式的值为3

30、030 【例】【例】int xint x,y y,分析,分析y y(x x1 1,+x+x,x+2x+2)的结果。)的结果。逗号表达式的值为逗号表达式的值为4 44 4y y的值为的值为括号中的表达式值为括号中的表达式值为2022-2-24 2.4.4 2.4.4 关系运算符和关系表达式关系运算符和关系表达式 关系运算主要用在程序中的判断语句。关系运算主要用在程序中的判断语句。 1 1、关系运算符、关系运算符 = = != = = !=同级同级同级同级高高低低2 2、关系表达式、关系表达式 若干表达式用关系运算符连接而成,关系表达式的值为若干表达式用关系运算符连接而成,关系表达式的值为0 0或

31、或1 1。 【例】设【例】设x x1 1,y y2 2,z z3 3,分析下面的关系表达式的值。,分析下面的关系表达式的值。 x!=y=z-2x!=y=z-21 12022-2-24 2.4.5 2.4.5 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式 1 1、逻辑运算符、逻辑运算符运算符运算符功能功能运算规则运算规则优先级优先级!逻辑非逻辑非!1=0, !0=1高高&逻辑与逻辑与1&1=11&0=0&1=0&0=0中中|逻辑或逻辑或0|0=01|0=0|1=1|1=1低低2022-2-24 2、逻辑表达式、逻辑表达式 用逻辑运算符将若干不同类型的表达式

32、连接而成的式子称为逻辑用逻辑运算符将若干不同类型的表达式连接而成的式子称为逻辑表达式。表达式。 逻辑表达式的值应该是一个逻辑量逻辑表达式的值应该是一个逻辑量“真真”或或“假假”。c语言编译语言编译系统在给出逻辑运算结果时,判断一个量是否为系统在给出逻辑运算结果时,判断一个量是否为“真真”时,以时,以0代表代表“假假”,以,以代表代表“真真”。 【例】设【例】设int a0,b2,c3;判断下面逻辑表达式的值。;判断下面逻辑表达式的值。 a0 , a0 | b0 | c0 , !a2022-2-24 代数中的不等式代数中的不等式0 x0)& (x5),而不能直接写成),而不能直接写成0

33、x=A&c=a&c=z【例】判别整数变量【例】判别整数变量year是否为闰年。是否为闰年。(year40&year%100!=0)| |( (year%400=0) )返回返回2022-2-243 3、逻辑表达式的求值顺序、逻辑表达式的求值顺序运算符运算符优先级优先级!(逻辑非)(逻辑非)1* / %2+ -3 =4= !=5&(逻辑与)(逻辑与)6|(逻辑或)(逻辑或)7=82022-2-24 2.4.6 2.4.6 位运算符和位表达式位运算符和位表达式 1 1)位运算符)位运算符位运算符位运算符形形 式式功功 能能x对对x x的二进制值按位求反的二进制值按位

34、求反& &x&yx&y对对x x,y y的二进制值按位与的二进制值按位与| |x|yx|y对对x x,y y的二进制值按位或的二进制值按位或 x yx y对对x x,y y的二进制值按位异或的二进制值按位异或xmxxmxm将将x x的二进制值右移的二进制值右移m m位位 2 2)位运算符求值规则)位运算符求值规则2022-2-24 3 3)位运算的优先级)位运算的优先级 & | & |运运 算算 符符求求 值值 规规 则则0=10=1 1=01=0& &0&0=0 0&1=0 1&0=0 1&1=1

35、0&0=0 0&1=0 1&0=0 1&1=1| |0|0=0 0|1=1 1|0=0 1|1=10|0=0 0|1=1 1|0=0 1|1=1 0 0=0 0 1=1 1 0=1 1 1=00 0=0 0 1=1 1 0=1 1 1=0001011102 00101110001011102 001011102 结果为结果为 0000101100001011高高低低2022-2-24 【例】取一个整数【例】取一个整数a a从右端开始的从右端开始的4 47 7位。位。 先使先使a a右移右移4 4位;下图中,位;下图中, (a)(a)图是未右移时的情况图是未右移时

36、的情况; ; (b) (b)图是右移图是右移4 4位后的情况。目的是使要取出的那几位移到最位后的情况。目的是使要取出的那几位移到最 右端。右移到右端可以用下面方法实现:右端。右移到右端可以用下面方法实现: a 4a 4。 2022-2-24 设置一个低设置一个低4 4位全为位全为1,1,其余全为其余全为0 0的数。可用下面方法的数。可用下面方法实现:实现: ( ( 0 4 )0 4 ) 0 0的全部二进制为全的全部二进制为全1 1,左移,左移4 4位,这样右端低位,这样右端低4 4位为位为 0 0。见下面所示:。见下面所示: 0:00000000000:0000000000 0: 111111

37、11110: 1111111111 04:111111000004:1111110000 ( (04):00000011110 4) &(a 4) & ( ( 0 4 )0 4 ) 根据介绍的方法,与低根据介绍的方法,与低4 4位为位为1 1的数进行的数进行& &运算,就能将这运算,就能将这4 4位位保留下来。保留下来。 程序如下:程序如下: 2022-2-24 main(main() ) unsigned a unsigned a,b b,c c,d d; scanf(%oscanf(%o,&a)&a); b=ab=a4 4; c=c=( (0

38、 04)4); d=b&c d=b&c; printf(%o printf(%o, %dn%o %dn%o, %dn %dn,a a,a a,d d,d)d); 2022-2-24 2.5.1 2.5.1 库函数的调用库函数的调用 abs(x)abs(x) fabs(x) fabs(x) sqrt(x) sqrt(x) pow(x,y) pow(x,y) clrscr( ) clrscr( )2022-2-24 2.5.2 2.5.2 使用库函数注意事项使用库函数注意事项 库函数是库函数是C C编译系统预定义的,库函数的原型都被编译系统预定义的,库函数的原型都被定义在扩展名为定

39、义在扩展名为h h的头文件,在调用库函数之前,必须的头文件,在调用库函数之前,必须用用编译预处理命令将相关的头文件包含到程序编译预处理命令将相关的头文件包含到程序中来。中来。2022-2-24 【例】计算常用对数【例】计算常用对数lgxlgx。 #include “math.h”#include “math.h” main( ) main( ) float x; float x; scanf(“%f”,&x); scanf(“%f”,&x); printf(“%fn”,log10(x); printf(“%fn”,log10(x); 2022-2-242022-2-24 顺序结

40、构顺序结构 分支结构分支结构 循环结构循环结构C C语言用于顺序结构的基本语句是表达式语句、复合语句和空语言用于顺序结构的基本语句是表达式语句、复合语句和空语句。语句。 3.1.1 3.1.1 表达式语句表达式语句2022-2-24表达式;表达式; 【例】【例】a a1 1; 【功能】完成计算表达式的值或将结果赋给某一变量的任务;【功能】完成计算表达式的值或将结果赋给某一变量的任务; 【例】【例】i+i+; 【例】【例】printf(“bye!”);printf(“bye!”); 【例】【例】x=y+z;x=y+z;2022-2-24 表达式语句中最常用的是表达式语句中最常用的是赋值表达式赋值

41、表达式 ;);) 简单赋值:变量表达式;简单赋值:变量表达式; 多重赋值:变量多重赋值:变量1 1变量变量2 2变量变量n n表达式;表达式; 赋值表达式可以出现在任何表达式允许出现的地方,而赋赋值表达式可以出现在任何表达式允许出现的地方,而赋 值语句则不能;值语句则不能;x=(y=2)+(z=3+y);x=(y=2)+(z=3+y);x=(y=2;)+(z=3+y;)x=(y=2;)+(z=3+y;);正确正确错误错误2022-2-243.1.2 3.1.2 复合语句复合语句 若干连续语句若干连续语句 【例】【例】 z=x; x=y; y=z; z=x; x=y; y=z; 中最后一个语句末

42、尾的分号不能省略,并且在中最后一个语句末尾的分号不能省略,并且在 之外不能再加之外不能再加“;”。 【应用范围】复合语句主要用于选择结构和循环结构中。【应用范围】复合语句主要用于选择结构和循环结构中。返回返回2022-2-243.1.3 3.1.3 空语句空语句; 【功能】一般作为程序的转向点或作为循环语句中的空循环体;【功能】一般作为程序的转向点或作为循环语句中的空循环体;2022-2-24C C语言的输入和输出函数(原型放在头文件语言的输入和输出函数(原型放在头文件stdio.hstdio.h中):中): putcharputchar(字符输出);(字符输出); printfprintf(

43、格式输出);(格式输出); getchargetchar(字符输入);(字符输入); scanfscanf(格式输入);(格式输入);2022-2-243.2.1 3.2.1 数据的输出数据的输出 1 1、putcharputchar函数函数 在显示器上输出在显示器上输出字符。字符。 putchar putchar (参数)(参数) 参数可以是一个字符型变量、一个整型变量或一个参数可以是一个字符型变量、一个整型变量或一个字符型常量(包括控制字符和转义字符)等。字符型常量(包括控制字符和转义字符)等。 【例】使用库函数【例】使用库函数putcharputchar()输出各种字符。()输出各种字符

44、。2022-2-24 include main( ) char ch1, ch2; int j; ch1=C; ch2=h; j=105;putchar(ch1);putchar(ch2);putchar(j);putchar(n);putchar(141); putchar(n);输出字符输出字符C C输出字符输出字符h h输出字符输出字符i i输出字符输出字符n n输出字符输出字符a a,141141是转义字符是转义字符输出换行输出换行2022-2-24 2 2、printfprintf函数函数 1)1) printfprintf(“格式控制字符串格式控制字符串”,输出项,输出项1 1,输

45、出项,输出项2 2,) 将各输出项(可以是变量、常量、表达式)的将各输出项(可以是变量、常量、表达式)的值按指定的格式输出到屏幕上。值按指定的格式输出到屏幕上。 【例】【例】 printf( “printf( “”,x );”,x ); 2) printf 2) printf函数中常用的格式控制函数中常用的格式控制 2022-2-24格式字符格式字符 格式修饰格式修饰 格式说明总是由格式说明总是由“”字符开始字符开始标志、类型修饰、输标志、类型修饰、输出最小宽度和精度出最小宽度和精度说明输出项类型说明输出项类型 格式字符格式字符 见见P P3232表表3.13.1; 【例】【例】printfp

46、rintf(“x xd d,y=y=fn”fn”,x x,y y);); 【例】【例】mainmain()() char c=A; char c=A; int x=1234; int x=1234; float y=-123.456789; float y=-123.456789; printf(“|%c|%s|%d|%f|%e|n”,c,“Hello”,x,y,y); printf(“|%c|%s|%d|%f|%e|n”,c,“Hello”,x,y,y); 2022-2-24v 标志标志 - -表示输出值左对齐,右边补空;表示输出值左对齐,右边补空; 【例】【例】 printfprintf(

47、”-d”-d”,-24-24);); 运行结果:运行结果:-24-24 + +表示输出结果右对齐,输出符号位;表示输出结果右对齐,输出符号位; 对对o o格式输出时加前缀格式输出时加前缀0 0,对,对x x格式输出时加前缀格式输出时加前缀0 x0 x,对,对 e e、g g、f f格式当结果有小数时才给出小数点;格式当结果有小数时才给出小数点;2022-2-24v 精度精度 m .nm .n 【例】【例】printfprintf(“8.1f”8.1f”,123.45123.45);); 输出结果:输出结果: 123.5123.5v 输出宽度输出宽度 用十进制整数限定输出数据的位数:用十进制整数

48、限定输出数据的位数: 【例】【例】printfprintf(“5d”5d”,-24-24);); 运行结果:运行结果: -24-24数据总宽度小数位数2022-2-24v 类型修饰类型修饰 h h表示输出项是短整型或无符号短整型;表示输出项是短整型或无符号短整型; l l表示输出项是长整型或无符号长整型;表示输出项是长整型或无符号长整型;【例】【例】 long int xlong int x12345671234567; printfprintf(”|%ld|%d|”, x, x|%ld|%d|”, x, x); ; 输出结果:输出结果:|1234567|-10617|1234567|-106

49、17|2022-2-24 【例】【例】printfprintf函数应用举例。函数应用举例。 include include main( ) main( ) int x =28; int x =28; float y =-1.7; float y =-1.7; char c =B; char c =B; double z =1.25e+7; double z =1.25e+7; printf(“x=%+5d, y=%-8.3fn”, x, y); printf(“x=%+5d, y=%-8.3fn”, x, y); printf(“|%c#%-5c|n”, c, c); printf(“|%c#

50、%-5c|n”, c, c); printf(“z=%lfn”, z); printf(“z=%lfn”, z); x= x= +28,y=-1.700+28,y=-1.700 |B#B|B#B | |Z=12500000.000000Z=12500000.0000002022-2-243.2.2 3.2.2 数据的输入数据的输入 1 1、getchargetchar函数函数c cgetchargetchar( ) 从键盘上读取从键盘上读取字符;字符;【例】【例】include main( ) char ch; ch=getchar( ); printf(“%c:%dn”, ch, ch);

51、include main( ) char ch; ch=getchar( ); printf(“c:%dn”, ch, ch); 2022-2-24 2 2、scanfscanf函数函数 1 1)函数调用)函数调用 scanfscanf(“格式控制字符串格式控制字符串”,输入项,输入项1 1,输入项,输入项2 2,) 按指定的格式接收由键盘输入的数据,并存入输按指定的格式接收由键盘输入的数据,并存入输入项变量所在的内存单元中。入项变量所在的内存单元中。 格式修饰格式修饰 格式字符格式字符 输入项必须为地址引用:输入项必须为地址引用:& &变量名变量名【例】【例】scanf(“%

52、d, %d”, &x, &y);scanf(“%d, %d”, &x, &y);2022-2-24 2 2)scanfscanf函数中常用的格式控制函数中常用的格式控制 格式字符格式字符 见见P P3636表表3.33.3; 输入数据宽度输入数据宽度 用十进制整数设定输入数据的宽用十进制整数设定输入数据的宽 度,【例】度,【例】scanfscanf(”5d”5d”,&a&a); ;输入输入765437654321 类型修饰符类型修饰符 类同于类同于printfprintf函数;函数; 3 3)scanfscanf函数的使用要点函数的使用要点 in

53、t xint x;scanfscanf(”%d”%d”,x x);); 输入数据时,不允许规定精度输入数据时,不允许规定精度错误错误scanf(”%d”,&x)2022-2-24 输入数据时,数据与数据之间应使用分隔符;输入数据时,数据与数据之间应使用分隔符; 【例】【例】scanfscanf(”d d,d”d”,&x&x,&y&y);); 【例】【例】scanfscanf(”d dd”d”,&x&x,&y&y);); 按原样输入的字符在键入时不能遗漏,否则将导致数据按原样输入的字符在键入时不能遗漏,否则将导致数据 项与对

54、应读入数据错位;项与对应读入数据错位; 【例】【例】scanf(“x=%d,y=%d”,&x,&y);scanf(“x=%d,y=%d”,&x,&y);正确的输入应该是正确的输入应该是x x3 3,y y4 4 键入数据的类型、宽度应该与格式控制中给定的相一致;键入数据的类型、宽度应该与格式控制中给定的相一致; 例例 double adouble a,b b;scanfscanf(”d dd”d”,&a&a,&b&b);); 错误错误2022-2-24 为了提高程序设计的质量和效率,现在普遍采用结构化程序为了提高程序设计的质量和效

55、率,现在普遍采用结构化程序设计方法。结构化程序由若干个基本结构组成。每一个基本结构可设计方法。结构化程序由若干个基本结构组成。每一个基本结构可以包含一个或若干个语句。以包含一个或若干个语句。 见下图。先执行见下图。先执行A A操作,再执行操作,再执行B B操作,两者是顺操作,两者是顺序执行的关系。图是序执行的关系。图是nsns结构化流程图。结构化流程图。2022-2-24 【例】输入三角形的三边长,求三角形面积。【例】输入三角形的三边长,求三角形面积。 设输入的三边长设输入的三边长a a、b b、c c能构成三角形。从数学知识已知求三角能构成三角形。从数学知识已知求三角形面积的公式为:形面积的

56、公式为: 其中其中s=(a+b+c)/2s=(a+b+c)/2; include include includeinclude main( ) main( ) float afloat a,b b,c c,s s,areaarea; scanf(%fscanf(%f,%f%f,%f%f,&a&a,&b&b,&c)&c); s= (a+b+c) /2 s= (a+b+c) /2 ; area=sqrt(sarea=sqrt(s* *(s-a)(s-a)* *(s-b)(s-b)* *(s-c)(s-c); 2022-2-24 printf(a=%7

57、.2fprintf(a=%7.2f,b=%7.2fb=%7.2f,c =%7.2fc =%7.2f,s =%7.2fns =%7.2fn, a a,b b,c c,s)s); printf(area=%7.2fnprintf(area=%7.2fn,area)area); 运行情况如下:输入运行情况如下:输入 3 3,4 4,6 6 a= a= 3.003.00,b=b= 4.004.00,c=c= 6.006.00,s=s= 6.506.50 area=area= 5.33 5.33 2022-2-24【例】编写程序,键盘输入一个三位整数,逆序输出之。【例】编写程序,键盘输入一个三位整数,逆

58、序输出之。 #include#include main( ) main( ) int a,i,j,k; int a,i,j,k; printf(“Input datas:”); printf(“Input datas:”); scanf(“%3d”,&a); scanf(“%3d”,&a); a=i+ja=i+j* *10+k10+k* *100;100; printf(“output:%dn”,a); printf(“output:%dn”,a); 2022-2-24 【例】不借助于第【例】不借助于第3 3个变量,将键盘输入的两个整数赋予变个变量,将键盘输入的两个整数赋予变量

59、量a a和和b b,程序输出,程序输出a a,b b的原始值以及相互交换后的值。的原始值以及相互交换后的值。 includeinclude main( ) main( ) int a,b; int a,b; printf(“Input a and b:”); printf(“Input a and b:”); scanf(“%d%d”,&a,&b); scanf(“%d%d”,&a,&b); printf(“old a=%d b=%dn”,a,b); printf(“old a=%d b=%dn”,a,b); a=a+b; a=a+b; b=a-b; b=a-b

60、; a=a-b; a=a-b; printf(“new a=%d b=%dn”,a,b); printf(“new a=%d b=%dn”,a,b); 686+8=1486+8=1414-8=614-6=862022-2-242022-2-24 顺序结构顺序结构选择结构选择结构 p代表一个条件,当代表一个条件,当p条件成立条件成立(或称为或称为“真真”)时执行时执行A,否则执,否则执行行B。注意,只能执行。注意,只能执行A或或B之一。两条路径汇合在一起然后出口。之一。两条路径汇合在一起然后出口。2022-2-24 【例】【例】ifif条件语句。条件语句。 ifif(x0 x0) return

61、1;return 1; else return else return 1 1 【例】【例】switchswitch多分支选择语句。多分支选择语句。 switch switch (monthmonth) case 1 case 1 case 3 case 3 day=31 day=31 case 4 case 4 case 6 case 6 day=30 day=30 2022-2-24 4.1.1 if4.1.1 if语句的三种基本形式语句的三种基本形式 1 1、ifif结构结构 ifif语句语句的语法形式是的语法形式是: : 【例】【例】if( x0 ) y=1;if( x0 ) y=1; 其中其中“x0”x0”是一个关系表达式。是一个

温馨提示

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

评论

0/150

提交评论