C高中信息学科竞赛必备第2章-基础概念_第1页
C高中信息学科竞赛必备第2章-基础概念_第2页
C高中信息学科竞赛必备第2章-基础概念_第3页
C高中信息学科竞赛必备第2章-基础概念_第4页
C高中信息学科竞赛必备第2章-基础概念_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

1、第二章 基础概念,第一节常量和变量 第二节标准数据类型 第三节运算符和表达式 第四节赋值语句 第五节 数据输入输出,第一节常量和变量,常量,一、常量 常量是指在程序中使用的一些具体的数、字符。在程序运行过程中,其值不能被更改。如123,145.88,m,TRUE等。 1、整型常量:如3、-5、0等。 整型常量是表示整数的常量。有三种表示形式: 1)十进制形式。如99、-1。 2)八进制形式。以数字0打头,由0-7构成,如012,表示八进制整数12,即(12)8。 3)十六进制形式。以0 x打头,如0 x12A,表示十六进制整数12A,即(12A)16。 2、实型常量: 日常表示法 如3.1 、

2、-9.87、-30 科学计数法 、-6.1E+2 例:请将下面的数用科学计数法表示 2600 0.045 -0.0086 3、字符常量:是用单引号括起来的字符,如 k 、5 、%。 注意:a与a表示的含义是不同的,a表示一个字符常量,a表示一个字符串。,常量,4、字符串常量: 字符串常量又称字符串,是用一对双引号(英文)括起来的字符序列。例如”hello world!”,”please input a = ”。 小说明 :字符串和字符在内存中的存储形式不同,字符串除了按字符的顺序存放之外,还会在末尾加上符号0,用以表示字符串的结束。因此字符串在内存中占有的字符数为字符个数+1。注意:字符串的长

3、度仍然是包含字符的个数。 5、布尔常量 布尔常量仅有两个false和 true,即0和1;,常量的定义,一个常量可以直接调用(如124,A),也可以给常量取个名字用一个标识符代表它,这就是符号常量。其语法格式为: const 类型说明符 符号常量=常量字串; 例如:const double PI=3.1415926; const int INFINITY = 65000; const char GOOD=A; const string SCHOOL=“sdshiyan”; const bool FLAG = true;,例2.5 输入半径r,求圆的周长及面积。 #include /调用iost

4、ream库,否则使用printf和scanf语句编译出错 using namespace std; /这个程序可省略这行 const double PI=3.1415926; /PI是符号常量。代表3.1415926 int main() float r,c,s; /定义实型变量 printf(r=); /显示提示符r= scanf(%f,习惯上,符号常量名用大写,而变量名用小写,以便于区别。 使用符号常量的好处: 1)增加了程序的可读性。如看到例2.5程序中,见到PI就可知道它代表圆周率,定义符号常量名时应该尽量使用见名知意的常量名。 2)增加了程序的易改性。如例2.5程序中,只需改动一处,

5、程序中的所有PI都会自动全部代换,做到“一改全改”。,变量定义,变量代表了一个存储单元,其中的值是可以改变的,因此称为变量。如游戏中玩家命的条数最初为3,当你死了一次,命减少一条,这里命的条数就是一个变量(或者说命的条数存储在一个存储单元中)。 一个程序中可能要使用到若干个变量,为了区别不同的变量,必须给每个变量(存储单元)取一个名(称为变量名),该变量(存贮单元)存储的值称为变量的值,变量中能够存储值的类型为变量的类型。例如游戏中用于存储“命”的变量,在游戏程序中的存储命的变量名可取为life,它的类型为整型,游戏初始时这个变量的值为3。,变量名,用一个合法的标识符代表一个变量。如n,m,r

6、ot,total 等都是合法变量名。在程序中用到的变量要“先定义后使用”,变量名应遵循自定义标识符的命名规则,并建议使用“见名知义”的原则,即用一些有意义的单词作为变量名。在C+语言,变量名大小写有区别。,用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符。C+语言规定,标识符只能由字母(包含下划线“_”)开头,后面的字符可以是字母或数字。对于标识符的长度,不同的C+语言编译器有不同的规定,考虑到系统的可移植性,建议变量名的长度不要超过8个字符。例如:month、_age、s2为合法的标识符;m.k.jack、a=b、9y为不合法的标识符。,定义变量的语法格式为

