C语言程序设计PPT课件.ppt

上传人:本田雅阁 文档编号:2756329 上传时间:2019-05-11 格式:PPT 页数:276 大小:3.11MB
返回 下载 相关 举报
C语言程序设计PPT课件.ppt_第1页
第1页 / 共276页
C语言程序设计PPT课件.ppt_第2页
第2页 / 共276页
C语言程序设计PPT课件.ppt_第3页
第3页 / 共276页
C语言程序设计PPT课件.ppt_第4页
第4页 / 共276页
C语言程序设计PPT课件.ppt_第5页
第5页 / 共276页
点击查看更多>>
资源描述

《C语言程序设计PPT课件.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计PPT课件.ppt(276页珍藏版)》请在三一文库上搜索。

1、C语言程序设计,教材分析,本书内容共有11章,可分为三部分。 第1、2章为第一部分,为初学者的入门知识,使读者对c语言编写程序的步骤、方法和程序结构及算法描述有一个大致的了解。 第3第5章为第二部分,是程序设计的基础部分,使读者详细了解c语言的基本数据类型和表达式以及c语言的控制结构。掌握了第一、二部分的内容,读者可以完成简单的程序设计。 第6章第11章为第三部分,讲述了模块化程序设计的概念和实现的方法,为程序设计提供了更多、更方便的途径,为进行综合程序设计奠定了基础。每一个章节里都有详细的程序范例来说明程序的设计思想、语句的概念、作用、含义和使用方法,使学生能够由浅入深系统地学习c语言的知识

2、,同时掌握一定的编程方法。,成绩考核,成绩考核方法: 期末成绩=平时成绩20%+期末考试80%; 注:平时成绩包括:上课情况、作业情况、上机作业完成情况等。,学习C的忠告,上机实践(编程)! (Try!),C语言程序设计教程,第1章 引言 第2章 程序的简单算法制定 第3章 基本程序语句 第4章 选择结构 第5章 循环结构 第6章 函数与编译预处理 第7章 数组 第8章 指针 第9章 构造数据类型 第10章 文件 第11章 位运算,C语言程序设计课程的任务,1. 指导学生掌握 C 程序设计语言的基础知识; 2.培养学生综合分析并编制程序解决实际应用问题的能力; 3.培养学生契而不舍的解决问题的

3、精神以及认真的学习态度。 通常我们把设计、书写及检查调试程序的过程称为程序设计。应当指出,简单的程序设计应包括以下几个部分: 确定数据结构 确定算法 编写代码 调试并运行 整理并写出文档资料,第一章 引 言,1.1 C语言的特点 1.2 简单的C语言程序介绍 1.3 C语言程序的结构 1.4 C程序设计语言的执行,1.1 C语言的特点,C语言有9种控制语句,32个关键字。 运算符丰富。共有34种运算符 数据结构类型丰富。 具有结构化的控制语句 语法限制不太严格,程序设计自由度大。 C语言允许直接访问物理地址,能进行位操作,可以直接对硬件进行操作。 生成目标代码质量高,程序执行效率高。 C语言编

4、写的程序可移植性好。,1.2 简单的C语言程序介绍,/*ex101.c-在屏幕上输出This is a C program. */ #include void main( ) printf(“This is a C program.n”); ,注释 /*ex101.c-在屏幕上输出This is a C program. */,C程序中的“/* */”之间的内容称为注释,是程序编写者给程序阅读者留下的一些说明(注释),以帮助阅读者理解程序。编译器不对注释进行编译,只将它们当作空白看待。 本程序的第1行中的注释为“ex101.c”,是说明本书编写时将这个程序保存在文件ex101.c中。,库函数与

5、文件包含命令include #include ,库函数:系统提供的标准函数,程序可直接使用; 使用库函数必须将其有关说明信息写入程序。为了用户方便,系统定义库函数时,把一类相关库函数的说明信息,分别写在一些文件中。本例中使用了库函数printf ,其有关说明信息写在文件stdio.h中。所以在程序的开始加入了#include 使用C语言的库函数,要在程序前面加上类似#include 的预处理命令, main函数,任何C程序都必须有且只能有一个主函数main(),它是程序的入口,也是程序的出口。其中,main是函数名,()内可以包含一些参数; 的内容称为函数体,其包含若干条C程序语句;不同语句之

