语言程序设计课件.ppt

上传人:sccc 文档编号:5667947 上传时间:2023-08-07 格式:PPT 页数:276 大小:3.12MB
返回 下载 相关 举报
语言程序设计课件.ppt_第1页
第1页 / 共276页
语言程序设计课件.ppt_第2页
第2页 / 共276页
语言程序设计课件.ppt_第3页
第3页 / 共276页
语言程序设计课件.ppt_第4页
第4页 / 共276页
语言程序设计课件.ppt_第5页
第5页 / 共276页
点击查看更多>>
资源描述

《语言程序设计课件.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语言编写的程序可移植性好。,1.2 简单的C语言程序介绍,/*ex10

4、1.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中。,库函数与文件包含命令include#include,库函数:系统提供的标准函数,程序可直接使

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

6、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 写出以下程序的运行结果,写出以下程序的输出结果#include void main()printf(“Hellon”);

7、printf(“world!n”);演示 ex102,例3 四则运算编程,#includeint 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步:执行;,(整个过程如下图),filename.c,filename.obj,filename.exe,出错,出错,出错,出错,调试debug,编 译,编译就是把用C语言描述的程序翻译成计算机可

8、以直接理解并执行的机器语言命令组成的程序。C语言的编译过程分为两个阶段:首先是编译预处理,系统要先扫描程序,处理所有预处理命令,如把文件包含命令要求的文件包含(嵌入)到程序中。然后才开始编译。编译后得到的文件称为目标文件。目标文件就是用机器语言描述的文件。C语言的目标文件的后缀为.obj。目标文件的主文件名,一般与源程序文件名相同。在编译过程中,还要对源程序中的语法和逻辑结构进行检查。编译任务是由称做编译器(compiler)的软件完成的。程序在编译过程中,也可能发现错误。这时要重新进入编辑器进行编辑。,链 接,链接是将与当前程序有关的、已经有的几个目标模块链接在一起,形成一个完整的程序代码文

9、件。这些已经有的目标模块有:库函数:如前面使用的printf;对于大的程序,常常分成几个模块,分别编写、编辑和编译,形成不同的目标模块。经正确链接所生成的文件才是可执行文件。可执行文件的文件名后缀为.exe(有的系统为.out)。完成链接过程的软件称为链接器(linker)。程序在连接过程中,也可能发现错误。这时也要重新进入编辑器进行编辑。,执 行,链接后得到的可执行文件名,对操作系统来说,相当于一条命令。在操作系统提供的命令界面上打入这个命令,就可以开始执行这个程序。,C语言的集成开发环境,Turbo c 2.0 Turbo c+(选用)Vc+等(1)打开Turbo c+运行环境。界面如图:

10、,从图可以看到在集成环境的上部,有一行“主菜单”,其中包括下面10个菜单项:File Edit Search Run Compile Project Options Debug Window Help 分别代表:文件操作、编辑、查找、运行、编译、项目文件、选项、调试、窗口、帮助等功能。用户可通过以上菜单项来选择使用Turbo C集成环境所提供的各项主要功能。(2)编辑源程序。在File菜单下选择NEW子菜单项命令,系统的光标处于等待输入C源程序状态。输入完源程序后,选择File菜单下选择Save as子菜单项命令进行保存,在随后弹出的保存文件对话框中,输入文件名*.c后按“”(3)编译源程序

11、选择Compile主菜单项并在其下拉子菜单中选择Compile 命令,则进行编译。若源程序无语错误,生成可执行文件EXE;若源程序有语法错误,在Message窗口显示错误信息,此时没有生成可执行文件,应回到第2步,修改程序的错误,直到无语法错误、生成可执行文件。,返回,(4)连接程序 在Compile菜单中,选择Link子菜单项命令,程序将被连接成可执行程序。注:按F9键,可一次完成编译和连接。(5)执行程序。选择Run子菜单命令,或按快捷键Ctrl+F9。(6)看结果。程序运行后看结果必须选择File菜单下的DOS Shell命令 或者按快捷键Alt+F5,才能看到运行的结果。如程序未得到预

12、期的结果,应回到第2步,修改程序的错误。(7)退出Turbo C+,File-Quit菜单命令或按Alt+X。,总结:简单C语言程序设计步骤,分析问题,设计解决方案了解和编写C语言程序代码,上机调试(编辑、编译、链接、执行),理论课的主要内容,实验课的主要内容上述每个步骤都可能出现很多错误,具体有三种错误:语法错误、逻辑错误、运行错误。总之,出现错误就要进行调试。,作 业,1、在屏幕上输出如下图形:25要求:写出程序,并上机调试,尽量保证程序能够得到正确结果。复习本讲内容(第一章),预习教材第二章。,第二章 程序的简单算法制定,2.1 结构化程序的算法制定2.2 结构化程序的算法描述2.3 算

13、法制定的范例,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,【例】让某学生解方程 ax2+bx+c=0 求解过程:,分析问题 这是一个一元二次方程(代数问题,须中学代数知识)确定处理方案 用求根公式确定解题步骤 确定a、b、c的值 求出b2-4ac的值 如果 b2-4ac

14、0(双实根)X1=X2=如果 b2-4ac=0(单实根)X1=X2=如果 b2-4ac0(双复根)X1=X2=根据上述步骤计算写出答案,整理、分析结果,2.2 结构化程序的算法描述,什么是算法为解决一个问题所采取的方法和步骤称为算法。算法的特性有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性。算法有两个很重要的方面:(1)按什么顺序或步骤执行(2)用什么语句来实现,2.2 结构化程序的算法描述,自然语言特点:易懂、冗长、易产生歧义流程图N-S结构化流程图PAD图伪代码计算机语言,伪码语句示例之一 if students grades greater than or equal to

15、60 display”Passed”else display”Failed”,伪码语句示例之二 如果学生成绩大于或等于60 显示”及格”否则 显示”不及格”,C语言源程序段示例if(grade=60)printf(“Passed!”);else printf(“Failed”);,算法可采用自然语言、流程图、N-S图、PAD图、伪代码等方法来描述。示例:根据学生成绩输出评定结果。,一、算法(algorithm),二、算法与流程图传统流程图,特点:直观形象;使用流线。缺点:占面积大,使用流线任意转移,易出现“乱麻”现象,造成编程与阅读程序困难。,二、算法与流程图N-S结构化流程图,77年美学者I

16、.Nassi和B.Scheiderman提出。特点 取消流线 不允许流程任意转移,只能从上而下顺序执行 规定三种基本结构的流程图单元,由这些基本结构象搭积木似的组成各种算法(结构化设计)。优点 算法清晰,流程不会无规律乱转移。,二、算法与流程图三种基本结构,通常情况下,程序中的语句是以所编写的顺序一句接一句地执行,这种执行方法称为“顺序执行”。许多C语句能够让程序员指定不按编写顺序执行下一条执行语句,这种执行方法称为“控制转移”。Bohm和Jacopini的研究证实,所有的程序都能够只用三种控制结构编写,即 顺序结构 选择结构(selection structure)循环结构(repetiti

17、on structure)顺序结构是C语言的基本结构,除非指示转移,否则计算机自动以语句编写的顺序一句一句地执行C语句。任何C语言程序都是由七种控制结构(顺序结构、三种选择结构和三种循环结构)构成的。,二、算法与流程图三种基本结构,顺序结构 A块、B块顺序执行(每块代表一个或一组操作),二、算法与流程图三种基本结构,选择结构 条件p成立时执行a块(否则执行b块)if 选择结构 条件为真时执行某个指定的操作,条件为假时跳过该操作(单路选择)ifelse选择结构 条件为真时执行某个指定的操作,为假时执行另一个指定的操作(双路选择)switch选择结构 根据表达式的值执行众多不同操作中的某个指定的操

18、作(多路选择),二、算法与流程图三种基本结构,循环结构 分当型和直到型两类。当型 先判断,只要条件为真就反复执行A块,为假则结束循环。直到型 先执行A块,再判断条件是否为真,为真则继续执行循环体,为假则结束循环。C语言提供了三种循环结构,即while循环结构,dowhile循环结构和for循环结构。,2.2.3 PAD图,PAD(Problem Analysis Diagram)另一种被广泛使用的一种算法的图形表示法。PAD图可以看成是二维的,它能展现算法的层次结构。(顺序结构很简单,在此未画图。),2.3 算法制定范例,例2.4 把从键盘输入的大写字母转换成小写字母,输出结果。问题:1、描述

19、算法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。算法(自然语言描述):从键盘输入实数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

20、s=a/b,r=b*b-a*as=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图,/*例2.5*/#includemain()float a,b,r,s,u;printf(请输入变量a、b的值:);scanf(%f%f,C语言描述,小结:本章主要介绍了程序算法的制定方法:自然语言、流程图、N-S图和PAD图。通过用这些方法表示解题思路。作业:用流程图、N-S图和PAD图描述问题的算法:从键盘输入3个整数a,b,c,输出其中的最大

