第2章C语言程序设计基础.ppt

上传人:sccc 文档编号:5904610 上传时间:2023-09-01 格式:PPT 页数:57 大小:1.83MB
返回 下载 相关 举报
第2章C语言程序设计基础.ppt_第1页
第1页 / 共57页
第2章C语言程序设计基础.ppt_第2页
第2页 / 共57页
第2章C语言程序设计基础.ppt_第3页
第3页 / 共57页
第2章C语言程序设计基础.ppt_第4页
第4页 / 共57页
第2章C语言程序设计基础.ppt_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《第2章C语言程序设计基础.ppt》由会员分享,可在线阅读,更多相关《第2章C语言程序设计基础.ppt(57页珍藏版)》请在三一办公上搜索。

1、第2章 C语言程序设计基础,2,回顾,C语言的特点C程序的编译和运行过程编译器将源程序转换成机器能理解的程序连接器用于连接相关的目标文件以生成可执行程序,3,教学目标,算法的表示方法理解变量和常量的含义熟悉基本数据类型 int、char、float 和 double掌握算术运算符和赋值运算符的用法理解表达式理解类型转换,4,算法,著名计算机科学家沃思提出一个公式:数据结构+算法=程序算法:为解决一个具体问题而采取的确定的有限的操作步骤,仅指计算机能执行的算法,对数据的描述:数据结构(data structure)对操作的描述:算法(algorithm),5,算法的特性,有穷性在合理的时间内完成

2、确定性(无歧义)如果x0,则输出Yes;如果x0,则输出No;可行性(有效性)能有效执行负数开平方没有输入或有多个输入 有一个或多个输出,有足够的情报,6,算法的表示方法,自然语言描述流程图在1966年,Bohra 与 Jacopini 提出N-S图1973年,美国学者I.Nassi 和 B.Shneiderman 提出伪代码,7,例1 有两个存储单元a和b,要求将它们的值互换。,分析:按存储器的性质,如果将单元a的值直接送到单元b中,那么就会覆盖掉b原来的内容,因此,需要借助一个临时单元c来交换。,具体算法如下:步骤1:将单元a的值送给单元c;步骤2:将单元b的值送给单元a;步骤3:将单元c

3、的值送给单元b。,自然语言描述,8,例2 求1+2+3+4+10。,步骤1:将0送到S中;步骤2:将1送到n中;步骤3:把n的值加到S中;步骤4:n增1;步骤5:若n10则转回步骤3,否则执行步骤6;步骤6:输出S的值。,自然语言描述,9,流程图通常采用一些几何图形来代表各种类型的操作,在图形内标明文字或符号来表示操作的内容,并用箭头来表示操作的顺序。,用流程图表示算法,直观形象,易于理解,但由于流程图允许使用箭头随意跳转,对表示算法的层次结构非常不利,且流程图占的篇幅较大,作图工作量也很大。,流程图,10,顺序结构流程图表示方法,B,A,11,选择结构流程图表示方法,B,N,如果 成绩60

4、那么 通知补考否则 告知你考试成绩,A,Y,条件P,12,循环结构流程图表示方法,A,条件P,A,当型循环,直到型循环,真,假,假,条件P,假,真,13,将例2 求1+2+3+4+10 用流程图进行描述。,流程图,14,针对流程图存在的缺点,I.Nassi和B.Shneiderman提出了结构化程序设计的流程图,称为N-S图,更能体现结构化程序设计的思想。推荐使用N-S图。,N-S图完全去掉了流程线,算法的所有处理步骤都写在一个大矩形框内(表示简单、符合结构化思想)(象堆积木),结构化程序设计的三种基本结构 顺序结构、选择结构、循环结构,N-S图(盒图),15,结构化程序设计的三种基本结构具有