7、: 数据类型 变量表 例如: int i=5,j,k; /定义i,j,k为整型变量, /i赋初值为,5j,k的初值未知。 char a,b,c; /定义a,b,c为字符变量 float x,y,z; /定义x,y,z为实型变量 C+语言允许在定义变量的同时为变量赋初值。,变量的类型,常量是有类型的数据,变量在某一固定时刻用来存储一个常量,因此也应有相应的类型。如整型变量用来存储整数,实型变量用来存储实数。变量的类型,可以是标准数据类型int、short、long、float、double和char等,也可以是用户自定义的各种类型。 变量一经定义系统就在计算机内存中为其分配一个存储空间。在程序中

8、使用到变量时,就在相应的内存中存入数据或取出数据,这种操作称为变量的访问。,第二节标准数据类型,C+语言提供了丰富的数据类型,本节介绍几种基本的数据类型:整型、实型、字符型。它们都是系统定义的简单数据类型,称为标准数据类型。,整型(integer),在C+语言中,整型类型标识符为int。根据整型变量的取值范围又可将整型变量定义为以下8种整型类型:,实型(real),一个实型数据用来存储实数,实型包括正实数、负实数和零。C+语言中表示实型常量的形式有两种。 十进制表示法 这是人们日常使用的带小数点的表示方法。 如3,0.0, +5.61,-8.0,-6.050等都是实型常量。 科学记数法 科学记

9、数法是采用指数形式的表示方法,如1.25105可表示成1.25E+05。在科学记数法中,字母E表示10这个底数,而E之前为一个十进制表示的小数,称为尾数,E之后必须是一个整数,称为指数。 如-1234.56E+26,+0.268E-50,1E5是合法形式,而E5,E,1.2E+0.5都不是合法的实数。 C+语言支持三种实型,它们是float(单精度实型)、double(双精度实型)、long double(长双精度实型)。每一种类型规定了相应的实数取值范围、所使用的存储空间(字节数)以及能达到的精度(有效位数)。float在空间允许的情况下没有必要使用,都应使用double提高精度。,表2-2

10、实型数取值范围,字符型(char),三、字符型 字符常量有以下两种表示法: 1、普通表示形式 字符常量是由单个字符组成,所有字符采用ASCII编码,ASCII编码共有128个字符(表2-4)。在程序中,通常用一对单引号将单个字符括起来表示一个字符常量。如:a,A,0等。如字符A的序号是65,字符a的序号是97, 字符0的序号的48。 2、转义字符表示形式。 转义字符有三种用法:表示控制字符、表示特殊字符、表示所有字符。常用的转义字符如右表所示。,ASCII编码表见下图:,例2.6 字符变量的赋值举例 #include using namespace std; int main() int c1

11、,c3; char c2,c4; c1=A; /把字符常量赋值给整型变量c1 c2=65; /把整型常量赋值给字符变量c2 c3=x41; /把用十六进制表示的转义字符常量赋值给整型变量c3 c4=101; /把用八进制表示的转义字符常量赋值给字符变量c4 coutc1=c1 c3=c3endl; /用整数格式输出c1,c3 coutc2=c2 c4=c4endl; /用字符格式输出c2, c4 运行结果: c1=65 c3=65 c2=A c4=A,基于char数据的这个特点,它可以和int变量一样做加减运算,例2.7说明了这种用法。 例2.7 大小字母的转换 #include #inclu

12、de using namespace std; int main() char c1,c2; c1=a; c2=A; coutc1 c2endl; c1=c1-32; /小写字母转换大写字母 c2=c2+32; /大写字母转换小写字母 coutc1 c2endl; getchar(); 运行结果: a A A a,因为所有小写字母的ASCII值要比对应大写字母的ASCII值大32,所以c1减去32后便得到原来字母的大写形式。反之,c2加上32后便得到原来字母的小写形式。,四、数据类型转换,C+语言中,不同数据类型的运算对象进行混合运算,或者需要将一个表达式的结果转换成期望的类型时,就需要依据数

