资源描述
威海市第一中学
研究性学习成果展示
课题
名称
c++语言入门
指导
教师
柳鑫伟
班级
学科
团队照片
负责人
其他
成员
xx
电子邮件
一、研究背景
w 信息技术作为当前先进生产力的代表,已经成为我国积极发展的重要支柱和网络强国的重要支撑,信息技术涵盖了获取、信息、表示、传输、贮存、和信息加工在内的各种技术,自己计算机问世以来,信息技术沿着以计算机、互联网,再到以大数据为核心的发展脉络,深刻影响着社会的经济基础和技术创新,推动着社会信息化、智能化的发展,重塑着人们交流沟通的时间观念和空间观念。而我们处于云计算,大数据,人工智能,互联网+的时代,现在的生活工作离不开信息学。
w 信息学的根基就是算法,数据结构,程序设计。
二、研究目的与意义
w C++由美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“C with Classes”带类的C)。开始,C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。
w 今天C++已成为世界主流编程语言之一,要学习计算机的相关知识,必须从语言开始学起。
牢固掌握c++语言,可以提高逻辑思维能力,开拓思维,为将来系统地学习计算机相关知识打下基础。
三、研究内容
C++介绍及入门、
顺序结构程序设计
程序控制结构、
循环结构。
四、研究方法
互动教学
机房授课
讲练结合
五、研究计划(各阶段均需注明时间段、主要活动)
第一个阶段:C++介绍及入门,9月份的第一周、第二周
第二个阶段:顺序结构程序设计,9月的第三、第四、10月份第一周
第三个阶段:程序控制结构、大约3个周
第四个阶段:大约3个周
六、小组成员具体分工与特性分析
相互帮助,共同研究。
七、预期成果及表现形式(研究的最终成果以什么样的形式展现出来,是论文、实验报告、实物、网站还是其他形式)
成果主要通过研究性报告来体现,学习之后可以参加信息学的奥林匹克竞赛,可以通过证书来检验学习效果,也可以自己编写程序,参加程序比赛。
八、资源准备(如所需图书、设备、经费预算等)
1、 电脑
2、 信息学竞赛系列书籍
经费预算为5000元。
九、结题论文 (研究结果、分析、建议,研究过程收获与体会)
( 可打印出来黏贴,附页 )
第一章 C++语言入门
第一节 C++程序的基本结构
#include<iostream> //头文件/预处理命令。对其他程序的引用,一种声明
using namespace std; //名字空间,采用标准名字空间
int main() //主函数,是所有C++程序的运行起始点
{
}
【例1.1】在屏幕上输出“Hello World!”。
#include<iostream>
using namespace std;
int main()
{
cout<<"Hello World!"<<endl; //输出"Hello World!"
return 0; //结束整个程序
}
运行结果:
Hello World!
【说明】:
1、以“//”开头为注释行,“//”后的内容用以对语句进行说明,输入程序时可以不输入。
2、#include<iostream>
告诉编译器的预处理器将输入输出流的标准头文件(iostream)包括在本程序中。
这个头文件包括了C++中定义的基本标准输入输出程序库的声明。
3、using namespace std
使用std(标准)名字空间的意思。所谓的名字空间是标准C++中的一种机制,用来
控制不同类库的冲突问题。使用它可以在不同的空间内使用相同名字的类或者函数。
4、int main( )
这一行为主函数(main function)的起始声明。main()是所有C++程序的运行的起始
点。不管它是在代码的开头,结尾还是中间,此函数中的代码总是在程序开始运行时第
一个被执行。所有C++程序都必须有一个main(),int main()。
main后面跟了一对圆括号( ),表示它是一个函数。C++中所有函数都跟有一对圆
括号( ),括号中可以有一些输入参数。注意,圆括号中即使什么都没有也不能省略。
如例题中显示,主函数main()中的内容,由一对花括号{ }括起来。
5、cout << "Hello World!"<<endl
这个语句在本程序中最重要。 cout是一个输出语句,告诉计算机把引号之间的字符
串送到标准的输出设备(屏幕)上。cout 的声明在头文件iostream中,所以要想使用cout
必须将头文件iostream包括在程序开始处。endl是C++语言的换行控制符,表示内容输出
后换行显示后续的内容。
6、return 0
主函数main( )的返回语句,一般是函数的最后一条可执行语句。main()函数末尾使用return语句时,数值0表示程序顺利结束,其他数表示有异常。在后面的例子中你会看到C++程序都以类似的语句结束。
在C++中,语句的分隔是以分号“;”为分隔符的,分行写代码只是为了更方便人阅读。
【练习1.1】
1.编写一个能够输出“I love programming!”的程序
输入:无。
输出:一行,仅包含一个字符串:“I love programming!”
样例输入:(无)
样例输出:I love programming!
【例1.2】已知一位小朋友的电影票价是10元,计算x位小朋友的总票价是多少?
【分析】 假设总票价用y来表示,则这个问题可以用以下几个步骤来实现:
①输入小朋友的数目x;
②用公式y=10*x计算总票价;
③输出总票价y的值。
程序如下:
#include<iostream> //使用cin,cout,须调用iostream库
using namespace std;
int main()
{
int x,y; //定义整型变量
cout<<"Input x="; //输入提示
cin>>x; //输入小朋友的人数
y=10*x; //计算总票价
cout<<"total="<<y<<endl; //输出总票价
return 0; //结束程序
}
【例1.3 】在梯形中阴影部分面积是150平方厘米,求梯形面积。
【分析】 已知梯形上、下底长为15和25。令梯形的高为h,则由已知三角形面积为150平方厘米,有150=(15*h)/2,得h为20,然后根据梯形面积公式算出梯形面积。程序如下:
#include<iostream>
using namespace std;
int main()
{
int s,h,up,down;
up=15;
down=25;
h=2*150/up;
s=(up+down)*h/2;
cout<<"s=“<<s<<endl;
return 0;
}
运行结果:
s=400
通过以上例1.2和例1.3两个例子,可以总结出C++语言程序的结构如下:
1)C++语言变量在使用之前必须先定义其数据类型,未经定义的变量不能使用。
2)程序由一个或多个函数组成,一个程序中必须有且只有一个主函数,主函数的名字为main。不论main()函数在程序中什么位置,程序都是从main()函数开始执行,main()函数执行完毕,程序也就结束了。
3)在程序中可以调用系统提供的库函数。在调用库函数之前,必须将相应头文件包含在程序中。
4)程序中可以有注释行。注释是为了使程序更易于理解和提示。
5)程序的语句以分号结束。分号是C++语言不可缺少的组成部分。
6)程序的书写要注意适当的缩进,一般采用“逐层缩进”形式,以便使程序更加清晰易读。
【例1.4】给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。
#
###
#####
程序如下:
#include<iostream> //使用cin,cout,须调用iostream库
using namespace std;
int main()
{
char a; //定义字符变量
cin>>a; //输入给定一个字符
cout<<" "<<a<<endl; //输出1个字符,先输出2个空格
cout<<" "<<a<<a<<a<<endl; //输出3个字符,先输出1个空格
cout<<a<<a<<a<<a<<a<<endl; //输出5个字符
return 0;
}
【练习1.2】字符三角形
给定一个字符,用它构造一个对角线长5个字符,倾斜放置的菱形。
输入:输入只有一行, 包含一个字符。
输出:该字符构成的菱形,对角线长5个字符。
样例输入:
*
样例输出:
*
***
*****
***
*
第二章 顺序结构程序设计
第一节 赋值语句
在C++语言中,“=”作为赋值运算符,而不表示“等于”判断。赋值语句是由赋值表达式再加上分号构成的表达式语句,它是程序中使用最多的语句之一。
变量=表达式;
在赋值语句的使用中,需要注意以下几点:
1)由于赋值运算符“=”右边的表达式也可以是赋值表达式,因此,下述形式 :
变量=(变量=表达式);
是成立的,从而形成嵌套的情形。其展开之后的一般形式为:变量=变量=…=表达式;例如,“a=b=c=d=e=5;”,它实际上等价于:e=5;d=e;c=d;b=c;a=b;
2)在进行赋值运算时,如果赋值运算符两边的数据类型不同,系统将会自动进行类型转换,即将赋值运算符右边的数据类型转换成左边的变量类型。当左边是整型而右边是实型时,将去掉小数部分并截取该整型对应的有效位数。
【例2.1】输入两个正整数A和B,试交换A、B的值(使A的值等于B,B的值等于A)。
【分析】 交换两个变量的值方法很多,一般我们采用引入第三个变量的算法,二个变量交换,可以想像成一瓶酱油和一瓶醋进行交换,这时容易想到拿一个空瓶子过来:
① 将酱油倒到空瓶中;② 将醋倒到酱油瓶中;③ 将原空瓶中的酱油倒到醋瓶中。
程序如下:
#include<iostream> //使用cin,cout,须调用iostream库
using namespace std;
int main()
{ int a,b,c; //定义三个变量
cout<<"Input a,b="; //输入提示Input a,b=
cin>>a>>b; //输入A、B的值
c=a; a=b; b=c; //交换A、B的值
cout<<"a="<<a<<" b="<<b<<endl; //输出结果
return 0;
}
【练习2.1】输入三个正整数A、B、C,试交换A、B、C的值(使A的值等于B,B的值等于C,C的值等于A)。
输入样例:1 2 3
输出样例:a=2 b=3 c=1
第二节 运算符和表达式
运算符纵览
1.算术运算符
用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
2.关系运算符
用于比较运算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。
3.逻辑运算符
用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
4.位操作运算符
参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
5.赋值运算符
用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
一、算术运算符
1、除法运算符
C++语言的除法运算符有一些特殊之处,即如果a、b是两个整数类型的变量或常量,那么a/b的值是a除以b的商。例如,5/2的值是2,而不是2.5,而5.0/2或5/2.0的值是2.5。
2、模运算符
求余的运算符“%”也称为模运算符,是双目运算符,两个操作数都是整型数。a%b的值就是a除以b的余数,5%2余数为1。其操作对象只能是整型数,而其他四种运算符对int,float,double,char都适用。
【说明】
1)、除法运算或求商运算(/)
两个整数相除的结果为整数,5/2=2
两个实数相除的结果为实数,5.0/2=2.5或5/2.0=2.5
2)、取模运算或求余运算(%)
必须为两个整数,右操作不能为0,操作对象只能是整数型,运算结果为整除之后的余数,例如5%2=1。
3)、+,-,*,/,%这几个算数运算符的运算对象都是两个,所以称为双目运算符。
4)、优先级别为:*,/,%高于+,-运算,都比赋值运算符的优先级别高,所以先算术,后赋值。
5)、运算顺序为自左向右(赋值运算的顺序为自右至左)。
6)、整除、取模运算的结果都是整数。
【练习2.2】比较分析下面程序的执行结果
a=300*2/3;
b=2/3*300;
a和b运行结果是否相同?为什么?
【练习2.3】A+B问题
A+B问题的题目描述如下:给定两个整数A和B,输出A+B的值。保证A、B及结果均在整型范围内。现在请你解决这一问题。
输入:一行,包含两个整数A,B,中间用单个空格隔开。A和B均在整型范围内。
输出:一个整数,即A+B的值。保证结果在整型范围内。
样例输入:1 2
样例输出:3
【练习2.4】计算(a+b)*c的值
给定3个整数a、b、c,计算表达式(a+b)*c的值。
输入:输入仅一行,包括三个整数a、b、c, 数与数之间以一个空格分开。
(-10,000<a,b,c<10,000)
输出:输出一行,即表达式的值
样例输入:2 3 5
样例输出:25
【练习2.5】计算(a+b)/c的值
给定3个整数a、b、c,计算表达式(a+b)/c的值,/是整除运算。
输入;输入仅一行,包括三个整数a、b、c, 数与数之间以一个空格分开。(-10,000 < a,b,c < 10,000, c不等于0)
输出:输出一行,即表达式的值。
样例输入:1 1 3
样例输出:0
【练习2.6】带余除法
给定被除数和除数,求整数商及余数。此题中请使用默认的整除和取余运算,无需对结果进行任何特殊处理。
输入:一行,包含两个整数,依次为被除数和除数(除数非零),中间用一个空格隔开。
输出:一行,包含两个整数,依次为整数商和余数,中间用一个空格隔开。
样例输入:10 3
样例输出:3 1
【练习2.7】数学中经典的“鸡兔同笼”问题
已知头共30个,脚共90只,问笼中的鸡和兔各有多少只?
3、自反算数赋值运算符(复合算术赋值)。
自反加赋值 a+=b,相当于a=a+b;
自反减赋值a-=b,相当于a=a-b;
自反乘赋值a*=b,相当于a=a*b;
自反除赋值a/=b,相当于a=a/b;
自反模赋值a%=b,相当于a=a%b;
4、自加自减运算符
自反算数赋值运算中有两种更加特殊的情况
i=i+1,相当于i+=1; i=i-1,相当于i-=1
自加、自减运算符用来对一个操作数进行加1或减1运算,其结果仍然赋予该操作数,而且参加运算的操作数必须是变量,而不能是常量或表达式。
1)自增运算符。例如,x++表示在使用x之后,使x的值加1,即x=x+1;++x表示使用x之前,先使x的值加1,即x=x+1。
2)自减运算符。例如,x--表示在使用x之后,使x的值减1,即x=x-1;--x表示使用x之前,先使x的值减1,即x=x-1。
3)自加运算i++或++i
自减运算i--或--i
i++和i--称为后缀形式(先引用,后增值)
++i和--i称为前缀形式(先增值,后引用)
【例2.2】
int i int i;
i=5; i=5;
x=i++; x=++i;
y=i; y=i;
【例2.3】变量自加运算
#include<iostream>
using namespace std;
int main()
{
int x,y,z1,z2;
x=7; y=8;
z1=y-(x++); //计算z1=1,计算后x=8
z2=y-(++x); //计算前x的值自加1,x的值为9,再与y求差
cout<<“z1="<<z1<<endl<<“z2="<<z2; //分别输出z1和z2的值
}
运行结果:?
二、关系运算符
关系运算符用于数值的大小比较。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种,它们都是双目运算符。
关系运算符运算的结果是整型,值只有两种:0或1,0代表关系不成立,1代表关系成立。
请看下面的例子:
int main()
{ int n1=4,n2=5,n3;
n3=n1>n2; //n3的值为_______
n3=n1<n2; //n3的值为_______
n3=n1==4; //n3的值为_______
n3=n1!=4; //n3的值为_______
n3=n1==1+3; //n3的值为_______
}
三、逻辑运算符
C++语言中提供了三种逻辑运算符:与运算(&&)、或运算(||)、非运算(!)。与运算符(&&)和或运算符(||)均为双目运算符。具有左结合性。 非运算符(!)为单目运算符,具有右结合性。
算数运算>关系运算>逻辑运算
逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”来表示。其求值规则如下:1.与运算&&参与运算的两个量都为真时,结果才为真,否则为假。
例如,5>0 && 4>2
2.或运算||参与运算的两个量只要有一个为真,结果就为真。 两个量都为假时,结果为假。
例如:5>0||5>8
3.非运算!参与运算量为真时,结果为假;参与运算量为假时,结果为真。例如:!(5>0)的结果为?
虽然C++编译在给出逻辑运算值时,以“1”代表“真”,“0 ”代表“假”。 但反过来在判断一个量是为“真”还是为“假”时,以“0”代表“假”,以非“0”的数值作为“真”。
例如:5&&3的值为?
又如:5||0的值为?
4.算术运算符、关系运算符、逻辑运算符和赋值运算符的优先级如下:
赋值运算符<逻辑运算符<关系运算符<算术运算符 关系运算符的结合性为:自左至右。
根据以上优先级和结合性,计算出以下表达式的结果(假设a=3,b=2,c=1)
{
a>b;
(a>b)==c;
b+c<a;
d=a>b;
f=a>b>c;
}
第三节 常量和变量
一、常量
常量是指在程序中使用的一些具体的数、字符。在程序运行过程中,其值不能被更改。如123,145.88,'m',TRUE等。
1、整型常量:如3、-5、0等。整型常量是表示整数的常量。有三种表示形式:
1)十进制形式。如99、-1。
2)八进制形式。以数字0打头,由0-7构成,如012,表示八进制整数12,即12(8)。
3)十六进制形式。以0x打头,如0x12A,表示十六进制整数12A,即12A(16)。
2、实型常量:如3.1、-6.1E+2(科学记数法)。
3、字符常量:是用单引号括起来的字符,如 'k' 、'5' 、'%'。
注意:'a'与"a"表示的含义是不同的,'a'表示一个字符常量,"a"表示一个字符串。
一个常量可以直接调用(如124,'A'),也可以给常量取个名字用一个标识符代表它,这就是符号常量。其语法格式为:
const 类型说明符 常量名=常量字符;
例如:const double PI=3.1415926;
或者 类型说明符 const 常量名=常量字符;
例如 :double const PI=3.1415926;
可写在主函数之前,也可以写在主函数中
二、变量定义
变量代表了一个存储单元,其中的值是可以改变的,因此称为变量。
一个程序中可能要使用到若干个变量,为了区别不同的变量,必须给每个变量(存储单元)取一个名(称为变量名),该变量(存贮单元)存储的值称为变量的值,变量中能够存储值的类型为变量的类型。
1.变量名
用一个合法的标识符代表一个变量。如n,m,rot,total 等都是合法变量名。在程序中用到的变量要“先定义后使用”,变量名应遵循自定义标识符的命名规则,并建议使用“见名知义”的原则,即用一些有意义的单词作为变量名。在C++语言,变量名大小写有区别。
用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符。C++语言规定,标识符只能由字母或下划线“_”开头,后面的字符可以是字母或数字。对于标识符的长度,不同的C++语言编译器有不同的规定,考虑到系统的可移植性,建议变量名的长度不要超过8个字符。例如:month、_age、s2为合法的标识符;m.k.jack、a<=b、9y为不合法的标识符。
习惯上,符号常量名用大写,而变量名用小写,以便于区别。
2. 变量的类型
常量是有类型的数据,变量在某一固定时刻用来存储一个常量,因此也应有相应的类型。如整型变量用来存储整数,实型变量用来存储实数。变量的类型,可以是标准数据类型int、short、long、float、double和char等,也可以是用户自定义的各种类型。
变量一经定义系统就在计算机内存中为其分配一个存储空间。在程序中使用到变量时,就在相应的内存中存入数据或取出数据,这种操作称为变量的访问。
定义变量的语法格式为:
数据类型 变量表1,变量表2,……;
【例2.4】
int i=5,j,k; //定义i,j,k为整型变量,
//i赋初值为5,j,k的初值未知。
char a,b,c; //定义a,b,c为字符变量
float x,y,z; //定义x,y,z为实型变量
C++语言允许在定义变量的同时为变量赋初值。
【例2.5 】输入半径r,求圆的周长及面积。(π取3.14)
样例输入r=3
样例输出c=18.84 s=28.26
#include<iostream> //调用iostream库
using namespace std;
const double PI=3.14; //PI是符号常量。代表3.14
int main()
{
float r,c,s; //定义实型变量
cout<<“r=“; //显示提示符r=
cin>>r; //输入r的值
c=2*PI*r; //计算圆的周长
s=PI*r*r; //计算圆的面积
cout<<“c=“<<c<<“ s=“<<s; //显示计算结果,
}
程序中定义的PI代表常量3.14,在编译源程序时,遇到PI就用常量3.14代替,PI可以和常量一样进行运算。C++语言规定,每个符号常量的定义占据一个书写行,而且符号常量不能被再赋值。如果在例2.5中使用以下赋值语句是错误的。PI=3.14;
使用符号常量的好处:
1)增加了程序的可读性。如看到例2.5程序中,见到PI就可知道它代表圆周率,定义符号常量名时应该尽量使用见名知意的常量名。
2)增加了程序的易改性。如例2.5程序中,只需改动一处,程序中的所有PI都会自动全部代换,做到“一改全改”。
若PI=3.1415926,精度保留7位小数,上述程序可行吗?
【拓展:printf()函数】
使用printf函数必须调用<cstdio>库函数
格式语法:
printf(格式控制字符串,输出表达式1,输出表达式2,……);
其中格式控制字符串由两部分构成,格式说明字段和普通字符(包括转义字符)。一个格式说明字段将引起一个输出参数项的转换与显示,它由%引出格式说明字段,格式说明字段与后面的输出表达式参数要对应一致。
int a=975311;
printf(“%d”,a);
输出结果975311
double a=123.456;
printf(“%f”,a);
输出结果123.456000(默认6位精度)
控制精度,输出8位小数
printf(“%.8f”,a);
加修饰字符串,输出“面积=123.1234567”
printf(“面积=%.7f”,a);
输出百分号
printf(“%%”);
【例2.5】输入半径r,求圆的周长及面积。(π取3.1415926)
要求结果保留7位小数
输入样例:r=5
输出样例:周长=31.4159360,面积=78.5398178
#include<iostream> //调用iostream库
#include<cstdio>
using namespace std;
const double PI=3.1415926; //PI是符号常量。代表3.1415926
int main()
{ const double PI=3.1415926;
float r,c,s; //定义实型变量
cout<<“r=“; //显示提示符r=
cin>>r; //输入r的值
c=2*PI*r; //计算圆的周长
s=PI*r*r; //计算圆的面积
printf(“周长=%.7f ,面积=%.7f\n”,c,s); //显示计算结果,
}
【练习3.1】甲流疫情死亡率
甲流并不可怕,在中国,它的死亡率并不是很高。请根据截止2009年12月22日各省报告的甲流确诊数和死亡数,计算甲流在各省的死亡率。
输入:输入仅一行,有两个整数,第一个为确诊数,第二个为死亡数。
输出:输出仅一行,甲流死亡率,以百分数形式输出,精确到小数点后3位。
样例输入:10433 60
样例输出:0.575%
【练习3.2】计算多项式的值
对于多项式f(x) = ax3+bx2+cx+d和给定的a,b,c,d,x,计算f(x)的值,保留到小数点后7位。
输入:输入仅一行,包含5个实数,分别是x,及参数a、b、c、d的值,每个数都是绝对值不超过100的双精度浮点数。数与数之间以一个空格分开。
输出:输出一个实数,即f(x)的值,保留到小数点后7位。
样例输入:2.31 1.2 2 2 3
样例输出:33.0838692
【练习3.3】温度表达转化
利用公式c= 5*(f-32)/9(其中c表示摄氏温度,f表示华氏温度)进行计算转化,输入华氏温度f,输出摄氏温度c,要求精确到小数点后5位。
输入:输入一行,包含一个实数f,表示华氏温度。(f >= -459.67)
输出:输出一行,包含一个实数,表示对用的摄氏温度,要求精确到小数点后5位。
样例输入:41
样例输出:5.00000
【练习3.4】与圆相关的计算
给出圆的半径,求圆的直径、周长和面积。输入圆的半径实数r,输出圆的直径、周长、面积,每个数保留小数点后4位。
输入:输入包含一个实数r(0 < r <= 10,000),表示圆的半径。
输出:输出一行,包含三个数,分别表示圆的直径、周长、面积,数与数之间以一个空格分开,每个数保留小数点后4位。
样例输入:3.0
样例输出:6.0000 18.8495 28.2743
【练习3.5】与圆相关的计算
输入底面积半径r和高h,输出圆柱体的表面积,保留三位小数
样例输入:3.5 9
样例输出:274.889
【选做练习3.6】6.计算串联电路和并联电路中电阻的阻值
对于阻值为r1和r2的电阻,输入两个电阻大小,浮点型。输出串联和并联之后阻值大小,结果保留小数点后2位。
输入:两个电阻大小,浮点型,以一个空格分开。
输出:串联之后阻值的大小,结果保留小数点后2位;并联之后阻值的大小,结果保留小数点后2位;数值之间用空格隔开。
样例输入:1 2
样例输出:3.00 0.67
第四节 标准数据类型
C++语言提供了丰富的数据类型,本节介绍几种基本的数据类型:整型、实型、字符型。它们都是系统定义的简单数据类型,称为标准数据类型。
一、整型。整型类型标识符为int。根据整型变量的取值范围又可将整型变量定义为4种整型类型。
二、实型。实型类型的标识符为float和double,以及特殊实型布尔变量(bool)。
三、字符型。实型类型的标识符为char。字符常量有以下两种表示法:
1、普通表示形式。
字符常量是由单个字符组成,所有字符采用ASCII编码,ASCII编码共有128个字符(表2-4)。在程序中,通常用一对单引号将单个字符括起来表示一个字符常量。如:'a','A','0'等。如字符A的序号是65,字符a的序号是97, 字符0的序号的48。
2、转义字符表示形式。
转义字符有三种用法:表示控制字符、表示特殊字符、表示所有字符。
基于char数据的这个特点,它可以和int变量一样做加减运算,【例4.1】说明了这种用法。
【例4.1】大小字母的转换
#include<iostream>
using namespace std;
int main()
{ char c1,c2;
c1='a';
c2='A';
cout<<c1<<" "<<c2<<endl;
c1=c1-32; //小写字母转换大写字母
c2=c2+32; //大写字母转换小写字母
cout<<c1<<" "<<c2<<endl;
}
运行结果:
a A
A a
因为所有小写字母的ASCII值要比对应大写字母的ASCII值大32,所以c1减去32后便得到原来字母的大写形式。反之,c2加上32后便得到原来字母的小写形式。
【例4.2】整型数据类型存储空间大小
分别定义int,short类型的变量各一个,并依次输出它们的存储空间大小(单位:字节)。
【参考程序】
#include<iostream>
using namespace std;
int main()
{
int x;
short y;
cout<<sizeof(x)<<" "<<sizeof(y)<<endl;//sizeof返回一个对象或者类型所占的内存字节数
return 0;
}
【练习4.1】其他数据类型存储空间大小
分别定义bool,char类型的变量各一个,并依次输出它们的存储空间大小(单位:字节)。
输入:无。
输出:一行,两个整数,分别是两个变量的存储空间大小,用一个空格隔开。
【练习4.2】浮点型数据类型存储空间大小
分别定义float,double类型的变量各一个,并使用格式化输出语句依次输出它们的存储空间大小(单位:字节)。
输入:无。
输出: 一行,两个整数,分别是两个变量的存储空间大小,用一个空格隔开。
四、C++语言中,不同数据类型的运算对象进行混合运算,或者需要将一个表达式的结果转换成期望的类型时,就需要依据数据类型转换规则进行转换。
1、混合运算时的类型转换规则
整型、实型、字符型数据间可以混合运算。在这种情况下,需要将不一致的数据类型转换成一致的数据类型,然后进行运算。为了保证运算精度,系统在运算时的转换规则是将存储长度较短的运算对象转成存储长度较长的类型,然后再进行处理。这种转换是系统自动进行的。混合运算时的类型转换规则如下:
【说明如下】
1)纵向箭头表示必定会进行的转换,如float型数据必先转换为double型数据,然后与其他操作数进行运算。与此类似,char型或short型数据必先转换为int型数据,然后进行运算。
2)横向箭头表示当运算对象为不同类型数据时的转换方向,如int型与double型进行运算,int型直接转换为double型后进行运算,不能理解为先转换为long int型,然后
展开阅读全文