计算器实现常见的算术运算.ppt_第1页
计算器实现常见的算术运算.ppt_第2页
计算器实现常见的算术运算.ppt_第3页
计算器实现常见的算术运算.ppt_第4页
计算器实现常见的算术运算.ppt_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

1、任务3 计算器实现常见的算术运算,本次任务将通过编码,实现计算器最简单的运算“+”、“-”、“*”、“/”、“%”。 要求用户从键盘上输入任意两个数,然后依次完成上面的5种运算,并将运算结果输出到屏幕上。 本次任务涉及到的知识点:数据类型、常量、变量、cin输入语句、运算符。,第一部分:任务介绍,第二部分:预期成果,(一)数据类型 (二)常量 (三)变量 (四)cin输入语句 (五)运算符,第三部分:相关知识点学习及上机实践,1、 计算机程序中能够接收和处理的数据有许多种,如动画、声音、图像、文本、数字等各类数据。 而不同类型的数据所需要的数据存储空间不同,能够对其执行的操作也不同。 因此,为

2、了合理分配数据空间,对数据执行适当的操作,大部分计算机程序设计语言都对数据划分了类型。 2、C+中的基本数据类型,(一)数据类型,需要掌握每种数据类型的关键字以及在内存中占用的字节数,可以使用sizeof()来得到。例题:,(一)数据类型,总位数,若超过时使用科学计数法表示,C+ primer中的描述:“一般地,short类型为半个机器字(word)长,int类型为一个机器字长,而long类型为一个或两个机器字长(在32位机器中,int类型和long类型通常字长是相同的)。” C+的内置类型是依赖于机器的。所以int和long在某些平台上是一样的,但是在另一些平台上就是不一样的。在移植到不同平

3、台上时这个是非常有影响的。 bool类型,表示真或假,取值的范围(true、false、1、0),C+程序中的任意一个数据都是属于某种数据类型的。 如前面程序中的 : “*” 是一个char类型的字符数据, “100” 是一个int类型的整数、 “100.126”是一个double类型小数、 “hello world!”是一个字符串。使用string 类型或者char类型 数组比表示。,(一)数据类型,上机实践 1、自行编写程序,使用sizeof运算符输出每种数据类型所占的字节数。 coutsizeof(int)endl; coutsizeof(float)endl; coutsizeof(d

4、ouble)endl; coutsizeof(long)endl; coutsizeof(char)endl;,(一)数据类型,1、常量的概念:在程序运行过程中表示一个固定的值并且值不能改变的量。 通俗的讲,一个常量就代表了一个固定的数据,因此它的值是不能改变的。比如数字1就永远表示数字1,字母a就表示字母a,不能表示其他的字母。,(二)常量,2、常量的分类: (1)一般常量:是指某种类型的具体数据,如整型常量、浮点型常量、字符型常量和字符串常量 。前面说的数字“1”和字母“a”就是这种类型的常量。 整型常量,有三种表示形式: 十进制整数:由数字09和正负号表示,如 123,-456,0。 八

5、进制整数:由数字0开头,后跟数字07表示,如0123,011。 十六进制整数:由0 x开头,后跟09,af,AF表示,如0 x123,0Xff。,(二)常量,二、八、十六进制转成十进制数:按权相加 (111011)2=()10 (1F2A)16=()10 (136)8=()10 十进制数转成二、八、十六进制数:连续除以基数,从低到高连续记录余数,直至商为0。 (15)10=(1111)2 (159)10=(237)8,数制间的转换(整数),二进制与八进制之间的转换 二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制 八进制转换成二进制:用3位二进制数代替每一位8进制数 例

6、如: (1101001)2=(001,101,001)2=(151)8 (246)8=(010,100,110)2=(10100110)2,二进制与十六进制之间的转换 二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进制 十六进制转换成二进制:用4位二进制数代替每一位十六进制数 例如: (11010101111101)2=(0011,0101,0111,1101)2=(357D)16 (4B9E)16=(0100,1011,1001,1110)2= (0100101110011110)2,例如: void main() cout10endl; /十进制整数 cout01

7、0endl; / 八进制整数 cout0 x10endl; / 十六进制整数 ,(二)常量,(二)常量,浮点型常量:把带小数的数称为实数或浮点数。在小数的后面加上字母f,那么这个小数就是浮点型常量,如3.14f 。 表示形式: 十进制数形式:(必须有小数点) 如0.123, .123, 123.0, 0.0, 123. 例如:float c=.123f; coutcendl; 指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5 例如:float c; c= 12.3e3 ; c=1e-5f; c=1e-3f;,例如:

