第二章数据对象与计算.ppt

上传人:sccc 文档编号:5971734 上传时间:2023-09-09 格式:PPT 页数:76 大小:631.54KB
返回 下载 相关 举报
第二章数据对象与计算.ppt_第1页
第1页 / 共76页
第二章数据对象与计算.ppt_第2页
第2页 / 共76页
第二章数据对象与计算.ppt_第3页
第3页 / 共76页
第二章数据对象与计算.ppt_第4页
第4页 / 共76页
第二章数据对象与计算.ppt_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《第二章数据对象与计算.ppt》由会员分享,可在线阅读,更多相关《第二章数据对象与计算.ppt(76页珍藏版)》请在三一办公上搜索。

1、1,本课程基本内容,第五章 C程序结构第六章 数组进阶第七章 指针与动态存储第八章 结构、链表与联合第九章文件和输入输出,第十章 程序开发技术第十一章 标准库,第一章 计算机与程序设计第二章 数据对象与计算第三章 程序语句与控制结构第四章 基本程序设计技术,2,第二章 数据对象与计算,2.1 C程序结构和描述初步2.2 基本概念:标识符与关键字2.3 基本概念:数据与类型2.4 基本数据类型与数据表示2.5 数据的输入与输出2.6 运算符表达式与计算2.7 标准函数初步,3,问题1:读入二个整数,输出它们的和 m=x+y问题2:输入三角形的三边长,求三角形面积 area=s(s-a)(s-b)

2、(s-c)s=(a+b+c)/2,思考:数据如何输入给计算机?计算机如何计算?结果如何输出?,x,y,a,b,c定义?类型?输入?,如何写公式(表达式)?计算?,结果以什么形式给出?屏幕显示?,用计算机解决需考虑什么问题?,提出问题?,2.1C程序结构描述,4,问题1-解1:读入二个整数,输出它们的和.,/*程序名:2_1_1.c*/*功能:输入两个整数,输出他们的和*/#include/*预处理*/int main()int x,y,m;printf(“Please input x and yn”);scanf(“%d%d”,Please input x and y82+8=10,运行结果:

3、,5,问题1-解2:读入二个整数,输出它们的和。,/*程序名:2_1_2.c*/*功能:输入两个整数,输出和*/#include/*函数:计算x,y的和*/int add(int x,int y)int z;z=x+y;return z;,int main()int x,y,m;printf(“Please input x and yn”);scanf(“%d%d”,6,问题1-解3:读入二个整数,输出它们的和,/*程序名:2_1_3.c*/*功能:输入两个整数,输出和*/#includeint add(int,int);/*函数原型“/int main()int x,y,m;printf(“

4、Please input x and yn”);scanf(“%d%d”,/*函数:计算x,y的和*/int add(int x,int y)int z;z=x+y;return z;,7,/*程序名:2_2_1.c*/*功能:输入三角形的三边长,求三角形面积*/#include#includeint main()double a,b,c,s,area;printf(Please input a,b and c n);scanf(%lf,%lf,%lf,问题2-解:输入三角形的三边长,求三角形面积 area=(s(s-a)(s-b)(s-c)s=(a+b+c)/2,8,C程序结构描述:由一些列

5、函数组成,只有一个主函数。程序从主函数开始执行,其它函数只有被主函数或其它函数调用才能执行;程序框架如下:,1 何为变量和常量?是用户定义吗?2 变量和常量如何定义?有规则吗?3 可以定义那些数据类型?如何表示?,9,第二章 数据对象与计算,2.1 C程序结构和描述初步2.2 基本概念:标识符与关键字2.3 基本概念:数据与类型2.4 基本数据类型与数据表示2.5 数据的输入与输出2.6 运算符表达式与计算2.7 标准函数初步,10,2.2基本字符/标识符/关键字,基本字符包括:数字(09)大小写字母(az,AZ)标点符号特殊字符:空格、换行、制表符(空白字符,起分隔作用)。增删空白一般不影响

6、程序的意义,程序中出现非基本序列字符集中的字符(双引号内除外)为非法字符,编译过程不能通过;,1.基本字符:C程序是基本字符的序列,任何语言都有基本字符序列集合(双引号内的除外),应利用空白字符排列程序格式,使程序的形式更好地反映程序结构和它所实现的计算过程(规范化编程).,11,3)形式:字母或数字组成的连续序列,字母(下划线“_”看作字母)开头(即以字母开头,后跟字母或数字)。,2.标识符,1)程序中的名字(描述对象)称为标识符 如变量名(s,a,b,c)、函数名(add,main)等;,2)标识符分用户定义的标识符和系统预定义的标识符 用户定义的如s,a,b,c;系统定义的如标准函数名s