6、间用分号分隔;一般情况下,每个程序都由一至多个函数组成;,void main( ) printf(“This is a C program.n”); ,演示ex101,语句 printf(“This is a C program.n”);,C语言的主函数体由一些语句组成。每个语句由一个分号结束。如本例中,主函数的一个语句: printf (“This is a C program.n”);,说明: 函数printf是系统提供的一个库函数,printf函数的功能是向显示器 输出一段信息,具体内容括在双引号内; 参数中的“n”代表一个命令:输出完这行字符后换行,不是要求显示的文字。,例2 写出以下

7、程序的运行结果,写出以下程序的输出结果 #include void main( ) printf(“Hellon”); printf(“world!n”); 演示 ex102,例3 四则运算编程,#include int add(int x,int y); main() int a,b,c; scanf(“%d %d“,演示ex103 演示ex104 讨论减、乘、除的编程,输入函数 Scanf(),函数说明,函数定义,1.4 C程序设计语言的执行,对于C语言程序来说,这一过程一般分为4步: 第1步:编辑源程序; 第2步:编译; 第3步:链接; 第4步:执行;,(整个过程如下图),filenam

8、e.c,filename.obj,filename.exe,出错,出错,出错,出错,调试debug,编 译,编译就是把用C语言描述的程序翻译成计算机可以直接理解并执行的机器语言命令组成的程序。C语言的编译过程分为两个阶段:首先是编译预处理,系统要先扫描程序,处理所有预处理命令,如把文件包含命令要求的文件包含(嵌入)到程序中。然后才开始编译。编译后得到的文件称为目标文件。目标文件就是用机器语言描述的文件。C语言的目标文件的后缀为.obj。目标文件的主文件名,一般与源程序文件名相同。 在编译过程中,还要对源程序中的语法和逻辑结构进行检查。编译任务是由称做编译器(compiler)的软件完成的。程序

9、在编译过程中,也可能发现错误。这时要重新进入编辑器进行编辑。,链 接,链接是将与当前程序有关的、已经有的几个目标模块链接在一起,形成一个完整的程序代码文件。这些已经有的目标模块有: 库函数:如前面使用的printf; 对于大的程序,常常分成几个模块,分别编写、编辑和编译,形成不同的目标模块。 经正确链接所生成的文件才是可执行文件。可执行文件的文件名后缀为.exe(有的系统为.out)。完成链接过程的软件称为链接器(linker)。 程序在连接过程中,也可能发现错误。这时也要重新进入编辑器进行编辑。,执 行,链接后得到的可执行文件名,对操作系统来说,相当于一条命令。在操作系统提供的命令界面上打入

10、这个命令,就可以开始执行这个程序。,C语言的集成开发环境,Turbo c 2.0 Turbo c+(选用)Vc+等 (1)打开Turbo c+运行环境。界面如图:,从图可以看到在集成环境的上部,有一行“主菜单”,其中包括下面10个菜单项: File Edit Search Run Compile Project Options Debug Window Help 分别代表:文件操作、编辑、查找、运行、编译、项目文件、选项、调试、窗口、帮助等功能。用户可通过以上菜单项来选择使用Turbo C集成环境所提供的各项主要功能。 (2)编辑源程序。 在File菜单下选择NEW子菜单项命令,系统的光标处于

11、等待输入C源程序状态。输入完源程序后,选择File菜单下选择Save as子菜单项命令进行保存,在随后弹出的保存文件对话框中,输入文件名*.c后按“” (3)编译源程序 选择Compile主菜单项并在其下拉子菜单中选择Compile 命令,则进行编译。若源程序无语错误,生成可执行文件EXE;若源程序有语法错误,在Message窗口显示错误信息,此时没有生成可执行文件,应回到第2步,修改程序的错误,直到无语法错误、生成可执行文件。,返回,(4) 连接程序 在Compile菜单中,选择Link子菜单项命令,程序将被连接成可执行程序。 注:按F9键,可一次完成编译和连接。 (5) 执行程序。选择Ru