5、以下共同的特点:只有一个入口;只有一个出口;结构内的每一部分都有机会被执行到;结构内不存在“死循环”。,N-S图(盒图),16,将例2 求1+2+3+4+10 用N-S图进行描述。,N-S图(盒图),17,将 求10个任意整数中的最大数 用N-S图进行描述。,N-S图(盒图),18,程序设计步骤,根据实际问题设计应用程序大致要经过以下四个步骤:分析问题 画流程图或N-S图 编写程序 运行并调试程序,采用自顶向下、逐步细化的结构化分析的方法,19,例3 求三个数中的最大数。,20,数据类型(Data Type),数据为什么要区分类型?不同类型的数据代表不同的数据表示形式合法的取值范围占用内存空间

6、大小可参与的运算种类,21,数据类型,在C语言中,数据类型一般包括基本数据类型、构造数据类型、指针类型和空类型等四大类。,22,一个简单的C程序例子,#include/*函数功能:计算两个整数相加之和 入口参数:整型数据a和b 返回值:整型数a和b之和*/int Add(int a,int b)return(a+b);/*主函数*/main()int x,y,sum=0;printf(Input two integers:);scanf(%d%d,/*输出x和y相加之和*/,并列的两个函数其中一个是程序的入口,程序注释,23,C语言中的基本元素,程序,语句,标识符关键字常量、变量运算符分隔符,

7、关键字(Keyword)又称为保留字数据类型修饰符int,控制语句return等 标识符(Identifier)系统预定义标识符,main,printf 等 用户自定义标识符,Add,x,y 等运算符(Operator)34种,+分隔符(Separator)空格、回车/换行、逗号等 其它符号 大花括号“”和“”“/*”和“*/”是程序注释所需的定界符 数据(Data)变量(Variable)常量(Constant),24,常量,常量是在程序中保持不变的量,常量区分为不同类型:整型、实型、字符型和字符串型 如 12、3.2、a、hello,25,整型常量,整型常量有三种不同的表示形式:十进制:无

8、前缀,无后缀八进制:在八进制数值前面加前缀“0”,其数码取值为07。例如:023,0457,01324等十六进制:前缀为“0X”或“0 x”,其数码取值为09、AF或af。例如:0X2A,0XA0,0XFFFF等当任意整型常量后跟一个字母u或U时,表示是无符号整型。例如:123u当任意整型常量后跟一个字母l或L时,表示是长整型。例如:123L,26,实型常量,实型(浮点型)常量有2种不同的表现形式:小数形式:由数字和小数点组成,必须要有小数点。例如:0.123,123.,123.0,0.0等。指数形式:如123e3或123E3都代表123103。注意字母e或E之前必须有数字,且e或E后面的指数

9、必须为整数。规范化的指数形式:在字母e或E之前的小数部分中,小数点左边应有一位且只能有一位非零的数字,如1.23e5。,27,字符型常量,C语言的字符常量是用单撇号括起来的一个字符,如A,a,$等。转义字符:以一个字符“”开头的字符序列,代表特殊的含义。,28,八进制数字表示(ddd):123 3 注意数字的取值范围十六进制数字表示(xdd):xFF x5 说明:字符可用对应的编码(整数)表示如:用 065 53 0 x35 表示 5C中经常将字符常量等价为整数参与运算:如:A+32 结果为 a 0-48 为 0,字符型常量,29,字符串由若干字符(含转义字符)组成,用双引号界定如:hello

10、 a 123 n Tomtis078n 含几个字符?没有长度为零的字符(),但有长度为零的字符串()注:双引号在一行内成对出现,长字符串可写在多行上,C会自动连接为整体。例如:hello,Im yu.Who are you?输出显示:hello,Im yu.Who are you?,字符串常量,30,符号常量,在C语言中,用一个标识符来表示一个常量,称之为符号常量一般形式为:#define,#include#define PI 3.14159main()double s,r;r=5;s=PI*r*r;printf(area s=%f,s);,31,声明和使用变量,声明变量:Datatype v

