《C语言(第三版)》 课件 项目二 走进 C 语言_第1页
《C语言(第三版)》 课件 项目二 走进 C 语言_第2页
《C语言(第三版)》 课件 项目二 走进 C 语言_第3页
《C语言(第三版)》 课件 项目二 走进 C 语言_第4页
《C语言(第三版)》 课件 项目二 走进 C 语言_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

02走进C语言48任务1求解1×2×3×4×5——算法和基本数据类型的认识任务2求圆的面积——基本运算符的使用49求解1×2×3×4×5——算法和基本数据类型的认识任务150学习目标1.掌握程序算法的概念和基本思路。2.熟悉C语言的基本数据类型。51任务描述人们在工作和生活中,每做一件事情都要考虑采取什么样的方式、方法,所采取的方式、方法是否合理往往决定了实施过程是否顺利以及结果是否成功,这些方式、方法就是算法。不同的人解决相同的问题所用算法可能不同。本任务具体要求是编写两种算法求数学问题1×2×3×4×5的值,阅读用两种算法编写的两个程序,分析两种算法是如何在两个程序中实现的,探讨程序中所用的数据类型。52相关知识一、算法概念算法是一组解决问题的步骤,它可以产生结果,也可能在限定的条件下终止。可以用自然语言、伪代码(pseudo-code)、N/S图(也称流程图)等多种方法来描述算法。同一问题可用不同算法解决,一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。对一个算法的评价主要从时间复杂度和空间复杂度来考虑。531. 算法衡量标准算法质量好坏的衡量标准如下:(1)思路清晰正确。(2)过程简单明了。(3)算法合理准确。2. 算法分类(1)数值算法。数值算法是指关于数学问题的求解的方法,如求三角形的面积、方程式的根、100以内偶数和等。(2)非数值算法。非数值算法是指人力系统资料录入、图书馆书籍检索、办公自动化处理等数值之外的数据的处理。543. 算法应用准则设计算法时,应遵循以下几点。(1)确定性。算法中的每一个步骤都应是确定无误的,不能产生歧义。(2)有限性。算法中的每个步骤必须是有限的,而不能是无限的,要使算法在合情合理的范围内正确地执行并能得出正确的结果。55(3)有效性。算法中的每一个步骤必须能有效地执行,也就是说每一个步骤都要符合高级语言的编写特点,符合常理。(4)保证输入输出。在执行算法时,需要通过输入获取信息,目的是求解。一个算法可以有零个、一个或多个输入,没有输入可以,但没有输出的算法是没有意义的。564. 常用算法(1)递推算法。递推算法是一种用若干步可重复的简单运算(规律)来描述复杂问题的方法。(2)递归算法。递归算法通常把一个大型复杂的问题层层转化为一个与原问题相似、规模更小的问题来求解。(3)穷举算法。穷举算法又称暴力破解法,是指对于要解决的问题,列举出它的所有可能的情况,逐个判断哪些符合问题所要求的条件,从而得到问题的解。57(4)分治算法。在计算机科学中,分治算法是一种很重要的算法。分治算法可简单地理解为“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题,直到子问题可以直接求解为止,原问题的解即子问题解的合并结果。(5)动态规划算法。最优化原理是动态规划算法的基础。一个过程的最优决策无论其初始状态和初始决策如何,对以第一个决策所形成的状态作为初始状态的过程而言,在其之后所实施的诸策略必须构成最优策略。简言之,一个最优策略的子策略,对它的初态和终态而言也必定是最优的。58(6)贪心算法。贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,贪心算法不从整体最优上加以考虑,它所做出的决策仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对大部分问题能得到整体最优解或是整体最优解的近似解。595. 算法的设计【例