12、n子菜单命令,或按快捷键Ctrl+F9。 (6) 看结果。程序运行后看结果必须选择File菜单下的DOS Shell命令 或者按快捷键Alt+F5,才能看到运行的结果。 如程序未得到预期的结果,应回到第2步,修改程序的错误。 (7) 退出Turbo C+,File-Quit菜单命令或按Alt+X。,总结:简单C语言程序设计步骤,分析问题,设计解决方案 了解和编写C语言程序代码,上机调试(编辑、编译、链接、执行),理论课的主要内容,实验课的主要内容 上述每个步骤都可能出现很多错误,具体有三种错误:语法错误、逻辑错误、运行错误。总之,出现错误就要进行调试。,作 业,1、在屏幕上输出如下图形: 25

13、 要求:写出程序,并上机调试,尽量保证程序能够得到正确结果。复习本讲内容(第一章),预习教材第二章。,第二章 程序的简单算法制定,2.1 结构化程序的算法制定 2.2 结构化程序的算法描述 2.3 算法制定的范例,2.1 结构化程序的算法制定,利用计算机处理问题简述,2.1 结构化程序的算法制定,例2.1 从键盘输入3个数,找出其中最小的那个数。 分析:1、需变量的个数-3个 2、先比较a,b的值,把小的存在min中。 3、再用min与c比较,把数值小的存放在min中。 如果 ab 则 min=a,否则min=b; 如果cmin则min=c, 否则不变。 画出对应的流程图。 演示程序ex201

14、,【例】让某学生解方程 ax2+bx+c=0 求解过程:,分析问题 这是一个一元二次方程(代数问题,须中学代数知识) 确定处理方案 用求根公式 确定解题步骤 确定a、b、c的值 求出b2 -4ac的值 如果 b2 -4ac0(双实根) X1= X2= 如果 b2 -4ac=0(单实根) X1=X2= 如果 b2 -4ac0(双复根) X1= X2= 根据上述步骤计算 写出答案,整理、分析结果,2.2 结构化程序的算法描述,什么是算法 为解决一个问题所采取的方法和步骤称为算法。 算法的特性 有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性。 算法有两个很重要的方面: (1)按什么顺序或

15、步骤执行 (2)用什么语句来实现,2.2 结构化程序的算法描述,自然语言 特点:易懂、冗长、易产生歧义 流程图 N-S结构化流程图 PAD图 伪代码 计算机语言,伪码语句示例之一 if students grades greater than or equal to 60 display ” Passed” else display ”Failed”,伪码语句示例之二 如果学生成绩大于或等于60 显示”及格” 否则 显示 ”不及格”,C语言源程序段示例 if (grade=60) printf(“Passed!”); else printf(“Failed”);,算法可采用自然语言、流程图、N

16、-S图、PAD图、伪代码等方法来描述。 示例:根据学生成绩输出评定结果。,一、算法(algorithm),二、算法与流程图传统流程图,特点: 直观形象; 使用流线。 缺点: 占面积大,使用流线任意转移,易出现“乱麻”现象,造成编程与阅读程序困难。,二、算法与流程图N-S结构化流程图,77年美学者I.Nassi和B.Scheiderman提出。 特点 取消流线 不允许流程任意转移,只能从上而下顺序执行 规定三种基本结构的流程图单元,由这些基本结构象搭积木似的组成各种算法(结构化设计)。 优点 算法清晰,流程不会无规律乱转移。,二、算法与流程图三种基本结构,通常情况下,程序中的语句是以所编写的顺序

17、一句接一句地执行,这种执行方法称为“顺序执行”。许多C语句能够让程序员指定不按编写顺序执行下一条执行语句,这种执行方法称为“控制转移”。 Bohm和Jacopini的研究证实,所有的程序都能够只用三种控制结构编写,即 顺序结构 选择结构(selection structure) 循环结构(repetition structure) 顺序结构是C语言的基本结构,除非指示转移,否则计算机自动以语句编写的顺序一句一句地执行C语句。 任何C语言程序都是由七种控制结构(顺序结构、三种选择结构和三种循环结构)构成的。,二、算法与流程图三种基本结构,顺序结构 A块、B块顺序执行(每块代表一个或一组操作),二