13、据类型转换规则进行转换。,1、混合运算时的类型转换规则 整型、实型、字符型数据间可以混合运算。在这种情况下,需要将不一致的数据类型转换成一致的数据类型,然后进行运算。为了保证运算精度,系统在运算时的转换规则是将存储长度较短的运算对象转成存储长度较长的类型,然后再进行处理。这种转换是系统自动进行的,具体见表2-5所示。,混合运算时的类型转换规则,【说明如下】 1)纵向箭头表示必定会进行的转换,如float型数据必先转换为double型数据,然后与其他操作数 进行运算。与此类似,char型或short型数据必先转换为int型数据,然后进行运算。 2)横向箭头表示当运算对象为不同类型数据时的转换方向

14、,如int型数据与unsigned型数据进行运 算,int型转换为unsigned型后方可进行运算。int型与double型进行运算,int型直接转换为double 型后进行运算,不能理解为先转换为unsigned int型,然后转换为long int型,最后再转换为double型。,2、强制类型转换,在C+语言中,还允许强制类型转换,即将某一数据的数据类型转换为指定的另一种数据类型,强制类型转换只是临时转换。强制转换运算符组成的运算表达式的一般形式为: (类型名)(表达式) 例如:已知有变量定义“int b=7;float a=2.5,c=4.7;”,求下面算术表达式的值。 a+(int)(

15、b/3*(int)(a+c)/2.0)%4 根据运算符的结合性规则,表达式要自左至右执行,b/3为2,2*(int)(a+c)为14,14/2.0为7.0,强制类型转换后为7,7%4为3,a的值2.5与3相加,最终结果为5.5。,第三节运算符和表达式,C+语言中运算符和表达式数量之多,在高级语言中是少见的。正是丰富的运算符和表达式使C+语言功能十分完善。这也是C+语言的主要特点之一。,运算符纵览 1.算术运算符 用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(+)、自减(-)共七种。 2.关系运算符 用于比较运算。包括大于()、小于(=)、小于等于(

16、)六种。 5.赋值运算符 用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值( a+=b,相当于a=a+b。,例2.4 变量自加运算 #include 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=z1endl“z2=z2; /分别输出z1和z2的值 运行结果: z1=1 z2=-1,二、关系运算符 关系运算符用于数值的大小比较。包括大于()、小于(

17、=)、小于等于(n2; /n3的值为0 n3=n1n2; /n3的值变为1 n3=n1=4; /n3的值变为1 n3=n1!=4; /n3的值变为0 n3=n1=1+3; /n3的值变为1 ,三、逻辑运算符,C+语言中提供了三种逻辑运算符:与运算(”,它实际上等价于:e=5;d=e;c=d;b=c;a=b; 2)在进行赋值运算时,如果赋值运算符两边的数据类型不同,系统将会自动进行类型转换,即将赋值运算符右边的数据类型转换成左边的变量类型。当左边是整型而右边是实型时,将去掉小数部分并截取该整型对应的有效位数。,赋值时的类型转换规则,当赋值运算符两侧的数据类型不同时,需进行类型转换,这种转换是系统

18、自动进行的,转换规则如下: 1)float、double型赋值给int型:直接截断小数。 例如,“int i=f+0.6;”,f的值为4.0,右边算术表达式运算后的结果为4.6的double型数据,根据上述转换原则,直接舍弃小数,所以i的值为4。 2)int、char型赋值给float、double型:补足有效位以进行数据类型转换。 例如:“float f=4;”,float为7位有效数字,所以f的值为4.0000000。 3)char型(1字节)赋给int型(4字节):数值赋给int型的低8位,其它位补0。 4)long int型赋值给int型:long int型截断低字节给int型。 5)int型赋值给long int型:赋给long int型的低16位,如果int型的最高位是0,则long int的高16位全为0;如

温馨提示

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

评论

0/150

提交评论