】计算2+4+6+8+10+…+100的算法之一是“依次判断1~100的整数,只要是偶数就累加”。分析此算法的编程思路,观察用此算法编写的程序,上机输入编辑、调试运行并输出结果。本问题求在一定范围内(题中为1~100)、满足一定条件(题中为偶数)的若干整数的和,可以理解为一个累加和的问题。设置一个变量(可用S表示),其初始值为0,在指定的范围内寻找满足条件的整数,将它们一一累加到S中,并将正在查找的整数用一个变量i表示。60可以使用C语言语句“S=S+i;”来累加,它表示把S的值加上i后重新赋给S。这个算法的累加过程需要反复执行,要用程序设计语言的循环控制语句(有关循环控制语句的知识将在后续任务中学习)来完成,其循环过程如下。(1)判断i是否满足偶数的条件,把满足条件的整数累加到S中。(2)对循环次数进行控制,这可以通过i的变化来控制。61二、数据类型1. 常用数据类型(1)字符型(char)数据。每个字符型数据在内存中占1个字节的存储空间。(2)整型(int)数据。整型数据用来描述整数,整数在计算机中是准确表示的。整型数据的长度与机器字长相同,16位的编译器上整型数据长为16位,32位的编译器上整型数据长为32位。62(3)实型数据。1)单精度浮点型(float)数据。单精度浮点型数据用于描述日常使用的实数,实数在计算机中一般是近似表达的。每个单精度浮点型数据占4字节的存储空间,以浮点形式存储。2)双精度浮点型(double)数据。每个double型数据占8字节的存储空间,双精度型数据的实数近似程度比较高。(4)无值型(void)数据。无值型数据没有具体的值,通常描述无形式参数的函数、无返回值的函数等。632. C语言的特点(1)整型常量。整型常量即整数,在计算机中是准确表示的,C语言能识别的整数可以是十进制、八进制和十六进制,输出格式分别为%d、%o和%x。(2)实型常量。实数在计算机中是近似表示的,又称浮点数。在C语言中,实数只采用十进制。它有两种书写形式,即十进制小数形式和指数形式。64(3)字符型常量。1)普通字符。字符型常量只能是单个字符,并且只能用单引号引起来,不能用双引号或括号。字符可以是字符集中的任意字符,数字字符用单引号引起来后不能以原数值参与数值运算。2)ASCII码。ASCII码即美国信息交换标准代码,现已成为国际通用标准,它统一规定了常用符号用相应的二进制数来表示。标准ASCII码也称基础ASCII码,使用7位二进制数来表示所有的大写和小写字母、数字0~9、标点符号以及一些特殊控制字符。653)转义字符。转义字符是一种特殊的字符型常量,以反斜杠“\”开头,后跟一个或多个字符。转义字符具有特定的含义,不同于字符原有意义,故而得名。4)字符串常量。字符串常量是由一对双引号引起来的字符序列。(4)符号常量。符号常量是使用一个标识符表示一个常量,需要用#define命令定义,一个#define命令只能定义一个符号常量,末尾不加分号并且符号常量名习惯上采用大写。663. 变量及其类型(1)变量概念。1)变量定义。在C语言中,变量必须先定义后使用。变量定义的一般形式如下。类型说明符

变量名;2)变量赋初值。在定义变量的同时,还可以进行赋值操作。3)变量定义的位置和作用域。变量定义的位置有3处,在函数外部定义的变量称为全局变量;在函数体内定义的变量称为局部变量;在函数的形式参数表中定义的变量称为形式参数,简称形参。67(2)变量类型。1)整型变量。整型变量按照在内存中所占字节长度可分为短整型(shortint)变量、基本整型(int)变量和长整型(longint)变量;根据有无符号可分为有符号(signed)整型变量和无符号(unsigned)整型变量,有符号整型变量可以表示0、正数和负数,无符号整型变量可以表示0和正数,但表示正数的范围扩大一倍。682)实型变量。实型变量可用于存放特别大或特别小的数,整型变量可表示的数据范围有限,超出就会发生溢出,导致程序出错,这时可以考虑用实型变量存放数据。但实型数据总会有误差,所以有效位数很重要。实型变量主要有单精度浮点型(float)变量和双精度浮点型(double)变量两种形式。单精度型变量有效位数为7位,一般双精度型变量有效位数为16位,长双精度型变量有效位数为19位。3)字符型变量。字符型变量用来存放单个字符,在内存中占1个字节的存储单元,用关键字char进行定义。字符型变量只能存放1个字符,而不能存放字符串。69求圆的面积——基本运算符的使用任务270学习目标1.能运用基本算术运算符编写程序。2.能运用逻辑运算符、关系运算符和条件运算符编写程序。3.能规范编写C语言程序表达式。71任务描述无论是简单的数值运算,还是较复杂的逻辑运算,只要有运算就要用到运算符。在C语言中,运算符是执行特定算术或逻辑操作的符号。“+”“-”“*”“/”这4个符号分别是C语言中“加”“减”“乘”“除”4种运算符,只用这4个简单的运算符就能解决很多数、理、化等各领域的运算问题。不过,“+”“-”“*”“/”运算符只是C语言运算符中最简单、最常用的一小部分,C语言各种运算符及其参与构成的表达式数量众多,这在高级语言中是少见的,这也是C语言的主要特点之一。72本任务介绍C语言的运算符和如何正确使用运算符写出合法的表达式。通过实例体会,正是丰富的运算符和各种运算符构成的表达式,使C语言编程的表达方式灵活多样、功能强大。本任务具体要求是已知正n