8、 #include void main(void) float a, b; double c, d; a=0.01; b=3.45678e-2; c=3.45678e-2; d=9.7654e-5; couta=atb=bendl; coutc=ctd=dendl; ,a=0.01 b=0.0345678 c=0.0345678 d=9.7654e-005 Press any key to continue,双精度型常量:即double类型的常量。在C+中,一个小数默认就是double类型的常量,不需要加任何标记,如3.14 。 字符型常量:即char类型的常量。表示任意一个字母、数字或符号,

9、但是需要在这些字符的两边使用单引号将其括起来,如a 、1、 +。 注意:在使用这些类型的常量时,不同类型的常量表示不同。如,在cout语句中的使用。,18,字符型数据(char),字符型数据实际上是作为整型数据在内存中存储的。 计算机是以字符编码的形式处理字符的,因此,我们在计算机内部是以ASCII码的形式表示所有字符的。所以7位二进制数即可表示出一个字符,我们用一个字节的容量(8位)存储一个字符。,例如:字符A的ASCII码为0 x41或65,在内存中表示为:,在程序中表示为: char grade ;/定义一个字符型的变量空间(1个字节) grade=A; /必须用 表示,否则易与标识符混

10、同, 内括起来的字符表示该字符的ASCII码。,19,进一步,由于在内存中的形式与整型数据相同,所以,可以直接用其整型值给变量赋值。,char grade; grade=65;,以下的赋值形式均是等同的。 grade=A; grade=65 ; grade=0 x41; grade=0101;,#include void main(void) char a,b; a=A; /输入ASCII码 b=65; /输入十进制数 couta=aendl; coutb=bendl; ,输出: a=A b=A,即在内存中的表示均是相同的,转义符,转义符:是一种特殊的字符型常量,在C+程序中表示某种特殊的意义

11、。,21,转义字符虽然包含2个或多个字符,但它只代表一个字符。编译系统在见到字符“”时,会接着找它后面的字符,把它处理成一个字符,在内存中只占一个字节。,22,典型转义字符 : n换行 b 退格 t 下一个输出区 若输出中包含这些特定格式,则再加一个,输出 c:tctc 表示为coutc:tctc;,可以用转义字符表示任一一个ASCII字符 xhh (十六进制) 101 x41 x61 141,23,#include void main(void) char c1,c2,c3,c4; char n1,n2; c1=a;/字符常量 c2=97;/十进制 c3=x61;/转义字符 c4=0141;

12、/八进制 coutc1=c1tc2=c2endl; coutc3=c3tc4=c4endl; n1=n; /转义字符:回车 n2=t; /转义字符:下一个输出区(Tab) cout使用转义字符n; coutc1=c1n2c2=c2n1; coutc3=c3n2c4=c4n1; ,输出: c1=a c2=a c3=a c4=a 使用转义字符 c1=a c2=a c3=a c4=a,阅读下面有关转义符的代码,思考程序运行结果。 void main() couta0bendl; coutanbendl; coutarnbendl; coutaendl; coutatbendl; coutabendl

13、; coutbendl; ,(二)常量,字符串常量:用双引号括起来的0个或多个任意字符的集合。C+在存储字符串时,将在该字符串末尾自动加一个 0 作为字符串结束标志。也就是说,最终存储这个字符串的长度是原字符串长度加1。 例如: coutsizeof(hello)endl; / 6 分析下面这条语句的输出结果是什么? coutn I say:Good Morning ! n;,(二)常量,a在内存中占一个字节 a占两个字节,(2)名字常量:又称符号常量,是指通过C+语句定义一个符号,而该符号就表示某个固定的一般常量的值。一旦定义了该名字常量的值,那么在程序执行过程中不能再改变。 定义一个名字常

14、量的格式: const 数据类型 名字常量=一般常量; 例如:const double PI=3.1415926; 其中,PI就是代表3.1415926 双精度类型常量的一个符号,称为名字常量,通常简称常量。 注意:在定义名字常量时,一定要注意赋初始值。,(二)常量,上机实践 1、找出下面程序中的是错误。 void main() const int a=100; const char b; b=$; couta; ,(二)常量,28,下列常量的表示在C+中是否合法?若不合法,指出原因;若合法,则指出常量的数据类型。 32767 35u 1.25e3.43L 0.0086e-32 87“Comp