18、、算法与流程图三种基本结构,选择结构 条件p成立时执行a块(否则执行b块) if 选择结构 条件为真时执行某个指定的操作,条件为假时跳过该操作(单路选择) ifelse选择结构 条件为真时执行某个指定的操作,为假时执行另一个指定的操作(双路选择) switch选择结构 根据表达式的值执行众多不同操作中的某个指定的操作(多路选择),二、算法与流程图三种基本结构,循环结构 分当型和直到型两类。 当型 先判断,只要条件为真就反复执行A块,为假则结束循环。 直到型 先执行A块,再判断条件是否为真,为真则继续执行循环体,为假则结束循环。 C语言提供了三种循环结构,即while循环结构,dowhile循环

19、结构和for循环结构。,2.2.3 PAD图,PAD(Problem Analysis Diagram)另一种被广泛使用的一种算法的图形表示法。 PAD图可以看成是二维的,它能展现算法的层次结构。(顺序结构很简单,在此未画图。),2.3 算法制定范例,例2.4 把从键盘输入的大写字母转换成小写字母,输出结果。 问题: 1、描述算法 2、根据算法编写C程序 3、运行检查程序是否正确。 演示ex202,2.3 算法制定范例,例2.5 已知实数a和b,计算u的值:u=(r+s)2。其中,当ab时,r=a2-b2,s=a/b;当ab时,r=b2-a2,s=a/b+4。 算法(自然语言描述): 从键盘输

20、入实数a和b。 如果ab,则r=a2-b2,s=a/b;否则,r=b2-a2,s=a/b+4。 计算u的值: u=(r+s)2。 输出u的值。,开始,输入a,b,ab,T,F,r=a*a-b*b,s=a/b,r=b*b-a*a,s=a/b+4,结束,u=(r+s)*(r+s),输出u的值,流程图,输入实数a,b,ab,F,T,r=a*a-b*b s=a/b,r=b*b-a*a s=a/b+4,计算的值:u=(r+s)*(r+s),输出u的值,N-S图,输入实数a,b,ab,r=a*a-b*b,s=a/b,r=b*b-a*a,s=a/b+4,计算u=(r+s)*(r+s),输出u的值,PAD图,

21、/*例2.5*/ #include main() float a,b,r,s,u; printf(“请输入变量a、b的值:“); scanf(“%f %f“, ,C语言描述,小结: 本章主要介绍了程序算法的制定方法:自然语言、流程图、N-S图和PAD图。通过用这些方法表示解题思路。 作业: 用流程图、 N-S图和PAD图描述问题的算法: 从键盘输入3个整数a,b,c,输出其中的最大的数。,第三章 基本程序语句,C语言的数据类型简介 几个基本概念 C语言的三种基本数据类型 基本运算符和表达式 C基本语句 数据的输出 数据的输入 简单程序设计举例,3.1 C语言的数据类型简介,C语言的数据结构,3

22、.2 几个基本概念,3.2.1 标识符 1标识符概念:是用来标识名称的,可以用来标识变量名、符号常量名、函数名、类型名、数组名、文件名等。C语言规定标识符只能由字母、数字和下划线组成,且第一个字符必须是字母或下划线。如:Day ,month ,student ,name_1 ,s2 ,_12 ,_t13 注意: C语言中大写字母和小写字母被认为是两个不同的字符,大写字母A与小写字母a则表示不同的标识符。 采用“见名知义”的原则,3.2 几个基本概念,3.2.1 标识符 2标识符的分类 关键字(代表固定含义,不能另做他用。书P21) 分为三类 预定义标识符(有特定含义,包括C语言库函数名 和变异

23、预处理命令允许另做他用,但标识符失去原义) 用户标识符(用户自己定义,不能使用关键字,可 以使用预定义标识符,建议不要使用预定义标识符),3.2 几个基本概念,3.2.2 常量 在程序运行中,其数值不能被改变的量 1直接常量:是在程序中直接引用的数据 2符号常量:符号常量是用标识符来代表一个数据 符号常量的定义形式: #define 符号常量标识符 常量数据 例如: #define PI 3.14159,3.2 几个基本概念,3.2.3 变量 变量是指以标识符为名字,其值可以改变的量。,变量分为整型、实型、字符型等。,3.2 几个基本概念,3.2.3 变量 2、变量初始化 在说明变量的同时给变