边形的周长是

r,用正n

边形的边长做一个圆的半径,求圆的面积,上机编辑调试正

n边形的周长是9的程序,并输出

n

为3时圆的面积。73相关知识C语言中运算符的作用是告诉编译程序如何执行程序代码运算,针对几个操作数项目进行运算。针对一个操作数项目进行运算称为单目运算,针对两个操作数项目进行运算称为双目运算或二元运算,依此类推。用运算符把C语言中操作数连起来的式子称为表达式。当几个不同的运算符同时出现在表达式中时,各运算符参与运算的先后顺序称为运算符的优先级。在表达式中,优先级较高的运算符先于优先级较低的运算符进行运算。C语言运算符的优先级共分为15级,其中1级运算符的优先级最高,15级运算符的优先级最低(见附录2)。74C语言的运算符除了具有不同的优先级外,还有一个特点,就是具有不同的结合性。运算符的结合性是指当同一个优先级的运算符同时出现在表达式中时,其运算的优先次序。运算符的结合性分为两种,即左结合性(自左向右运算)和右结合性(自右向左运算)。根据运算符的结合性可以确定表达式运算的结合方向。具有右结合性的运算符包括所有单目运算符、赋值运算符“=”和条件运算符,其他运算符都是左结合性的运算符。在一个操作数两侧的运算符优先级相同时,按运算符的结合性所规定的结合方向处理。75各操作数参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,这种结合性是其他一些高级语言的运算符所没有的,因此也增加了C语言的复杂性,编程中应注意运算符的结合性,以免出现错误。C语言的运算符按功能可分为算术运算符、赋值运算符、关系运算符、逻辑运算符、条件运算符、逗号运算符、取内存字节数运算符、强制类型转换运算符、指针运算符、特殊运算符和位操作运算符等。运算符按不同方式组合可构成功能丰富的表达式,实现各种运算,为C程序的编写奠定基础。76一、算术运算符和算术表达式算术运算,也称数值运算,是程序设计中使用最多的一种数据运算。1. 算术运算符算术运算符可用于各类数值运算。算术运算符包括加“+”、减“-”、乘“*”、除“/”、求余(或称模运算,“%”)、自增“++”、自减“--”,共7种。77(1)基本运算符。1)加法运算符“+”。加法运算符为双目运算符,即应有两个操作数参与加法运算,如x+y、a+5+6等。加法运算符具有左结合性。2)减法运算符“-”。减法运算符为双目运算符,具有左结合性。3)乘法运算符“*”。乘法运算符为双目运算符,如a*b等,具有左结合性。4)除法运算符“/”。除法运算符为双目运算符,如5/6等,具有左结合性。78(2)求余运算符。求余运算符(模运算符)“%”为双目运算符,求余运算的结果等于两数相除后的余数,如3%2的结果为1,具有左结合性。求余运算符用来求两个整数的余数时,要求两侧数据必须是整型数据。(3)自增、自减运算符。自增运算符和自减运算符都是单目运算符,具有右结合性。自增运算符记为“++”,其功能是使变量的值自增1。自减运算符记为“--”,其功能是使变量值自减1。79(4)算术运算符的优先级和结合性。1)优先级。算术运算符的优先级从高到低依次为:自增“++”、自减“--”优先于乘“*”、除“/”、求余“%”;乘“*”、除“/”、求余“%”优先于加“+”、减“-”。2)结合性。乘“*”、除“/”、求余“%”、加“+”、减“-”具有左结合性;自增“++”、自减“--”、负号“-”具有右结合性。802. 算术表达式用算术运算符把操作数连起来的式子称为算术表达式。算术表达式要按规则正确书写,尤其是乘法运算符“*”在表达式中既不能用“×”“.”符号代替,也不能省略;除法运算符“/”同样也不能用“÷”符号代替。恰当使用圆括号可以改变算术运算优先次序,避免出现二义性。又如,在表达式“---i”中,3个负号会产生歧义,系统编译时会出错,正确的表达式应写为“-(--i)”。圆括号使用时要“成对”出现。C语言中允许多重圆括号嵌套“成对”使用,不允许使用方括号或大括号,方括号和大括号有另外的含义。81二、赋值运算符和赋值表达式1. 赋值运算符赋值运算符是最典型的右结合性运算符。(1)简单赋值运算符。简单赋值运算符“=”是双目运算符,必须连接两个操作数,运算符“=”左边只能是变量或数组元素,不能是常量,不能是表达式;右边则可以是任何表达式。82(2)复合赋值运算符。在C语言中有10种复合赋值运算符,也称赋值缩写。它们分别由一个双目运算符与赋值运算符“=”组成,具有赋值和计算双重功能。使用复合赋值运算符可以简化程序,提高编译效率。复合赋值运算符分为两种,即复合算术赋值运算符和复合位运算赋值运算符。复合算术赋值运算符有“+=”“-=”“*=”“/=”“%=”,复合位运算赋值运算符有“<<=”“>>=”“&=”“|=”“^=”,其具体含义见下表。8384复合赋值运算符及其含义2. 赋值表达式用赋值运算符把操作数连接起来的式子称为赋值表达式。简单赋值表达式的一般如下。变量