15、uter System” “a” a 9645 -0+0.5-.567,1、变量的概念:在程序运行过程中其数值可以改变的量。 2、变量的本质:一个变量就是一块内存空间,给变量命名就是为了方便引用这块内存空间。既然变量是一块存储空间,那么向变量中存储什么数据,该变量就代表什么数据,因此变量的值是可变的。 3、变量的使用规则:先定义变量,然后才能使用变量。,(三)变量,4、变量的定义格式: 修饰符 数据类型 变量1,变量2,变量n; (1)修饰符:表示定义变量时的一些附加说明,如extern、static、public 等,这将在后面详细介绍,该部分可以省略。 (2)数据类型:表示该变量中可以存储

16、什么类型的数据。由于C+是一种强类型语言,所以在定义变量时需要指定该变量能够接收的数据的类型,在以后的使用中,只有符合这种类型的数据才能存储到该变量中。,(三)变量,(3)变量名:是C+合法的标识符,要符合标识符的规则。即,标识符不能以数字开头;不能是系统的保留字;标识符中只能包括字母、数字、下划线。 float data; 相关练习:参见讲义中p2728 410题 (4)若几个变量的数据类型相同,可以在一条语句中进行定义。 int a,b,c;,6、变量初始化:在定义变量的同时为变量赋初值,这就称为变量的初始化。如下面的语句: int a=2,b,c=4; float data=3.67;

17、char ch=A; int x=1,y=1,z=1;,(三)变量,7、变量可以参与的运算 为了熟悉变量的定义与使用,该部分只是简单列举了几个常见运算符,更多运算符的知识参见后面小节。 (1)赋值运算: “=” 可以在定义变量的时候直接赋值,如上面的例题,也可以在定义变量完成后再为变量赋值,格式如下: 变量名=值; 注意, “=”的左边只能是变量名,不能是常量或表达式(在定义名字常量的时候除外)。 例如: int i=100; int j; j=0;,(三)变量,(2)算术运算:+ - * / % int sum; sum=i+j; (3)关系运算: = != int a=10,b=20; c

18、out(ab)endl; 或者: bool f=ab; coutfendl;,(三)变量,1、下面的语句能定义3个变量,并赋初值吗?如何改正? int x=y=z=1; 2、阅读并思考下面的程序实现了什么功能。 void main() const float PI=3.14F; float length,area,r; r=10.22f; length=2*PI*r; area=PI*r*r; coutlength=length ,area=areaendl; 3、自己编写一个程序,能够计算长方形的周长和面积。,上机实践,cin输入流对象和它的“”输入运算符可以实现键盘输入的功能,并将输入的数

19、据存储到某个变量中。该对象定义在iostream.h头文件中。 1、cin输入流对象的使用格式: cin变量名; 或者 cin变量1变量2变量3.;,(四)cin输入语句,2、cin语句的使用说明: (1)其中,变量名必须是在该语句之前已经定义好的变量,因为变量要遵循先定义后使用的原则。 (2)一条cin语句可以利用多个输入运算符“”,为多个变量输入值。 (3)系统在执行cin语句的时候,屏幕上将出现光标等待用户输入,输入完成后按回车或者空格结束本次输入,此时系统读取刚才输入的数据,并存储到cin后面给出的变量中。如果该cin语句后面还有其他等待输入的变量,那么用户继续在当前光标下输入数据,依

20、次类推,当为最后一个变量输入完数据后,按回车键结束cin语句。,(四)cin输入语句,1、阅读并上机练习。 void main() int age; coutage; coutab; /输入第一个值后,可以按回车也可以按空格,继续输入第二个值 couta=a b=bendl; 3、修改前面计算图形周长和面积的例题,利用cin语句为半径、长、宽输入数据。,上机实践,运算符是用来表示各种运算的符号,使用运算符能够对变量或常量执行运算。 C+中常用的运算符有:算术运算符、赋值运算符、自增自减运算符、关系运算符、逻辑运算符、条件运算符、sizeof运算符、逗号运算符。,(五)运算符,(五)运算符,运算