11、ariablename;如:int age;定义后给变量赋值:variablename=value;如:age=20;定义时初始化变量:Datatype variablename=value;如:int age=20;,给变量赋值,除了给一个直接的值以外,还可以通过计算获得,32,变量的命名规则:变量名可以由字母、数字和 _(下划线)组合而成变量名不能包含除 _ 以外的任何特殊字符,如:%、#、逗号、空格等变量名必须以字母或 _(下划线)开头变量名不能包含空白字符(换行符、空格和制表符称为空白字符)C 语言中的某些词(例如 int 和 float 等)称为保留字,具有特殊意义,不能用作变量名C

12、 语言区分大小写,因此变量 price 与变量 PRICE 是两个不同的变量,变量命名,在 C 语言中,变量命名需要遵循一定的规则(标识符),有效名称,principal,cost_price,marks_3,lastname,city,无效名称,123rate,currency$,discount%,zip code,33,使用整型变量,声明:int page_number;long int population;unsigned int age;初始化:int max_marks=100;,在同一语句中可以声明多个类型相同的变量:int page_number,copies,paper_w

13、idth;,34,单精度实型,float 在 C 语言中用于存储单精度实数,float,32 位,-3.410-383.410+38,7位有效数字,声明:float selling_price;初始化:float selling_price=11.3;,35,双精度实型,213.5671435568967,64位,取值范围:-1.710-308 1.7 10308,16 位有效数字,声明:double pressure_level;初始化:double pressure_level=213.5671435568967;,double 在 C 语言中用于存储双精度实数,213.5671,36,数

14、据类型所占的位数与机器硬件(CPU)、操作系统、开发环境有关。,基本数据类型与环境间的关系,37,字符型,占 8 位内存,示例:,char gender;gender=m;,char gender=m;,38,char型与int型之间的关系,#include main()char ch=b;printf(%c,%dn,ch,ch);ch=b-32;printf(%c,%dn,ch,ch);,#include main()char ch=b;printf(%c,%dn,ch,ch);ch=b-(a-A);printf(%c,%dn,ch,ch);,b,98B,66,b,98B,66,例:小写字母

15、转换为大写字母,39,函数,C语言提供了丰富的内部函数,又叫库函数,也称标准函数,其定义按函数类型存放在不同的“头文件”中,使用时应该在源文件中的开始位置包含上相应的头文件。,例如,使用数学函数时,应该在源文件中的开始位置使用#include math.h 把头文件math.h包含到源文件中。,引用内部函数时,只需要写出相应的函数名,并在后面的括号中给出所要计算的自变量值,即可得到所需要的函数值。例如,sqrt(4.0)得2.0,fabs(-100.0)得100.0。,使用标准函数时,必须注意以下两点:(1)使用三角函数时,必须注意角度的单位是“弧度”;(2)引用标准函数时,自变量要写在括号里

16、面,自变量可以是常量、变量或表达式。,40,常用的标准数学函数,41,表达式,表达式由操作数和运算符的组合而成表达式中的操作数可以是变量、常量或者子表达式表达式是常量、变量、数组元素、函数等运算对象和运算符以及括号的有意义组合。类似数学算式或公式,但写法有所不同。运算符的类型有:算术运算符+-*/%+-指针运算符*&关系运算符=|&分量运算符-赋值运算符=下标运算符 条件运算符?:其他逗号运算符,注意:运算符具有优先级和结合性。,42,算术运算符,算术,一元,二元,操作数,操作数,运算符,二元运算符,+,-,*,/,%,两个整数相除,其值为整数,如 5/3值为1操作数中有一个为实数时,结果为

17、double 型,%(模(求余)运算符):%两侧均为整型数据,43,算术运算符和算术表达式,算术,一元,-,+,num+,num=num+1,num-,num=num-1,+num-num,num+num-,前缀,后缀,二元,44,例:算术运算符和算术表达式应用,#include main()int a=5,b=3,c=25,d=12;float qu;int re,in,de;/*使用算术运算符*/qu=a/b;/除法 re=a%b;/求模 in=+c;de=-d;printf(商为%fn,qu);printf(余数为%dn,re);printf(“加 1 后为%dn,in);printf(