24、量一个初始值。 int a=5, b=3; int a,b,c; a=b=c=3; int a=b=c=3; ,例如,注意:在同一程序块中,变量不能被重复定义;使用变量时必须“先定义,后使用”。,3.3 C语言的三种基本数据类型,3.3.1 整型数据 1、整型常量: (1) 十进制形式: 与数学上的整数表示相同; 例如: 12, -100, 0 (2) 八进制形式: 在数码前加数字0; 例如: 012=1*81+2*80=10(十进制) (3) 十六进制形式: 在数码前加0X(数字0和字母X)。 例如: 0x12=1*161+2*160=18(十进制) * 八进制的数码范围为07; 018 *

25、 十六进制的数码除了数字09外, 还使用英文字母a f (或A F)表示1015。 如:0x1e ,注意!,3.3 C语言的三种基本数据类型,2、整型变量 ()整型变量分类 根据数据所占的二进制位数分为:int、short、long; 同样存储长度的数据又分unsigned、signed; 故可组合出六种类型。 ()整型数据的存储方式 数据在内存中是以二进制形式存储的。 C语言中,一个int型数据通常用两个字节存放,其中最高位用来存放整数的符号,若最高位为0则表示该数为正数,若最高位为1则表示该数为负数。 如:int i=-1; 则存放形式为:,3.3 C语言的三种基本数据类型,3、值域:变量

26、允许存放的数值范围 由机器中数据的存储长度决定。 VC 6.0 所支持的整型数据,3.3 C语言的三种基本数据类型,例3.1:P24 思考:运行结果是否正确,说明理由!,#include main() int a,b,c,d; unsigned u,v; a=1;b=3;c=6;d=-7; u=a+b;v=c+d; printf(“u=%d,v=%un“,u,v);,3.3 C语言的三种基本数据类型,3.3.2 实型数据 1、实型常量: (1) 十进制小数形式:由数字和小数点组成; 例如: 3.4 , 4. , .3 (2) 指数形式:“十进制小数”+“ e(或E)”+“十进制数整数”。 例如

27、: 12.5e-6 表示12.510-6 。 规范化指数形式: 小数点不能单独出现; 0. .0 . e或E的两边必须有数,且其后面必须为整数; 如: 6E0.2 e5 2、实型变量(分类和值域): 关键字 字节数 取值范围 精度(位) float 4 3.410-38 3.41038 7 double 8 1.710-308 1.710308 15,注意,3.3 C语言的三种基本数据类型,3.3.3字符型数据 1、常量: (1) 用单引号括起来的一个字符;如:A、1、?等。 (2) 用单引号括起来的由反斜杠()引导的转义字符。 字符形式 功能 n 换行 t 横向跳格 b 退格 r 回车 反斜

28、杠字符 单引号字符 ddd 8进制数表示的ASCII码对应的字符 xhh 16进制数表示的ASCII码对应的字符 例如:字符A的ASCII码为: 65D(十进制)=41H(十六进制)=101Q(八进制) 字符A可以表示为A、x41、101。,#include main() char c1=a,c2=b,c3=c,c4=101,c5=116; printf(“a%c b%ctc%ctabcn“,c1,c2,c3); printf(“tb%c %c“,c4,c5);,转义字符的应用,演示ex304,3.3 C语言的三种基本数据类型,2、变量的分类和值域: 分类: char 和 unsigned c

29、har; 值域: 每个字符型数据在内存中占一个字节;包括ASCII字符表中的所有字符(可显示字符和非显示字符)。 3、字符串常量: 是用一对双引号括起来的字符序列。 如:“SHANGHAI”,“FGHijk”,“CHINA”。 字符串常量的存放: 每个字符均以其ASCII码存放,且在最后加一个“空字符” a与“a”的区别。,注意,3.4 基本运算符和表达式,3.4.1 C运算符简介 按操作功能运算符大致可分为算术运算符、关系运算符、逻辑运算符、按位运算符以及其它运算符如赋值运算符、条件运算符、逗号运算符等。 表达式是由操作数和运算符组成的序列。 算术运算符 + - * / % 关系运算符 =