21、的数。,第三章 基本程序语句,C语言的数据类型简介几个基本概念 C语言的三种基本数据类型基本运算符和表达式C基本语句数据的输出数据的输入 简单程序设计举例,3.1 C语言的数据类型简介,C语言的数据结构,3.2几个基本概念,3.2.1 标识符 1标识符概念:是用来标识名称的,可以用来标识变量名、符号常量名、函数名、类型名、数组名、文件名等。C语言规定标识符只能由字母、数字和下划线组成,且第一个字符必须是字母或下划线。如:Day,month,student,name_1,s2,_12,_t13 注意:C语言中大写字母和小写字母被认为是两个不同的字符,大写字母A与小写字母a则表示不同的标识符。采用

22、“见名知义”的原则,3.2几个基本概念,3.2.1 标识符2标识符的分类 关键字(代表固定含义,不能另做他用。书P21)分为三类 预定义标识符(有特定含义,包括C语言库函数名 和变异预处理命令允许另做他用,但标识符失去原义)用户标识符(用户自己定义,不能使用关键字,可 以使用预定义标识符,建议不要使用预定义标识符),3.2几个基本概念,3.2.2 常量在程序运行中,其数值不能被改变的量1直接常量:是在程序中直接引用的数据 2符号常量:符号常量是用标识符来代表一个数据 符号常量的定义形式:#define 符号常量标识符 常量数据 例如:#define PI 3.14159,3.2几个基本概念,3