21、符是用来表示各种运算的符号。C+中常用的运算符有: 算术运算符 赋值运算符 关系运算符 逻辑运算符 条件运算符,(五)运算符,学习运算符应注意: 运算符功能 与运算量关系 要求运算量个数(单目,双目,三目) 要求运算量类型 运算符优先级别 结合方向 结果的类型,算术运算符,基本算术运算符: + - * / % 功能:取模运算符%用于计算两整数相除后得到的余数 结合方向:从左向右 优先级: * / % - + - (4) (5) 说明: 两整数相除,结果为整数,操作数中至少有一个是小数,那么结果才能保留小数部分 %要求两侧均为整型数据,例 5/2 = -5/2.0 =,例 5%2 = -5%2

22、= 1%10 = 5%1 = 5.5%2,例 5/2 = 2 -5/2.0 = -2.5,例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 (),思考:5%-2=?,算术运算符,算术表达式 由以上各种算术运算符和常量或变量构成的式子叫做算术表达式。 算术表达式的操作数主要是数值类型的数据和字符类型的数据 例如 : 参见教材p52 中间部分。 例题:2-17,算术运算符,算术运算时的类型转换 当运算符两边的操作数不是同一种数据类型时,必须将它们先转换成同一类型的数据再进行运算。 数据类型的转换有两种方式: 隐式类型转换 显示类型转换,算术运算符,隐式类型转换

23、什么情况下发生 运算转换-不同类型数据混合运算时 如, 5+a 赋值转换-把一个值赋给与其类型不同的变量时 如,int x=5.3; 输出转换-输出时转换成指定的输出格式 函数调用转换-实参与形参类型不一致时转换,如: #include void fun(int x) coutxendl; void main() fun(a); 运算转换规则:不同类型数据运算时先自动转换成同一类型,double,double,double,double,分析例题2-18的类型转换过程,如两个char数据运算,先将char转换为int两个float运算先将float转换为double类型。,double,dou

24、ble,算术运算符,显示类型转换 (类型名)表达式 类型名(表达式) 例:分析以下命令执行的结果 (int)x+y ; int(x+y); (double)(3/2); (double)3)/2; (int)3.6 ; 说明:强制转换得到所需类型的中间变量, 原变量类型不变 如, float x=3.6f;int i=int(x); coutxendl; 例题: 2-19,ANSI C+里一个浮点型若是小数部分为0,直接输出必然是不带小数点的。,ios:showpoint可以按精度把后面的空白补0输出,但是超过却还是习惯性输出,例如数组后面两个将会以科学计数输出. ios:fixed也是按精度

25、把后面的空白补0输出,但是不管怎么样,都是按定点输出,即不会表示成科学计数。 precision是设置精度的,1表示小数点后将最大显示1位 #include void main() cout.setf(ios:fixed); cout.precision(1); cout(double)(3/2)endl; ,简单赋值运算符 符号: = 格式: 变量标识符=表达式 作用:将右侧的表达式求出结果,赋给其左侧的变量,复合赋值运算符 种类:+= -= *= /= %= = = d=func(); c=d+2;,赋值运算符,说明: 结合方向:自右向左 a=b=c=100 =a=(b=(c=100) 优

26、先级: 15 左侧必须是变量,不能是常量或表达式(除了定义常量的那一刻),赋值表达式的值与变量值相等,且可嵌套,赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型,例 3=x-2*y; a+b=3;,例 float f; int i; i=10; f=i; 则 f=10.0,例 int i; i=2.56; /结果i=2;,例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2),/表达式值为5,a,b,c值为5,/ b=5;a=5,/表达式值11,c=6,a=11,/表达式值10,a=10,b=4,c=6,/表达式值5,a=

27、5,b=10,c=2,赋值运算符,说明: + - 不能用于常量和表达式,如5+,(a+b)+ + -结合方向: 自右向左 优先级:3,例 -i+ -(i+) i=3; cout-i+endl; /-3 int i=3; cout-+iendl; /-4,例 -i+ i=3; cout-i+endl; int i=3; cout-+iendl;,自增、自减运算符+ - 作用:使变量值加1或减1 种类: 前缀 +i, -i (先执行i+1或i-1,再使用i值) 后缀 i+,i- (先使用i值,再执行i+1或i-1),自增、自减运算符,例 j=3; k=+j; j=3; k=j+; j=3; cout+jendl; j=3; coutj+endl; a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+

温馨提示

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

评论

0/150

提交评论