赋值运算符

表达式复合赋值表达式的一般形式如下。变量

双目运算符

赋值运算符

表达式复合赋值表达式的一般形式等效于下列形式。变量

赋值运算符

变量

双目运算符

表达式赋值表达式的值就是为变量所赋的值。在进行复合赋值运算时,要将右边的表达式作为一个整体与左边的变量进行运算。85三、关系运算符和关系表达式关系运算符用于程序中的比较运算。在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作。关系运算符主要用于构造流程控制中的条件表达式,运算结果是逻辑值。1. 关系运算符比较两个量大小的运算符称为关系运算符,主要用来对两个算术表达式或赋值表达式进行比较运算。C语言中的关系运算符有“<”“<=”“>”“>=”“==”“!=”,其含义见下表。86关系运算符都是双目运算符,其结合性均为左结合性。关系运算符的优先级低于算术运算符,高于赋值运算符。在6个关系运算符中,“<”“<=”“>”“>=”的优先级相同,“==”和“!=”的优先级相同,“<”“<=”“>”“>=”的优先级高于“==”和“!=”。87关系运算符及其含义2. 关系表达式用关系运算符把操作数连接起来的式子称为关系表达式。关系运算符中相等的比较是用两个等号表示,即“==”,注意不要与赋值运算符混淆。C语言不提供逻辑型数据,而是用整数1表示逻辑真,用整数0表示逻辑假。在同一表达式中有多个关系表达式时,应根据优先级进行运算。88四、逻辑运算符和逻辑表达式1. 逻辑运算符逻辑运算符有3种,分别是逻辑非运算符“!”、逻辑与运算符“&&”、逻辑或运算符“‖”。逻辑运算符优先次序是逻辑非运算符的优先级高于其他两个逻辑运算符,逻辑与运算符的优先级高于逻辑或运算符。89逻辑运算符和其他运算符优先级的关系是逻辑与运算符“&&”、逻辑或运算符“‖”的优先级低于关系运算符,逻辑非运算符“!”的优先级高于算术运算符。按照运算符的优先顺序可以得出表达式“a>b&&c>d”等价于“(a>b)&&(c>d)”,表达式“!b==c‖d<a”

等价于“((!b)==c)‖(d<a)”,

表达式“a+b>c&&x+y<b”

等价于“((a+b)>c)&&((x+y)<b)”。逻辑与运算符“&&”和逻辑或运算符“‖”均为双目运算符,具有左结合性;逻辑非运算符“!”为单目运算符,具有右结合性。902. 逻辑表达式用逻辑运算符把关系表达式或操作数连接起来的有意义的式子称为逻辑表达式。逻辑与和逻辑或的逻辑表达式的一般形式如下。表达式

逻辑运算符

表达式逻辑非的逻辑表达式的形式如下。!表达式逻辑表达式的值是一个逻辑值,即真或假。C语言编译系统在给出逻辑结果时,以数字1表示真,以数字0表示假,但是在判断一个量是否为真时,以非0表示真,以0表示假。可以把逻辑表达式的运算结果(0或1)赋给整型变量或字符型变量。91(1)逻辑与运算。逻辑与运算也称逻辑乘,需要有两个运算量,当两个运算量皆为真时结果为真,两个运算量中有一个为假时其结果为假。(2)逻辑或运算。逻辑或运算也称逻辑和,需要有两个运算量,当两个运算量皆为假时结果为假,两个运算量中有一个为真时,结果为真。(3)逻辑非运算。逻辑非运算也称取反运算,仅需要有一个运算量,非真结果为假,非假结果为真。92各运算的逻辑真值表见下表。93逻辑真值表五、条件运算符和条件表达式条件运算符由“?”“:”连接组成,是三目运算符。条件表达式一般形式如下。表达式

1?

表达式

2:

表达式

3条件表达式的含义是当表达式1的值非0时,整个条件表达式的值是表达式2的值,否则,

温馨提示

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

评论

0/150

提交评论