7、qrt,printf等用户不得使用;,4)标识符对字母大小写敏感:a和A是不同字母;ABC、Abc、AbC和abc是4个不同标识符,12,标识符示例:abcd,a3b06,sum,product,.,标识符(变量)命名基本原则1)标识符一般需要反映其用途,如:sum;2)如果标识符名由多个单词构成,通常采用“大小写”混排的方式(Windows应用程序),每个单词的首字符可大写;如:TotalFiles,AddChild。3)变量名通常使用“名词”或者“形容词名词”。函数名通常使用“动词”或者“动词名词”4)标识符的长度应当适当。ANSI C规定名字不准超过6个字符,C+/C不再有此限制,但不宜

8、过长。5)通常将以下划线开始的标识符保留给系统用,用户不使用.6)Unix(Linux)应用程序的标识符通常采用“小写加下划线”的方式,如add_child。,13,auto break case char const continue default do double else enum extern float for goto if int long register returnshort signed sizeof static struct switch typedef union unsigned void volatile while,特殊标识符集(ANSI C 共32个),

9、有特定意义,不能用作用户定义标识符。,3.关键字,14,第二章 数据对象与计算,2.1 C程序结构和描述初步2.2 基本概念:标识符与关键字2.3 基本概念:数据与类型2.4 基本数据类型与数据表示2.5 数据的输入与输出2.6 运算符表达式与计算2.7 标准函数初步,15,2.3 数据与类型,数据是程序中可操纵的对象,数据是分类(类型)的;类型是程序里某类数据的一个集合;语言中有几类数据是由语言的设计者定义的,并定义好名字.数据都属于某种类型;同类型所有数据对象的性质相同,能做同样操作;数据以什么形式在程序中表示?C有几种数据类型?,数据类型确定了该类型数据的可能取值范围.,表示邮政编码“1

10、00044”,一串数字(无单位),表示某人的身高”1.75米“,一个数值(有单位),全班30个同学每人的身高,30个相关的数值,能用一种类型的数据表示吗?计算机内如何有效地表示?,1.基本概念,16,2.C语言数据类型,构造数据类型是由基本数据类型或构造类型组成的,为描述现实世界更加复杂的数据。,17,第二章 数据对象与计算,2.1 C程序结构和描述初步2.2 基本概念:标识符与关键字2.3 基本概念:数据与类型2.4 基本数据类型与数据表示2.5 数据的输入与输出2.6 运算符表达式与计算2.7 标准函数初步,18,基本类型的类型名由一个或者几个关键字组成.,基本类型名和修饰符已经定义好,用

11、户直接使用.,1)基本类型与类型名,2.4 基本数据类型与数据表示,1 基本概念,int,float,double,char,2)类型修饰符(4种),signed“有符号”之意,可修饰int,char,unsigned“无符号”之意,可修饰int,char,short-“短型”之意,可修饰int,long“长型”之意,可修饰int,double,int 默认有符号,char默认有符号,19,整型,字符型,实型,有,无,说明:数据类型所占字节数因编译器不同而不同,基本数据类型,32,64,20,unsigned 和signed 不可修饰double和float,signed 等效于 signed

12、 intunsigned 等效于 unsigned intlong 等效于 long intshort 等效于 short int,unsigned int 其最高位为数据位int 有符号整型,其最高位为符号位因此,unsigned int 和signed int 表示的整数的范围不同,说明:,21,常用数据类型,22,2.常量与变量,(1)常量,程序里直接写出的数据或通过标识别定义的,是分类型的。,如:程序中直接写出 3.1415926,(2)变量,程序执行过程中可以赋值而改变的量,其值在内存中.,定义 形式数据类型名 变量名1,变量名2.;,如:int a;/*定义a为整型变量*/,23,