23、.2.3 变量变量是指以标识符为名字,其值可以改变的量。,变量分为整型、实型、字符型等。,3.2几个基本概念,3.2.3 变量2、变量初始化 在说明变量的同时给变量一个初始值。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(

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

25、:int i=-1;则存放形式为:,3.3 C语言的三种基本数据类型,3、值域:变量允许存放的数值范围 由机器中数据的存储长度决定。VC 6.0 所支持的整型数据,3.3 C语言的三种基本数据类型,例3.1:P24思考:运行结果是否正确,说明理由!,#includemain()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)指数形式:“十进制小数”+

26、“e(或E)”+“十进制数整数”。例如: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 回车 反斜

27、杠字符 单引号字符 ddd 8进制数表示的ASCII码对应的字符 xhh 16进制数表示的ASCII码对应的字符例如:字符A的ASCII码为:65D(十进制)=41H(十六进制)=101Q(八进制)字符A可以表示为A、x41、101。,#includemain()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 char;值域:每个字符型数据

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

29、,指针运算符*和&求字节数运算符 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/3为1求余运算两侧为整型数据参与运算的数有一个是实型,则结果为实型,3.4 基本运算符和表达式,2.算术表达式用算术运算符和括符将操作

30、数连接起来的式子。优先级:()*、/、%+、-结合性:从左至右;表达式的值:数值型(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.5(double),3.4 基本运算符和表达式,3.4.3 赋值运算符和赋值表达式1、赋值运算符=2、赋值表达式:用赋值运算符将变量和表达式连接起来的式子一般形式为:赋值运算符 优先级:赋值运算

31、符的优先级比算术运算符低。结合性:自右至左(右结合性)。求值规则:先计算“=”右边表达式的值,再将其值赋给左边的变量。表达式的值:赋值号左边变量的值即为赋值表达式的值。,例如:(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)(x=y)=12/4,3.4 基本运算符和表达式,3、复合赋值运算符*=、/=、%=、+=、-=等 注意:复合运算符是一个运算符,但功能上,是两个运算符功能的组合。例如:(1)a+=b 相当于 a=a+b a*=b 相当于 a=a*b

32、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。整型(字符型)数据赋给实型变量:补足有效位。字符型数据赋给整型变量:将字符数据(8位)放到整型变量的低8位中,高8位进行“符号扩展”。一个int、short、long、unsigned型数据赋给一个char 型变量:截取低8位赋给字符型变量。带符号的整型数据(int型)赋给long型变量:进行符号扩展。带符号的long

33、型数据赋给int型变量时,只截取低16位赋给int变量。unsigned int 型数据赋给long int变量:高位补0。int 型数据赋给unsigned int变量:内存情况不变,但若是负数,其符号位也作为数值赋给unsigned 型变量。,3.4 基本运算符和表达式,5、自增与自减运算符 单目运算符,运算对象是变量,不是表达式或者常量+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;,

34、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的值为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种关系

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

36、;若为假,则结果为0。,3.4 基本运算符和表达式,int a=5;float b=3.5;!a(0)!(a 0)(0)(a 0)(1),例如,结论:&:只要有一个为假,结果则为假;|:只要有一个为真,结果则为真;,!高 算术运算符 关系运算符&和|赋值运算符 低,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 基本运算符和表达式,逻辑表达式一

37、般用于控制语句中的条件:例如:(1)n是小于m的偶数:(2)year是闰年:(能被4整除但不能被100整除或能被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

38、 b为4 0 4(b=b+1;)表达式值为4 b为5 a值为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 求值规则:从左至右依次计算各表达式的值;优先级:最低;结合性:自左至右;表达式的

39、值:最后一个表达式的值。,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 强制类型转换运算符强制类型转换:指将表达式的类型强制转换为指定的类型,其一般形式为:(类型

40、名)表达式其作用:将表达式的结果的类型强制转换为类型名所指的类型。例如(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语言的语句可分为以下四类:简单语句(包括输入/输出语句)空语句复合语句流程控制语句,3.5 C基本语句,3.5.1简单语句1.表达式语句就是一个表达式加上一个分号。

41、如:a+;x=1;函数调用语句由函数调用表达式加分号构成。printf(“%d”,a);3.空语句用一个分号表示,其一般形式为:;,3.5 C基本语句,C 语言有丰富的标准函数库,可提供各类函数供用户调用,完成预先设定好的操作.,#include#includemain()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*/printf(“x=%6.2f,y=%6.2f”,x,y);,3.5 C基本语句,常用标准库函数求数学函数值:fabs(x)(求x的绝对值)、pow(x,y)(计算x的y次幂)、sin(

42、x)、cos(x)、exp(x)(求ex)、log(x)(求lnx)等。,调用标准库函数要注意以下几点:在程序中要包含相应的头文件例如:要使用标准的输入/输出函数printf()等需包含头文件#include要使用数学函数sqrt()等需包含头文件#include调用规则:函数名(参数表),3.5 C基本语句,3.5.2 复合语句用一对花括号将多条语句组合在一起,在语法上相当于一条语句。1、一般形式:内部数据说明;语句1;语句n;注意:(1)在复合语句中说明的变量,是局部变量,仅在复合语句中有效。(2)复合语句的 之后,不能有分号。,3.5 C基本语句,复合语句(程序块)示例【例3.3】mai

43、n()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”,x,x+3);,格式控制(用双引号括起来,控制输出项的格式和输出一些提示信息),输出表列(用逗号分隔的数据组,可选项),格式控制分为两个部分:普通字符原样输出(转义字符按表3-4输出)格式说明%+格式字符(替换输出),格式说明的一般形式:%-0 m.n l(或h)格式字符-左对齐输出 0

44、 数字前的空位填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

45、 a=30;printf(%d,%o,%x,%u,%c,a,a,a,a,a);,结果:30,36,1e,30,,结论:格式字符与对应输出项类型要一致,否则正确的运算结果不能得到正确的显示结果。,3.6 数据的输出,【例】若float y=1234.9999;printf(“%d”,y);则输出结果为何?,printf函数使用注意事项:在格式控制字符串中,格式说明与输出项从左到右在类型上必须一一对应匹配。在格式控制字符串中,格式说明与输出项的个数应该相同。如果要输出百分号(%),则在格式控制串中用两个连续的百分号(%)来表示。在调用printf函数时,输出项有自增(自减)运算时,计算输出项的顺序

46、从右至左。,3.6 数据的输出,【例】.格式输出函数示例程序#include main()int i=97;char ch=a;printf(“i=%d,%cn”,i,i);输出结果:i=97,a 两个输出项都是变量i,但以不同的格式输出,一个是输出的整型数,一个输出的是字符a.其格式是由%d与%c控制的.,3.6 数据的输出,字符输出函数 格式:putchar(c)其中 c为字符型或整型的常量、变量及其表达式 功能:每次向屏幕输出一个字符供显示。,【例】求以下程序运行结果#include main()char x=a;putchar(x);putchar(b);putchar(x+2);pu

47、tchar(b+2);,结果:abcd,1格式输入函数scanf()格式:scanf(“”,,3.7 数据的输入,格式控制(需要输入数据的类型),地址列表(简单变量要用&开头),格式说明的一般形式:%*m l(或h)格式字符&求地址的运算符&a 表示该变量所占空间的首地址*抑制字符(“虚读”,即读入数据后不送给任何变量),注意:scanf()函数没有输出功能(即不会向屏幕显示任何字符)也不能规定小数位数(m.n)典型错误:scanf(“a=%d,b=%d,c=%d n”,3.7 数据的输入,正确语句:printf(“Input a,b,c=“);scanf(“%d,%d,%d”,scanf()

48、注意事项,字符输入函数 格式:getchar()功能:从键盘上读入一个字符,getchar()包含在stdio.h中。,3.7 数据的输入,【例一】#include main()char a,b;a=getchar();b=getchar();printf(“a=%c,b=%cn”,a,b);运行时,如果 输入:Student 输出结果为 a=S,b=t,例3.13 输入圆的半径,输出圆的周长和面积。分析:1.定义实型变量r、l、s用于存放半径、周长、面积;2.调用输入函数,输入r:3.分别利用周长公式和面积公式求出l、s;4.调用输出函数输出l、s。,3.8 程序举例,例3.10输入圆的半径

49、,输出圆的周长和面积,#include void main()float r,l,s;scanf(“%f”,&r);/*输入一个浮点数据,存入地址&r*/l=2*3.14159*r;/*计算周长,赋值给l*/s=3.14159*r*r;/*计算面积,赋值给s*/printf(“n l=%8.4f”,l);/*周长占8个字符宽,4位小数*/printf(“n s=%8.4f”,s);/*输出面积,数据共占8个字符宽,4位小数*/,3.8 程序举例,3.8 程序举例,例3.12从键盘输入一个学生的3门课程的成绩,求其平均并输 出,保留一位小数。,例3.11从键盘输入一个小写字母,用大写形式输出该字

50、母。,例3.13 从键盘输入两个整数给两个变量x和y,交换变量x和y的值,然后输出。,程序流程控制,顺序结构程序设计,顺序结构:自顶向下顺序执行语句例:交换两个数的值,before:x=3,y=4;after:x=4,y=3;,#includemain()int x=3,y=4,t;printf(“before:x=%d,y=%dn”,x,y);t=x;x=y;y=t;printf(“after:x=%d,y=%dn”,x,y);,例:从键盘输入一个小写字母,输出其对应的大写字母及其相应的ASCII码值。程序如下:#includemain()char ch1,ch2;ch1=getchar()

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号