1、项目2 设计个人所得税计算器课件目录2.1 项目情景12.2 知识准备22.3 项目解决32.4 知识拓展42.1 项目情景 设计一个个人所得税计算器,从基本数据类型开始看看C+中有哪些数据类型?对这些类型的数据如何处理?如何设计个人所得税计算器?如何让设计的程序运行起来?该项目将解决以上问题,带领大家学习数据类型、常量和变量、运算符与表达式。回主目录回主目录2.2 知识准备2.2.1 数据类型2.2.2 常量和变量2.2.3 运算符和表达式回主目录回主目录2.2.1 数据类型 数据类型是C+语言最基本的要素,是编写程序的基础。C+提供了丰富的数据类型,分为基本数据类型和非基本数据类型。见图所
2、示整 型 int单精度 float双精度 double数据类型非基本数据类型基本数据类型字符型 char 实 型 布尔型 bool数组指针结构枚举类2.2.1数据类型 在不同的计算机上,每个变量类型所占的内存空间的长度不一定相同。例如:在16位计算机中,整型占2个字节,而在32位计算机中,整型变量占4个字节。除上述一些基本类型外,还有数据类型修饰符,用来改变基本类型的意义,以便更准确地适应各种情况的需要。修饰符有long(长型符)、short(短型符)、signed(有符号)和unsigned(无符号)。回子目录回子目录2.2.2 常量和变量常量和变量1.变量 在程序的执行过程中其值可以改变的
3、量,称为变量。(1)变量的命名 必须遵循以下规则:可以由字母、数字和下划线构成,但第一个字符必可以由字母、数字和下划线构成,但第一个字符必须是字母或下划线。须是字母或下划线。中间不能有空格。中间不能有空格。不能是不能是C+的关键字。的关键字。C+区分大小写,即大写字母和小写字母被认为是区分大小写,即大写字母和小写字母被认为是两个不同的字符。两个不同的字符。不要太长,一般不超过不要太长,一般不超过32位字符。位字符。2.2.2 常量和变量常量和变量 根据以上的规则,下面的变量名都是合法的:Myname,MYNAME,_birth,birth_day,Case,Int1 下面则是一些非法的标识符:
4、123a,&abc,3a,string,case,ab,_12*,ab2.2.2 常量和变量常量和变量(2)变量的定义和声明 在使用一个变量之前,必须对其进行定义或声明,而且必须在声明中指定变量的类型和名称。变量定义的格式一般如下:修饰符 数据类型 变量名;修饰符是可选的,用于描述变量的使用方式;多个同一类型的变量在同一个声明语句中定义,可按如下的格式:修饰符 数据类型 变量名1,变量名2,变量名3 例如:char a;/定义了字符型变量a int i,j /定义了整型变量i和j 2.2.2 常量和变量常量和变量注:必须知道“声明”和“定义”之间的区别:两者的语法格式类似。“声明”是向计算机介
5、绍名字;而“定义”则为这个名字分配存储空间。在一个编译单元即一个源程序文件中,变量的“声明”和“定义”是等同的,即均为变量定义;而在不同的编译单元中,两者是有区别的,如果在甲编译单元中定义了一个变量a,希望在乙编译单元中使用它的值,就需要先“声明”该变量,然后才能使用它的值。2.2.2 常量和变量常量和变量(3)变量的赋值和初始化 用赋值运算符“=”给变量赋值。例如:int a;a=5;/赋初值 也可以在定义时直接给变量赋值。在定义的同时,赋给变量一个初始值,称为变量的初始化。例如:int a=5;/定义并初始化 2.2.2 常量和变量常量和变量 2.常量 常量是在程序运行中值不能改变的量。在
6、C+中,常量的类型有五种:整型常量、实型常量、字符常量、字符串常量和枚举常量,下面做逐一介绍:(1)整型常量 十进制整数。除表示正负号的符号外(“+”可省略),以19开头的整数为十进制整数,单个数字0也是整数。例如:123、-25、0、1234等。2.2.2 常量和变量常量和变量八进制整数。为了与十进制区别,八进制整数以0开头,后跟若干个07的数字。例如:0123表示的八进制(123)8,它表示的十进制数为182+28+3=83。十六进制整数。以0 x或0X开头,后跟若干个09及af,af分别表示十进制整数1015。例如:0 x123表示十六进制数(123)16,它表示的十六进制数为1162+
7、216+3=291。2.2.2 常量和变量常量和变量(2)实型常量 实型常量由整数和小数两部分组成,在C+中,实型常量包括单精度(float)、双精度(double)、长双精度(long double)三种。按表示方式分,有小数形式和指数形式两种表示方式:小数形式,也称定点数,由数字09、小数点和正负号组成。指数形式,也称浮点型、科学计数法,由数字、小数点、正负号和E(e)组成,指数形式表示为:数字部分 E(或e)指数部分 /指数部分一定是整数2.2.2 常量和变量常量和变量(3)字符常量 字符常量是用单引号括起来的一个字符。它有两种表示形式,即普通字符和转义字符,即可直接显示字符。例如:a、
8、B、5、#、+等。转义字符,即以反斜杠“”开头,后跟一个字符或一个字符的ASCII码值表示的字符。在“”后跟一个字符常用来表示一些控制字符。例如:n表示换行。2.2.2 常量和变量常量和变量(4)字符串常量 字符串常量是由一对双引号括起来的字符序列。例如:How are you?、我是一名学生、A等都是字符串常量。在C+中,规定以字符0作为字符串的结束标志。2.2.2 常量和变量常量和变量(5)枚举常量 枚举常量可以通过建立枚举类型来定义。定义枚举类型的语法是先写关键字enum,后跟类型名、花括号,花括号括起来的里面是用逗号隔开的枚举常量值,最后用分号结束定义。例如:enum weekday
9、Sun,Mon,Tue,Wed,Thu,Fri,Sat;回子目录回子目录2.2.3运算符和表达式运算符和表达式2.2.3.1算术运算符与算术表达式2.2.3.2赋值运算符与赋值表达式2.2.3.3关系运算符与关系表达式2.2.3.4逻辑运算符与逻辑表达式2.2.3.5条件运算符与条件表达式2.2.3.6逗号运算符与逗号表达式2.2.3.7运算符的优先级回主目录回主目录2.2.3运算符和表达式运算符和表达式运算符又称为是操作符,它是对数据进行运算的符号,参与运算的数据称为操作数。一个运算符可以是一个字符,也可以是由两个或三个字符所组成的,还有的是C+的保留字。按操作数的多少,可将运算符分为单目(
10、一元)运算符、双目(二元)运算符和三目(三元)运算符三类。2.2.3运算符和表达式运算符和表达式1.单目运算符 位于操作数前或后,形如:或 例如:-a,i+,-j2.双目运算符 一般位于两个操作数之间,形如:例如:a+b,i*j 2.2.3运算符和表达式运算符和表达式3.三目运算符 在C+中三目运算符仅有一个,即条件运算符,它含有两个字符,将三个操作数分开。例如:?:2.2.3运算符和表达式运算符和表达式可以从以下三方面理解和掌握运算符:运算符与操作数的关系。要注意运算符要求操作数的个数和类型。运算符的优先级别。优先级高的先运算,优先级低的后运算。运算符的结合性。指表达式中出现同等优先级的操作
11、符时,该先做哪个操作的规定。如果一个运算符对其运算对象的操作是从左向右进行的,就称此运算符为左结合,反之称为右结合。2.2.3运算符和表达式运算符和表达式2.2.3.1算术运算符与算术表达式算术运算符与算术表达式 算术运算符就是对数据进行算术计算,如:加、减、乘、除等,是在程序中使用最多的一种运算符。算术运算符的优先级:“+”(正号运算符)和“-”(负号运算符)优先级最高;“*”、“/”和“%”优先级次高;“+”(加法)和“-”(减法)优先级最低;“+”(自增运算符)和“-”(自减运算符)的优先级和正、负运算符的优先级是一样的。回子目录回子目录2.2.3运算符和表达式运算符和表达式2.2.3.
12、2赋值运算符与赋值表达式赋值运算符与赋值表达式 C+语言提供了两类赋值运算符:基本赋值运算符和复合赋值运算符。由赋值运算符将表达式连接起来的有效式子称为赋值表达式,其一般格式为:变量=表达式 赋值表达式的作用就是把赋值运算符右边表达式的值赋给左边的变量。赋值运算符的优先级为:只高于逗号运算符,比其他运算符的优先级都低。表2-4列出了赋值运算符及其功能。回子目录回子目录2.2.3运算符和表达式运算符和表达式2.2.3.3关系运算符与关系表达式关系运算符与关系表达式 C+中提供了6个关系运算符:、=、=、=)高于(=、!=),括号中运算符的优先级相同。由关系运算符将两个表达式连接起来的有效式子称为
13、关系表达式。一个关系表达式的值是一个逻辑值。当关系为真时,值为1;关系为假时,值为0。回子目录回子目录2.2.3运算符和表达式运算符和表达式2.2.3.4逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式 逻辑运算符是对两个逻辑量间进行运算的运算符。由逻辑运算符将表达式连接起来的有效式子称为逻辑表达式,其运算对象是逻辑量,表2-6列出了逻辑运算符及其功能。逻辑运算符的优先级从高到低为:!(非)&(与)|(或)。回子目录回子目录2.2.3运算符和表达式运算符和表达式2.2.3.5条件运算符与条件表达式条件运算符与条件表达式 C+语言中提供的唯一的三目运算符,即条件运算符(?:)。由条件运算符将三个表达
14、式连接起来的有效式子称为条件表达式。其格式如下:表达式表达式1?表达式?表达式2:表达式:表达式3 条件运算符的规则是:首先判断表达式1的值,若其值为真(非0),则取表达式2的值为整个表达式的值;若其值为假(0),则取表达式3的值为整个表达式的值。条件运算符的优先级高于赋值,低于关系和算术运算符,结合方式为从左向右结合。回子目录回子目录2.2.3运算符和表达式运算符和表达式2.2.3.6逗号运算符与逗号表达式逗号运算符与逗号表达式 逗号运算符其功能是按从左向右的顺序逐个对操作对象求值,并返回最后一个操作对象的值。逗号运算符也称顺序求值运算符,具有左结合性。由逗号运算符将表达式连接起来的有效式子
15、称为逗号表达式,其一般形式为:表达式表达式1,表达式,表达式2,表达式,表达式3,,表达式表达式n回子目录回子目录2.2.3运算符和表达式运算符和表达式2.2.3.7运算符的优先级运算符的优先级 每个运算符都有自己的优先级和结合性。当一个表达式中包含多个运算符时,要确定运算的结果,必须首先确定运算的先后顺序,即运算符的优先级和结合性。C+中运算符的优先级和结合性见教材表2-8所示。回子目录回子目录2.2.3 项目解决项目解决 设计个人所得税计算器设计个人所得税计算器-业务分析业务分析 2011年9月1日实施,中国内地个税免征额调至3500元。也就是个人收入超过3500元就要向国家交个人所得税。
16、根据个人收入的不同会按照不同的税率缴纳个人所得税,一般收入越高交纳越多。目前,山东省执行7级税率标准,如表所示。级数级数全月应纳税所得额全月应纳税所得额税率税率(%)速算扣除数速算扣除数1不超过1500元的302超过1500元至4,500元的部分101053超过4,500元至9,000元的部分205554超过9,000元至35,000元的部分251,0055超过35,000元至55,000元的部分302,7556超过55,000元至80,000元的部分355,5057超过80,000元的部分4513,5052.2.3 项目解决项目解决 设计个人所得税计算器设计个人所得税计算器-业务分析业务分析
17、计算工资收入范围计算工资收入范围-假设满足假设满足2级标准级标准 级数级数全月应纳税所得额全月应纳税所得额税率税率(%)速算扣除数速算扣除数工资收入范围工资收入范围1不超过1500元的30=50002超过1500元至4,500元的部分10105=80003超过4,500元至9,000元的部分20555=125004超过9,000元至35,000元的部分251,005=353505超过35,000元至55,000元的部分302,755=553506超过55,000元至80,000元的部分355,505803502.2.3 项目解决项目解决 设计个人所得税计算器设计个人所得税计算器-业务分析业务分
18、析计算工资收入范围计算工资收入范围-假设满足假设满足2级标准级标准income 工资输入工资输入pertax 个人所得税个人所得税pertax=1500*0.03+(income-3500-1500)*0.1-105二级标准条件:二级标准条件:income5000 并且并且 income=8000 级数级数全月应纳税所得额全月应纳税所得额税率税率(%)速算扣除数速算扣除数工资收入范围工资收入范围1不超过1500元的30=50002超过1500元至4,500元的部分10105=80002.2.3 项目解决项目解决 设计个人所得税计算器设计个人所得税计算器-所用知识所用知识 算术运算符算术运算符
19、算术表达式算术表达式 关系运算符关系运算符 关系表达式关系表达式 逻辑运算符逻辑运算符 逻辑表达式逻辑表达式 if语句语句 2.2.3 项目解决项目解决 设计个人所得税计算器设计个人所得税计算器-参考代码参考代码 float income;/定义收入变量定义收入变量float pertax;/定义个人所得税变量定义个人所得税变量 cout t个人所得税计算器个人所得税计算器 endl;cout income;if(income5000&income=8000)pertax=(income 3500-1500)*0.1 105+1500*0.03;cout 您需要交纳个人所得税您需要交纳个人所得
20、税 pertax 元元 endl;2.2.3 项目解决项目解决 设计个人所得税计算器设计个人所得税计算器-运行结果运行结果 回主目录回主目录2.4 知识拓展知识拓展 表达式中数据类型的转换分为两种:自动类型转换和强制类型转换。1.自动类型转换 如果在一个表达式中出现不同数据类型的数据进行混合运算时,C+语言用特定的转换规则将两个不同类型的操作对象自动转换成同一类型的操作对象,然后再进行计算,这种隐式转换的功能也称为自动转换。不同数据类型的自动转换规则见教材图2-9所示。2.4 知识拓展知识拓展2.强制类型转换 C+允许将某种数据类型强制性地转换为另一种指定的类型,其转换的语法格式为:(数据类型)操作对象(数据类型)操作对象 或或 数据类型数据类型(操作对象)(操作对象)例如:(float)8/3 /将整数8强制转换为float型,然后再除以3,结果为2.66667(int)3.26 /将实型3.26转换为整型数,即3,小数部分就丢失了回主目录回主目录END回主目录回主目录