13、int a;包含哪些概念?,int 是整数类型名;代表一类数据的集合(范围)变量名代表了内存中的位置,该位置存放该变量的内容;变量值可以是所定义类型数据集合中的任意一个值,具体由程序决定。,变量定义例:int a,b,c;/*指定a,b,c为整型变量*/float width;/*指定width为单精度实型变量*/double length;/*指定z为双精度实型变量*/char c1,c2;/*指定c1,c2为字符型变量*/,24,变量的赋值(局部)变量必须先赋值才能使用。可通过赋值运算符赋值。,double high;int num;high=45.3;num=23;high=367.3n

14、um=456;,变量存储相应的值。,45.3,23,high,num,变量的值被改变。,367.3,456,有关变量的概念在赋值语句时再详细介绍。,25,3.整数类型和整数的表示,(1)整数类型,关键字,26,(2)整型常量(整数),长整数写法:加后缀l或 L(建议),如:123L,整数可以加正负号,八进制:0开始的数字序列,只允许用07。如:0263,十六进制:0 x 或 0X 开头的数字序列。用字母 af 或 AF 表示其余6个数字。0 xA3B5,十进制:首字符非0(除非本身是0)例:234,表示:,常量的十进制、八进制和十六进制表示形式只是整数的不同书写形式,是为编程方便,计算机内存储

15、的只能是二进制.,27,浮点数在计算机内部是按照指数形式存储,系统把一个浮点型分成小数部分和指数部分。存在误差。,4.实数类型和实数的表示(由C编译器决定),(1)实数类型,28,算术运算符:sizeof(),获得某类型数据在该编译环境中所占内存字节数.Sizeof()括号内即可写数据类型,也可写该类型变量,/*直接写数据类型*/IntBytes=sizeof(int);/int型数据占字节数 DouBytes=sizeof(double);/double型数据占字节数,/*写某类型的变量*、int n;double s;IntBytes=sizeof(n);/int型数据占字节数 DouBy

16、tes=sizzof(s);/double型数据占字节数,int IntBytes,DouBytes;,29,例2.1 获得VC中float,double,long double所占字节数。#includeint main()int fn1,dn2,ldn3;fn1=sizeof(float);dn2=sizeof(double);ldn3=sizeof(long double);printf(%d%d%dn,fn1,dn2,ldn3);return 0;,运行结果 4 8 8,30,(2)实数常量,float加后缀f或F,long double加L实数前可以有正负号整数类型和实数类型统称算术

17、类型,基本实数类型是double,两种表示形式:十进小数形式:数字和小数点组成,必须有小数点。3.2指数形式:整数部分、小数部分和指数部分组成。2.45e17,指数表示(科学表示法),十进小数表示法,32,例2.2 比较两个程序:浮点型数据的舍入误差,#includeint main()float a,b;a=123456.789e5;b=a+20;printf(“%fn”,b);return 0;,结果:12345678848.000000,#include int main()double a,b;a=123456.789e5;b=a+20;printf(%fn,b);return 0;,

18、结果:12345678920.000000,33,单引号括起的一个字符:如:1,a,D,(1)字符常量,5.字符类型和字符的表示,转义字符:一组以“”开头的特殊字符序列,用于描述特定的控制字符。如:换行字符 n 双引号字符 单引号字符 反斜线字符,字符类型在计算机中如何存储?,其他特殊字符见附录,34,字符型数据存储时占用8比特位(1个字节),它实际存储的是该字符对应的ASCII码(Americal Standard Code for Information Interchange美国标准信息交换码)。如一个char型数据A,其ASCII码为65,故存储的内容是整型65。,(2)字符类型名:c

19、har,字符型数据与整型数据可以通用,字符型数据所有的性质与一字节整型量相同。,字符类型用于输入输出(I/O)或文字处理,常用 ASCII 字符集,包含128个字符。有时用扩展ASCII字 符集,256个字符,char型数据取值范围为-128127,unsigued char型数 据取值范围为0255。,35,常用ASCII码对照表,36,常用转义字符及其应用,37,#includeint main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(%c%cn,c1,c2);printf(%d%dn,c1,c2);return 0;,A B65 66

20、,例2.3 理解字符型和整型的关系,38,/*程序名:2_4.cpp*/*功能:使用转义字符控制数据的输出*/#includeint main()char c1=A,c2=N;printf(atbctABCn”);printf(xyzt%c%c,c1,c2);return 0;,a bc ABC xyz A N,例2.4 理解转义字符的关系,39,字符串常量:表示一串字符的数据描述形式。例:CHINA Welcomen He said:Ok.n 特殊字符用转义序列表示。,主要用于输入输出.例:printf(Good morning!n);字符串里的空格是实际内容(“有意义”),(3)字符串,规