30、= = != 逻辑运算符 ! & 位运算符 | & 赋值运算符 = 条件运算符 ?: 逗号运算符 , 指针运算符 * 和 & 求字节数运算符 sizeof 强制类型转换运算符 分量运算符 下标运算符 其它运算符号,3.4 基本运算符和表达式,3.4.2算术运算符和算术表达式 1、 基本的算术运算符 +(加):3+4、 +3 -(减):3-5、 -5 *(乘):3*5 /(除):5/2的值为2;5.0/2的值为2.5; %(取余):5%3的值为2; -5%3的值为-2; 5%(-3)的值为2; -5%(-3)的值为-2; 12.3%3 若a能被b整除,则有:a%b=0 整型数据相除,结果整型。5

31、/3为1 求余运算两侧为整型数据 参与运算的数有一个是实型,则结果为实型,3.4 基本运算符和表达式,2.算术表达式 用算术运算符和括符将操作数连接起来的式子。 优先级:() *、/、% +、- 结合性:从左至右; 表达式的值: 数值型(int、long、unsigned、double); 例如: 已知: float a=2.0; int b=6,c=3; 求解: a*b/c-1.5+ a+(b-5)=?,float a=2.0; int b =6,c =3; a*b/c -1.5 +a + (b-5),12.0/3,1,4.0 - 1.5,2.5 + 97(int),99.5 + 1,100

32、.5(double),3.4 基本运算符和表达式,3.4.3 赋值运算符和赋值表达式 1、赋值运算符 = 2、赋值表达式:用赋值运算符将变量和表达式连接起来的式子 一般形式为: 赋值运算符 优先级: 赋值运算符的优先级比算术运算符低。 结合性:自右至左(右结合性)。 求值规则: 先计算“=”右边表达式的值,再将其值赋给左边的变量。 表达式的值:赋值号左边变量的值即为赋值表达式的值。,例如: (1) x=(y=12)/4 y值为12,x值为3,表达式的值为3 (2) x=y=12/4 y值为3,x值为3,表达式的值为3 (3) x=(y=12/4) y值为3,x值为3,表达式的值为3 (4) (

33、x=y)=12/4 ,3.4 基本运算符和表达式,3、复合赋值运算符 *=、/=、 %=、 +=、 -=等 注意: 复合运算符是一个运算符,但功能上,是两个运算符功能的组合。 例如: (1) a+=b 相当于 a=a+b a*=b 相当于 a=a*b a*=b+c 相当于 a=a*(b+c) 而不是 a=a*b+c (2) 设a=12,计算表达式a+=a-=a*12和a+=a-=a*=12的值,3.4 基本运算符和表达式,4赋值时的类型转换 实型数据赋给整型(字符型)变量:去掉小数部分; 如:int f=23.457; 变量f的值为23。 整型(字符型)数据赋给实型变量: 补足有效位。 字符型

34、数据赋给整型变量:将字符数据(8位)放到整型变量的低8位中,高8位进行“符号扩展”。 一个int、short、long、unsigned型数据赋给一个char 型变量:截取低8位赋给字符型变量。 带符号的整型数据(int型)赋给long型变量:进行符号扩展。 带符号的long型数据赋给int型变量时,只截取低16位赋给int变量。 unsigned int 型数据赋给long int变量:高位补0。 int 型数据赋给unsigned int变量:内存情况不变,但若是负数,其符号位也作为数值赋给unsigned 型变量。,3.4 基本运算符和表达式,5、自增与自减运算符 单目运算符,运算对象是

35、变量,不是表达式或者常量 +i,-i:先使变量i的值增1(或减1),再使用变量i的值作为整个表达式的值来参加其它的运算; i+,i-:先使用变量i的值进行其它运算,再使变量i的值增1(或减1)。 (1) i+; +i; (2) i=3; j=i+; (3) i=3; j=+i;,等价于 i=i+1;,j=i;i+; 所以i的值为4,j的值为3。,i+;j=i; 所以i的值为4,j的值为4。,例如:,3.4 基本运算符和表达式,5、自增与自减运算符 结合性:自右至左。 如: i = 2; j = -i+; 等价于:j=-(i+); 即: j=-i; i+; “+”与”-“是同优先级 所以i的值为