18、减 1 后为%dn,de);,商为 1.000000余数为 2加 1 后为 26减 1 后为 11,45,赋值运算符和赋值表达式,变量 表达式,Height=177.5Weight=78Gender=mx=a+bw=sin(a)+sin(b)y=i+-j,最简单的运算符:,=,作用是将一个数据(或表达式的值)赋给一个变量。注意:赋值符号左边只能是变量,不能是表达式,也不允许是常量。,46,复合赋值运算符,47,赋值运算符和赋值表达式使用,#include main()float book_price=60.75;/存放书的价格 printf(n 书的价格=%f,book_price);book

19、_price+=12.50;printf(n 书的新价格=%fn,book_price);,book_price=book_price+12.50;,48,逗号运算符与逗号表达式,形式:表达式1,表达式2作用:用于连接表达式,计算过程:先求解表达式1,再求解表达式2。整个逗号表 达式的值是表达式2的值。,如:3+5,6+8,例:x=(a=3,6*3)x=a=3,6*a,逗号表达式可组合,逗号运算符的优先级最低,结合方向自左到右,并不是任何地方出现的逗号都是逗号运算符,如:printf(%d,%d,%dn,a,b,c);,如:(a=3*5,a*4),a+5,49,类型溢出,C语言直接提供的任何类

20、型都有取值范围。当向其赋超过此范围的数值,就会产生数值溢出,得到一个不正确的结果。int的范围是-21474836482147483647如果超出取值范围,给它一个小于-2147483648或者大于2147483647的数会如何呢?编程测验,小蛇能吞下大象吗?,50,类型溢出解决方案,解决方案:预先估算运算结果的可能范围,采用取值范围更大的类型。1+2+3+1!+2!+3!+13+23+33+如果不需要处理负数,则采用无符号类型。在运算还没开始之前就判断运算数是否在合理的取值范围内。如果超出,则停止运算,转错误处理。,51,运算符的优先级和结合性,优先级:+、-、+、-、sizeof()*、/

21、、%+、-=、+=、-=、*=、/=、%=,结合性:右结合+、-、+、-、sizeof()=、+=、-=、*=、/=、%=左结合*、/、%、+、-、,,52,自动类型转换,double,float,long,unsigned,int,char,short,低,高,说明:,必定的转换,运算对象类型不同时转换,53,强制类型转换,一般形式:(类型名)(表达式)例(int)(x+y)(int)x+y(double)(3/2)(int)3.6说明:强制转换得到所需类型的中间变量,原变量类型不变,强制类型转换与指针,并称C语言两大神器,用好了可以呼风唤雨,用坏了就损兵折将,屠龙刀,倚天剑,54,类型转换

22、举例,#include main()int m=5;printf(m/2=%dn,m/2);printf(float)(m/2)=%fn,(float)(m/2);printf(float)m/2=%fn,(float)m/2);printf(m=%dn,m);,两个整数运算的结果还是整数,不是实数,55,类型转换举例,#include main()float x;int i;x=3.6;i=(int)x;printf(x=%f,i=%d,x,i);,精度损失问题,较高类型向较低类型转换时可能发生,56,总结,算法的表示方法常量是在程序中不能被更改的值;而变量在程序中可以被更改的,通过变量可以引用存储在内存中的数据C语言中的基本数据类型包括整型、单精度实型、双精度实型和字符型整型分为短整型、整型、长整型,每种整型又可分为有符号型和无符号型单精度实型和双精度实型变量可以存储实数,但双精度型取值范围要比单精度型大的多字符型变量可以存储单个字符,其值是该字符的ASCII 码表达式是操作数和运算符的集合赋值运算符的语法如下:variable=expression算术运算符提供运算功能,包括+、-、*、/、%、+和-,57,作业,习题2:2.12.5 描述算法 2.102.13、2.15、2.16 做在书上 2.18 先写出结果,再上机验证,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号