21、定:字符串中不能实际换行,40,Printf(“Good Morning!n”);,Good Morning!,Printf(“GoodnMorning!n”);,Printf(“Goodn“);Printf(Morning!n”);,错,对,对,41,/*程序名:2_5.cpp*/*功能:符号常量的使用,计算圆的周长和面积*/#include#define PI 3.14159/*定义PI代表串3.14159*/Int main()float r,s,area;scanf(%f,(4)符号常量(宏常量),用一个标识符代表一个常量,称符号常量。,例2.5 符号常量(宏常量)的使用。尽量少用。,

22、完全替代,42,第二章 数据对象与计算,2.1 C程序结构和描述初步2.2 基本概念:标识符与关键字2.3 基本概念:数据与类型2.4 基本数据类型与数据表示2.5 数据的输入与输出2.6 运算符表达式与计算2.7 标准函数初步,43,输出形式格式输出函数printf 功能:将数据(变量、常量或计算结果)送到标准输出(一般到屏幕),2.5 数据的输入与输出,C语言中数据的输入和输出是通过标准函数(系统定义)调用实现的,程序开始必须写#include,输入形式格式输入函数scanf功能:从标准输入读数据,根据格式描述将输入转换到指定类型,转换结果赋给指定变量,语句:程序基本单位,以分号为结束符。

23、int n;n=234;,44,(1)输出形式-数据的外部表示,格式描述串:字符串-双引号引起的部分 可含转换描述(以%开头)和普通字符;转换描述给出参数的输出数据类型和格式;普通字符原样输出;其他参数:变量名或表达式序列,printf(“Please input x and yn”);m=x*y;printf(“%d*%d=%dn”,x,y,m);,输出语句,x,y,m按整型输出,转义字符:换行,格式输出函数printf 形式:printf(格式描述串,其他参数(输出列表)),45,常用转换描述(详见书29页),输出参数类型和转换描述类型、个数必须一致,否则出错,46,#include in

24、t main()printf(Welcomen);printf(ton);printf(Beijing!n);printf(WelcomentonBeijing!n);printf(“%10s:%4d%8.1fn”,Li Ming,2,88.4);printf(len:%f,width:%f,area:%fn,2.2,3.5,7.7);return 0;,例2.6 调试以下程序,观察运行结果,47,(2)输入形式-数据的外部表示,格式描述串:字符串-双引号引起的部分,含义同printf地址列表:由若干个地址构成,可以是变量的地址,也可以是字符串的首地址。变量的地址必须在变量名前加&符号。,#i