36、3,j的值为-2。 注意 “+”或“-”自增与自减运算符的使用。 设i=3,k=(i+)+(i+)+(i+),k=? 设i=3,k=(i+)+(+i)+(+i), k=? 设i=3,j=4,k=i+j,k=? 设i=3; printf(“%d %d”,i,-i+);结果为?,3.4 基本运算符和表达式,3.4.4 关系运算符和关系表达式 1. 6种关系运算符:= = != 2. 关系表达式:用关系运算符将表达式连接起来的式子 优先级: (= )( = != ) 结合性:自左至右; 表达式的值: 若为真,则结果为1; 若为假,则结果为0。 35 的值为 0; 32 的值为 0; 3+(43 的值

37、为1; ah的值为1 算术运算符优先级高于关系运算符 关系运算符优先级高于赋值运算符,例如,3.4 基本运算符和表达式,3.4.5 逻辑运算符和逻辑表达式 1. 3种逻辑运算符:& | ! 逻辑量:可以是整型、实型、字符型和指针类型, 0假 非0真; 如:0,0.0,0,NULL都代表假。 2. 逻辑表达式:用逻辑运算符将表达式连接起来的式子 优先级: !&| 结合性:自左至右; 表达式的值: 若为真,则结果为1; 若为假,则结果为0。,3.4 基本运算符和表达式,int a=5; float b=3.5; !a (0) !(a 0) (0) (a 0) (1),例如,结论: &:只要有一个为

38、假,结果则为假; |:只要有一个为真,结果则为真;,! 高 算术运算符 关系运算符 &和| 赋值运算符 低,4 - 0,1 & 2,8 4,1,0,1,5 3 & 2 | 8 4 - !5,3.4 基本运算符和表达式,注意: 在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。 例如: (1)a = 0; b = 1; c = a+ 结果: a为0,b为0,c为0,d为1。,3.4 基本运算符和表达式,逻辑表达式一般用于控制语句中的条件: 例如: (1) n是小于m的偶数: (2)year是闰年: (能被4整除但不能被100

39、整除或能被400整除),nm&n%2=0,(year%4=0&year%100!=0)|year%400=0,3.4 基本运算符和表达式,3.4.6 条件运算符 1、条件运算符 ?和: ,它们与三个操作数组成三目运算。 2、形式为: ? : 3、求值规则和表达式的值: 真(非0),求解表达式2 求解表达式1 条件表达式的值 假(0),求解表达式3,例如: int max, a=5, b=3; max=ab?a:b ab?a:b+1,又如: -a = b+ ? a+ : b+ (a=a-1;)4 = 3(b=b+1;)?a+:b+ a为4 b为4 0 4(b=b+1;) 表达式值为4 b为5 a

40、值为4,b值为5,条件表达式的值为4。 4、 优先级: 逻辑条件赋值,验证:printf(“%d %dn“,-a=b+?a+:b+,b ); 运行结果:4 5,3.4 基本运算符和表达式,5、 结合性:自右至左; y = x10 ? x/10 : x0 ? x: -x; 等价于: y = x10 ? x/10 :(x0? x: -x); 思考:当x的值为15时,表达式的结果为: 当x的值为5时,表达式的结果为:,1,5,3.4 基本运算符和表达式,3.4.7逗号运算符: , 形式: 逗号表达式1,逗号表达式2,逗号表达式n 求值规则: 从左至右依次计算各表达式的值; 优先级: 最低; 结合性:

41、自左至右; 表达式的值:最后一个表达式的值。,3.4 基本运算符和表达式,例如: a b y 表达式 y=a=4,b=5,a+b; 4 5 4 9 y=(a=4,b=5,a+b); 4 5 9 9 y=(a=4,b=5),a+b; 4 5 5 9 y=a=(4,b=5),a+b; 5 5 5 10 注意: C语言常用逗号作为分隔符, 例如: int a=3,b=4,c=5; printf(“%d,%d,%d”,(a,b,c); printf(“%d,%d,%d”,a,(a,b,c),c); 结果为3,5,5,3.4 基本运算符和表达式,3.4.8 强制类型转换运算符 强制类型转换:指将表达式的

42、类型强制转换为指定的类型, 其一般形式为: (类型名)表达式 其作用:将表达式的结果的类型强制转换为类型名所指的类型。 例如 (int)(3.4+2.8) 的值为6 强制类型转换时,得到所需类型的中间变量,而原来变量的类型不会改变。,注意:,3.4 基本运算符和表达式,例如: int a=2,b=5; float x=4.4; 则有: 表达式 结果 b/a 2 (float)b/a 2.5 (float)(b/a) 2.0 (int)x%a+x 4.4 (int)x%(a+x) 不合法,3.5 C基本语句,C语言的语句可分为以下四类: 简单语句(包括输入/输出语句) 空语句 复合语句 流程控制

43、语句,3.5 C基本语句,3.5.1简单语句 1. 表达式语句就是一个表达式加上一个分号。 如:a+; x=1; 函数调用语句由函数调用表达式加分号构成。 printf(“%d”,a); 3. 空语句 用一个分号表示,其一般形式为: ;,3.5 C基本语句,C 语言有丰富的标准函数库, 可提供各类函数供用户调用,完成预先设定好的操作.,#include #include main() int a = 2 , b = 4; float x , y; x = a / 2 + sqrt( b ); /*x=3.0 */ a+ ; /*a=3 */ y = x * a ; /*y=9.0 */ pri

44、ntf(“x=%6.2f, y= %6.2f ”, x, y); ,3.5 C基本语句,常用标准库函数求数学函数值: fabs(x) (求x的绝对值)、pow(x,y)(计算x的y次幂)、 sin(x) 、cos(x) 、 exp(x) (求ex ) 、log(x)(求lnx)等。,调用标准库函数要注意以下几点: 在程序中要包含相应的头文件 例如: 要使用标准的输入/输出函数printf()等需包含头文件 #include 要使用数学函数sqrt()等需包含头文件 #include 调用规则: 函数名(参数表),3.5 C基本语句,3.5.2 复合语句 用一对花括号将多条语句组合在一起,在语法

45、上相当于一 条语句。 1、一般形式: 内部数据说明; 语句1; 语句n; 注意: (1)在复合语句中说明的变量,是局部变量, 仅在复合语句中有效。 (2)复合语句的 之后,不能有分号。,3.5 C基本语句,复合语句(程序块) 示例【例3.3】 main( ) int x=1; int x=2; int x=3; printf(“x=%d”, x); printf(“x=%d”, x); printf(“x=%d”, x); ,3.6 数据的输出,1格式输出函数 printf( ) 格式: printf( “”,输出项1,输出项2, ,输出项n ); 例:printf( “x=%d,y=%fn”

46、 , x , x+3 );,格式控制 (用双引号括起来,控制输出项的格式和输出一些提示信息 ),输出表列 (用逗号分隔的数据组,可选项),格式控制分为两个部分: 普通字符原样输出(转义字符按表3-4输出) 格式说明%+格式字符 (替换输出),格式说明的一般形式: % - 0 m.n l(或h) 格式字符 - 左对齐输出 0 数字前的空位填0 m 输出域宽(长度,包括小数点) 如数据的位数小于m,则左端补以空格 如数据的位数大于m,则按实际位数输出 n 输出精度(小数位数) l 或 h 长度修正符 l 长整型及双精度 注:long型的数据宜用%ld,double型宜用%lf h 表示短整型 如 %hd %hx,3.6 数据的输出,格式字符(规定了输出的数据形式): %d 输出十进制整数 %x 以十六进制无符号形式输出整数 %o 以八进制无符号形式输出整数 %u 以无符号十进制数形式输出整数 %f 输出小数形式浮点数(double型用%lf ) %s 输出字符串 %c 输出单字符,3.6 数据的输出,【例1】求运行结果。 main() int a=30; printf(“%d,%o,%x,%u,%c“,a,a,a,a,a); ,结果: 30,36,1e,30,,结论: 格式字符与对应输出项类型要

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1