25、nclude int main()int x,y,m;printf(“Please input x and y:n”);scanf(“%d%d”,Please input x and y:,2,3,2*3=6,程序执行后等待人的输入,格式输入函数scanf形式:scanf(格式描述串,地址列表,.),48,注意实数类型的转换描述与printf的差异。,常用的 scanf 转换描述:,49,scanf(%d%lf%f,23 2.345 2.345,scanf(%d,%lf,%f,输入形式:23,2.345,2.345,输入时无,号数据不能正常读入,输入数据的分隔,用隐含的分隔符。在输入数据中用空

26、格或换行符分隔数据。,int n;double x;float y;,23 2.345 2.345,使用显示分隔符。在格式说明符中设其它字符,输入时输入与这些字符相同的字符。,scanf(%d%lf%f,输入形式:23 2.345 2.345,50,#include int main()int n;double x;float y;printf(Please input n(int)x(double)y(float):n);scanf(%d%lf%f,例2.7 调试以下程序,正确输入数据,51,第二章 数据对象与计算,2.1 C程序结构和描述初步2.2 基本概念:标识符与关键字2.3 基本概念

27、:数据与类型2.4 基本数据类型与数据表示2.5 数据的输入与输出2.6 运算符表达式与计算2.7 标准函数初步,52,2.6 运算符、表达式与计算,运算符:描述运算的特殊符号,C 语言的所有运算符都用一个或两个特殊字符表示(有一个例外)(见教材附录A)。,算术运算符:+-*/%+-关系运算符:=!=逻辑运算符:!&|位运算符:|&赋值运算符:=及其扩展条件运算符:?:逗号运算符:,指针运算符:*&求字节数:sizeof强制类型转换:(类型)分量运算符:.-下标运算符:其它:()-,运算符分一元运算,二元运算,三元运算 运算符具有结合原则,左或右 运算符具有优先级,本章先介绍算术运算符,其它以

28、后学习。,53,表达式:由计算对象(数据)运算符“按一定规则”构成。,算术表达式赋值表达式关系表达式逻辑表达式条件表达式逗号表达式位运算等,本章介绍算术表达式,54,1.算术运算符,2.算术表达式,同类型值的运算结果仍是该类型的值。3.2+2.88的结果是double。单个变量、常量也可看成表达式 3.4,a(double a;),计算对象可以是常量、变量名和函数调用等;,55,例2.8 计算半径为 6.5 厘米的圆球体积。用 printf 输出计算结果,运行时输出:V=1150.349200cm3,#include int main()printf(V=%fcm3n,(3.1416*6.5*

29、6.5*6.5)*4.0/3.0);return 0;,算数表达式,56,#include int main()printf(“Factorial of%d is%fn,7,1*2*3*4*5*6*7);return 0;,与转换描述不一致,结果:Factorial of 7 is 0.000000,例2.9 以下程序错在哪里?,57,3.表达式的计算过程,表达式计算又称“表达式求值”。一个表达式的意义就是它求出的值。须考虑优先级、结合方式、(多个)运算对象的求值顺序等。,优先级:运算符在表达式中相邻出现时,优先级高的先算。一元+,-(高)*,/,%(中)二元+,-(低),结合方式:同优先级运

30、算符相邻时的计算顺序一元算术运算符自右向左结合,二元算术运算符自左向右结合,-+-8,以上与四则运算符合,为什么?,括号:改变计算顺序,括号括起的部分先算。,58,算术运算符优先级表,59,运算对象的求值顺序 例:(5+8)*(6+4)(5+8)和(6+4)中哪个先做?,C对此问题无规定。程序中不应写依赖特殊计算顺序的表达式,那样将无法保证得到的结果,表达式可换行,应采取某种对齐方式,以利理解,出错也容易发现和改正,(2+3.23)*(1.66+2.87/4.13-2.8326)*(2.1034-4.783)*(0.27+3.1*133.24-328.9),60,#include int ma

31、in()printf(Average of%d and%d is%dn,68,39,(68+39)/2);return 0;,算术表达式的类型问题,如何修改?,例2.10 以下程序错在哪里?能否求出正确的平均数。,printf(Average of%d and%d is%fn,68,39,(68.0+39)/2);,61,4.计算和类型,同种类型计算:每个变量或常量有明确的类型,同种类型 的数据运算结果是 同种类型。,如是 6*33.14 混合类型运算,如何处理?,常量参与运算时,编译程序根据运算对象类型确定怎样做:3+2 用 int 类型的加 3.0+2.0用 double 类型的加,62,

32、(2)自动类型转换:允许不同类型的数据进行计算即混合类型计算,混合类型计算时编译程序将进行自动类型转换。,原则:把范围小类型的值转换为范围大类型的值。从低到高转:,写法:表达式前写括起的类型名(看成一元运算符)。(int)(3.6*15.8)+4(int)(nsuan)/*double nsun*/实数类型转为整型时丢掉小数部分,(3)强制类型转换:也称显示转换或类型强制(高向低转),63,64,每个类型有明确取值范围,计算有确定的结果类型。计算中结果超出类型表示范围称为溢出(上溢和下溢)。C程序对溢出不报错。溢出后的计算不再有意义。,若 int 由16位表示,32766+18?32766L+

33、18L?,须注意的问题:,计算机溢出问题,类型转换可能丢失信息;若被转换值在结果类型里无法表示,结果无法预计。类型转换是值转换,从一个数据值出发,产生另一类型的新值,原值不变;数值类型间都可以转换。,实数也存在溢出,当计算结果有问题时,检查是否有溢出,65,第二章 数据对象与计算,2.1 C程序结构和描述初步2.2 基本概念:标识符与关键字2.3 基本概念:数据与类型2.4 基本数据类型与数据表示2.5 数据的输入与输出2.6 运算符表达式与计算2.7 标准函数初步,66,2.7标准函数初步,1.函数、函数调用,C标准库提供了许多函数,称标准函数,标准函数名由小写字母构成。实现许多功能,用户直

34、接调用可以使用。,函数类别 程序前包含的头文件输入输出函数#include数学函数#include字符处理函数#include字符串函数#include常用功能函数#include时间和日期#include,详见教材第11章。本章介绍常用数学函数。,67,函数原型给出了函数的外部功能;使用函数不需了解函数的内部实现。,函数原型,标准函数定义了每个函数的特征称函数原型:返回值类型 函数名(参数1类型,参数1类型,),函数调用使用函数,sin 函数原型或类型特征:double sin(double),函数调用形式:函数名(实参1,.,实参n),Sin函数的调用:sin(2.4)/*2.4为实际使用

35、的数据称实在参数或实参,相当于表达式,实参与形参对应,68,2.数学函数,2*sin(2.4)/*sin函数,*/,实际参数/实参,结果/返回值,主要数学函数:sin cos tan asin acos atan sinh coshtanh exp log log10 sqrt fabs乘幂:double pow(double,double)实数余数:double fmod(double,double),例:pow(2.5,3.4)fmod(103.45,3.14259),如何更加通用?,使用时查函数原型。,实现常用数学函数计算,可作为对象出现在表达式中,函数值相当于表达式,可参与计算。,69

36、,例2.11 求两邻边长为 3.5 和 4.72 米,两边夹角为 37 度的三角形的面积。程序:,#include#include int main()printf(Area:%f m2n,3.5*4.72*sin(37.0/180*3.1416)/2);return 0;,转换成弧度,70,函数对参数有类型要求,实参表达式有类型。,规定:实参类型与函数要求不符时,表达式值自动转为函数要求类型的值后再送给函数。,例,下面表达式计算中将出现两次类型转换:sin(2)*sin(4),设f的类型特征为 int f(int),下表达式计算会出现类型转换(几次/哪里/什么?):4.23*f(3*2.7)

37、,3.函数调用中的类型转换,71,/*功能:求三个整数的平均数,平均值定义实型*/#includevoid main()int a,b,c;/*定义三个整型变量存放三个整数*/float ave;/*定义一个实型变量存放平均值*/scanf(%d,%d,%d,/*输出计算结果*/,例2.12 求三个整数的平均数。,72,#include#include int main()int money,year;double rate,sum;输入数据 sum=money*pow(1+rate),year);,例2-13 计算银行存款的本息。输入存款金额money、存期year和年利率rate,根据下列

38、公式计算存款到期时的本息合计sum(税前),输出时保留小数点后两位。sum=money(1+rate)year,请将程序补充完整并调试成功;,73,/*程序名:面积.c*/*功能:输入三角形三边,计算面积*/#include#include int main()float a,b,c,s,area;printf(Please enter 3 sides of a triangle:n);scanf(%f,%f,%f,例2.14 输入三角形的三边长,求三角形的面积。,74,#includeint main()double f1=1.0e+10;double f2=3.14;printf(%f:%

39、fn,f1);printf(%e:%en,f1);printf(%g:%gn,f1);printf(%f:%fn,f2);printf(%e:%en,f2);printf(%g:%gn,f2);return 0;,例2.15 输入并调式程序,观察运行结果。,75,程序模式1:#include int main()printf(格式串,);return 0;,程序模式2(使用数学函数):#include#include int main()printf(格式串,);return 0;,76,C语言程序的基本构成,源程序以.c作为扩展名(*.c)C程序由若干函数构成函数由说明部分和函数体构成一个C程序总是从main()函数开始的C程序书写自由,一行可以写多个语句,一个语句也可以分为多行来写语句以及数据定义后面必须有一个分号“;”可用/*.*/对程序进行注释,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号