【文档说明】C++基本数据类型与表达式课件.ppt,共(103)页,238.005 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44710.html
以下为本文档部分文字说明:
C++程序设计第2章基本数据类型与表达式湖南科技学院数学与计算科学系程序中最基本的元素是数据类型,根据数据类型可以为变量或常量分配内存空间,将变量、常量和运算符结合在一起组成表达式,进行复杂的运算和处理。第2章基本数据类型
与表达式2.1词法记号和标识符2.2基本数据类型2.3变量和常量2.4运算符和表达式2.5基本输入输出2.1词法记号和标识符2022/11/24湖南科技学院数学与计算科学系-5-2.1词法记号和标识符1、C++字符集英文字母:A~Z,a~z数字字符:0~9特殊字符:+
-*/%^=<>!#&|_~\‘“;.,()[]{}空格2022/11/24湖南科技学院数学与计算科学系-6-2.1词法记号和标识符1、什么是关键字?预先定义好的标识符,C++编译器对其进行特殊处理。2、如何识别关键字?使用VC++6.0的编辑环境时,
缺省是蓝色的字符即为关键字。2022/11/24湖南科技学院数学与计算科学系-7-2.1词法记号和标识符3、标识符标识符是程序员声明的单词,它命名程序正文中的一些实体,如函数名、变量名、类名、对象名等。C
++标识符的构成规则如下:1、不能是C++的关键字;2、第一个字符必须是大写、小写字母或下划线;3、不包含空格和“+、-、;”等特殊字符;4、为方便输入,长度一般不超过31个字符。2022/11/24湖南科技学院数学与
计算科学系-8-2.1词法记号和标识符例如:合法的标识符:apple、_Student、_123、No1、max_num不合法的标识符:51job、maxnum、-abc注意:C++的表示符是大小写敏感的,即abc≠ABC。2022/11/24湖南科技学院数学与计算科学系-9-2.1词法记号和标
识符4、分隔符分隔符用于分隔程序中的正文,在C++中使用下列字符作为分隔符:(){},:;这些分隔符不表示实际的操作,仅用于构造程序。比如“;”,用来作为一句完整语句的结束。2022/11/24湖南科技学院数学与
计算科学系-10-2.1词法记号和标识符5、空白在C++语句中经常出现空白(制表符、空格、空行)等,通常都忽略不计。2.1词法记号和标识符2022/11/24湖南科技学院数学与计算科学系-12-2.2、基本数据类型什么是数据类型?数据是程序处理的对象,数据根据其本身的特点
进行分类,从而形成不同的数据类型。例如:数学中有自然数、整数、实数2022/11/24湖南科技学院数学与计算科学系-13-2.2、基本数据类型基本数据类型整型:int字符型:char、wchar_t实型:float、double逻辑型:bool2022/11/24湖南科技
学院数学与计算科学系-14-2.2、基本数据类型自定义数据类型数组:type[]指针:type*引用:type&空类型:void结构:struct联合:union枚举:enum类:class2022/11/24湖
南科技学院数学与计算科学系-15-2.2、基本数据类型修饰符在C++中描述为了更加准确的描述数据类型,提供了4个关键字用来修饰基本的数据类型:1、长型long2、短型short3、有符号signed4、无符号unsigned
2022/11/24湖南科技学院数学与计算科学系-16-1、short:仅用来修饰int,称为短整型,占2字节内存,也可直接简写为short;2、long:仅修饰int和double,因为在不同的编译环境中使用long修饰的数据所占内存不同,这里列出的是在VC++6.0的环境下的。3、
unsigned:用来修饰char、short和int,表示该数据类型为无符号数。4、signed:用来修饰char、short和int,表示该数据类型为有符号数,为缺省设置。2022/11/24湖南科技学院数学与计算科学系-17-2.2、基本数据类型数据类型和内存空间不
同的数据类型,加上不同的修饰符就具有了不同的特点,在内存中占用的空间也不同,因而其所能表示的数值范围也不尽相同。内存单元的单位是字节,因此用来表示数据类型的长度的单位也是字节。2022/11/24湖南
科技学院数学与计算科学系-18-2.2、基本数据类型注意整型int的长度等于机器的字长:16位机:int=2字节;32位机:int=4字节。但是short和long表示的数据长度是固定的,任何支持标准C++的编译器都是如此,因而如果需
要编写可移植性好的程序,应将整型声明为short或long。2022/11/24湖南科技学院数学与计算科学系-19-2.2、基本数据类型例题编写一个程序,输出基本数据类型char,int,float,double,bool的长度。提示:使用sizeof(数据类型)能够获取不同数据类
型的长度。//输出基本数据类型的长度#include<iostream>usingnamespacestd;voidmain(){cout<<“char:”<<sizeof(char)<<“字节\n";cout<<"int:"<<sizeof(int)<<"字节\n";co
ut<<"float:"<<sizeof(float)<<"字节\n";cout<<"double:"<<sizeof(double)<<"字节\n";cout<<"bool:"<<sizeof(bool)<<"字节\n";}2.3变量和常量2022/11/24湖南科技学院数学与计算科学系-
22-2.3变量和常量概述程序所处理的数据不仅分为不同的数据类型,而且每种类型的数据还分为变量和常量。程序在运行中就是通过这些变量和常量来操作数据的。什么是变量?在C++中,变量是存储信息的地方。变量的实质是内存中的一个地址空间,在这个地址空间中可以进行数
据的存储和读取。2022/11/24湖南科技学院数学与计算科学系-23-2.3变量变量定义的格式:数据类型变量名1,变量名2,…变量名n;例如:定义各种类型的变量intnum;floatf;charch;shor
ts;doublearea,length;2022/11/24湖南科技学院数学与计算科学系-24-2.3变量说明在创建或定义变量时,需要指明该变量的数据类型和名称。数据类型:决定变量的存储方式和可以进行的操作;变量名称:用来区分不同的变量。变量一旦被定义,则系统自动为其分配应
占的内存。2022/11/24湖南科技学院数学与计算科学系-25-2.3变量变量名称的定义遵循标识符定义的规则,实际上变量名称就是其中一种标识符。常用的命名约定有三种:1、Unix环境常用的命名法my_age、num
_of_student2、驼峰式命名法myAge、numOfStudent3、匈牙利标记法iMyCar、bIsRight2022/11/24湖南科技学院数学与计算科学系-26-2.3变量赋值使用赋值运算符“=”可以将一个值赋给变量。例如:unsignedshortage;
age=18;或者unsignedshortage=18;2022/11/24湖南科技学院数学与计算科学系-27-2.3变量我们可以一次定义多个相同数据类型的变量,也可以一次为多个变量初始化:charch1=‟a‟,ch2=‟b‟;intheight=10,
width=6,area;特性:变量可以被多次赋值,但每次赋值后,原值都会被新值覆盖。例2.2:赋值运算符的使用#include<iostream>usingnamespacestd;voidmain(){intmyAg
e=18;cout<<“myAge=”<<myAge<<endl;myAge=20;cout<<“myAge=”<<myAge<<endl;}运行结果:myAge=18myAge=202022/11/24湖南科技学院数学与计算科学系-29-2.3变量typedef为已有的数据类型
定义一个同义词,或者叫做别名。例如:typedefunsignedintUINT;关键字数据类型别名赋值注意:使用typedef定义同义词时并不分配内存空间。2022/11/24湖南科技学院数学与计算科学系-30-2.3常量严格来
说,常量又分成符号常量和常数。符号常量:代表一个固定不变值的名字;常数:程序中使用的具体的数据。2022/11/24湖南科技学院数学与计算科学系-31-2.3常量符号常量C++中提供了一个关键字const,用来区分常量和变量。并且由于常量代表一个固定的值,
并且该值在程序运行过程中不能够被改变,所以要求常量在定义的时候必须进行初始化。例如:constinti=10;关键字数据类型常量名=初始值;2.3常量define关键字在C语言中使用预编译指令#define也能够定义常量。例如:#definePI3.14
15927关键字常量名值该语句属于预编译指令,不属于C++语句,因而行尾不需要使用分号。并且由于C++是向下兼容的,因而C语言的程序能够在C++的编译器下顺利运行。但是在C++编程中,建议使用const替代#define定义常量。2022/1
1/24湖南科技学院数学与计算科学系-33-2.3常量整型常数十进制数:1008进制数:014416进制数:0x64用U或u表示无符号整型,如65535U。用L或l表示长整型。默认的是int型。2022/11/24湖南科技学院数学与计
算科学系-34-2.3常量实型常数1小数形式例如:0.123、23.122指数形式例如:123e5或123E5=123*105注意:e前面必须有数字,e后面必须是整数实常数默认为double型可用后缀F(f)表示实数常数为float型。2022/11/24湖南科技学院数学与
计算科学系-35-2.3常量字符常数1、用单引号扩起来的一个字符,例如:‘a‟、„?‟。2、转义字符以\开头的字符序列,代表特殊的意义。例如:\n、\t、\”\a0x07bell(响铃)\n0x0A换行\r0x0D回车\t0x09制表符\v0x0B垂直跳格\b0x08Backsp
ace\\0x5C„\‟\"0x22双引号\‘0x27单引号\ddd1-3位8进数\xhh1-2位16进数例2.3:打印特殊字符#include<iostream>usingnamespacestd;voidmain(
){cout<<“输出字母:”<<‘a‟<<‟\a‟<<endl;cout<<“输出字母:”<<‘n‟<<‟\n‟;}运行结果:输出字母:a(蜂鸣器响一声)输出字母:n(换行)2.3常量反斜杠还可以和八进制数或十六进制结合起来表示相应的ASCII码。表示形式如下:\ddd:1~3位八
进制数\xhh:1~2位十六进制数我们知道在十六进制的ASCII码表中,字母’a‟~‟z‟的ASCII值是61H~7AH,因此我们也可以使用如下两句代码替代例2.3中的输出,达到同样的结果。cout<<“输出字母:”<<‘\x61‟<<‟\x07‟<<endl;cout<<“输出字
母:”<<‘\x6E‟<<‟\x0A‟;2022/11/24湖南科技学院数学与计算科学系-39-2.3常量字符变量charch1=„a‟,ch2=97,ch3=„/064‟原因:在内存中,字符数据以ASCII码存储,即以整数表示,所
以,C++中字符数据和整数可以相互赋值。例2.4:字符数据和整型数据的转换#include<iostream>usingnamespacestd;voidmain(){intn=‟a‟;charch=97;cout<<
”输出内容:”<<n<<endl;cout<<”输出内容:”<<ch<<endl;}运行结果:输出内容:97输出内容:a注意:变量在输出时,根据其本身的数据类型进行输出。2022/11/24湖南科技学院数学与计算科学系-41-2.3常量字符串常
量由一对双引号括起来的字符序列,例如:“howdoyoudo?”“helloworld!”2022/11/24湖南科技学院数学与计算科学系-42-2.3常量字符和字符串的区别1、字符常量和字符串常量是不同的,字符
串常量以‘/0’结尾。例如:字符串Hello在内存中的形式:2、“a”不等于‘a‟,”a”占2个字节,‘a‟1个字节Hello\0a\0a2022/11/24湖南科技学院数学与计算科学系-43-2.3常量字符串变量chara[20]=“Helloworld\n”;charb[5]=“a
”;charc=„a‟;思考字符串“/x07Operating\tsystem”有几个字符?显示结果如何?2022/11/24湖南科技学院数学与计算科学系-44-2.3常量逻辑常数逻辑型常数只有两个:false(假)和true(真)。在显示器
上显示为0和1。2.4运算符和表达式2022/11/24湖南科技学院数学与计算科学系-46-2.4运算符和表达式1、表达式2、语句和块3、运算符赋值运算符、算术运算符、关系运算符、逻辑运算符、位运算符、条件运算符、逗号运算符2
022/11/24湖南科技学院数学与计算科学系-47-2.4运算符和表达式表达式变量、常量是存放数据的地方,那么在C++语言中这些数据是如何处理和计算的呢?在C++语言中将变量、常量和运算符有机结合在一起组成的就是表达式,利用表达式C++可以进行复杂的运算和处理。例如:3.2//简单表
达式,值为3.22+3//常量表达式,值为5a//简单表达式,值为变量a的值x=(a+b)*c;//较为复杂的表达式表达式是可以嵌套的,比如y=x=a+b,该表达式先将a和b进行相加,然后将结果赋值给x,再将x=
a+b的值赋给y。2.4运算符和表达式2022/11/24湖南科技学院数学与计算科学系-49-2.4运算符和表达式表达式定义:表达式是操作符、操作数和标点符号组成的序列。操作符:+-*/等操作数:变量、常量、数组等标点符号:空格、回车等20
22/11/24湖南科技学院数学与计算科学系-50-2.4运算符和表达式语句和块C++中所有的操作运算都通过表达式来实现。由表达式和结尾的“;”组成一个C++语句;多条C++语句通过大括号{}括起来,组成一个块语
句,例如:{inttemp=x;x=y;y=temp;}一般来说属于同一个逻辑关系的多条语句组成块语句。2022/11/24湖南科技学院数学与计算科学系-51-2.4运算符和表达式运算符运算符具有优先
级和结合性。优先级:级别高的先运算,级别低的后运算。例如:*/高于+-结合性:自左向右结合还是自右向左结合。例如:1+2+3,+自左向右结合。2022/11/24湖南科技学院数学与计算科学系-53-2.4
运算符和表达式运算符根据运算符对操作数的要求不同,分成:一元运算符:仅需要一个操作数的运算符,例如++等二元运算符:需要两个操作数的运算符,例如:+、-、*、/等,形如“操作数1运算符操作数2”三元运算符:需要三个操作数的运算符,只有条件运算符“?:”。2022/1
1/24湖南科技学院数学与计算科学系-54-2.4运算符和表达式赋值运算符1、赋值运算符就是“=”例如:floatf=3.152、左值:可以合法的放在“=”左边的操作数右值:可以合法的放在“=”右边的操作数常量都是右值,所以不能够放在“=”的左边被赋值;变量既是左值又是
右值,可以放在任何位置。2022/11/24湖南科技学院数学与计算科学系-55-2.4运算符和表达式算术运算符C++提供的算术运算符包括“+,-,*,/,%,++,--”1、二元运算符:+(加),-(减),*,/,%2、一元运算
符:+(正号),-(负号),++,--2022/11/24湖南科技学院数学与计算科学系-56-2.4运算符和表达式算术运算符注意:1、“/”根据操作数不同,运算规律也不同:整型数为整除运算:例如5/2=2;浮点数为通常意义的除法:即5.0/2.0=2.
5。2、“%”取余数运算符,只能对整型数进行操作,不允许对浮点数进行操作。2022/11/24湖南科技学院数学与计算科学系-57-2.4运算符和表达式算术运算符C++中提供了两个特殊的运算符:++,--表示将操作数减1。++、--运算符根据操作数的位置不同,又称为前置(++i)和
后置(i++)1、前置(++i):先自身加1,然后再将加1的值作为(++i)表达式的值;2、后置(i++):将i作为(i++)表达式的值,然后自身再加1。例2.6:自增运算符的使用#include<iostream>usingnamespac
estd;voidmain(){inti=1;cout<<”i=”<<i<<endl;cout<<”i++:”<<i++<<endl;cout<<”i=”<<i<<endl;cout<<”++i:”<<++i<<
endl;cout<<”i=”<<i<<endl;}112332022/11/24湖南科技学院数学与计算科学系-59-2.4运算符和表达式算术运算符在C++中可以将算术运算符和赋值运算符结合在一起进行运算,因此C++还提供5种复合的赋值运算符+=,-=,*=,/=和%=。例如:x+=y相当于x=
x+yx-=y相当于x=x-yx*=y相当于x=x*yx/=y相当于x=x/yx%=y相当于x=x%y例如:#include<iostream>usingnamespacestdvoidmain(){intx=2,y
=3;x*=y+8;cout<<x<<endl;}原因:x*=y+8等价于x=x*(y+8)//显示222022/11/24湖南科技学院数学与计算科学系-61-2.4运算符和表达式算术运算符这些运算符的优先级由高
到低依次为:1、+(正号),-(负号),++,--2、*,/,%3、+、-4、=、+=、-=、*=、/=、%=2022/11/24湖南科技学院数学与计算科学系-62-2.4运算符和表达式注意在进行算术运算时,很可能出现溢出,溢出是指在给一个变量赋值时超出了其数据类型
表示的范围。溢出不会引起编译错误的,但运行结果会出现偏差。例如:shortinti=40000;cout<<i<<endl;输出结果:-255362022/11/24湖南科技学院数学与计算科学系-63-2.4运算符和表达式关系运算符关
系运算符有==、!=、>=、>、<=、<六种;这些运算符的优先级由高到低依次为:1、>=、>、<=、<2、==、!=由关系运算符将两个表达式连接起来,就是关系表达式;关系表达式的结果类型为bool,值只能为true或false,屏幕显示为1或0。例如inta=1,b=2,
c=3;cout<<a==b<<endl;cout<<a!=b<<endl;cout<<a>=b<<endl;cout<<a<b<<endl;d=a>b==c>a+5;cout<<d<<endl;结果true,输出为1结果false,输出为0结果true,输出为1结
果true,输出为1结果false,输出为02022/11/24湖南科技学院数学与计算科学系-65-2.4运算符和表达式逻辑运算符逻辑运算符有&&、||、!三种;这些运算符的优先级由高到低依次为1、!2、&&3、||除了逻辑非,逻辑运算的级别低于关系运算。逻辑表达式的结果类型也为bool,值
只能为true或false,屏幕显示为1或0。2022/11/24湖南科技学院数学与计算科学系-66-2.4运算符和表达式注意如果多个表达式用&&或||连接,为了提高判断效率,只要能够确定表达式的结果了,运行就不再继续。例如:inta=1,b=2;if(a>b&&b++)cout<<”b的
值没有被改变。”<<endl;cout<<b<<endl;运行结果:22022/11/24湖南科技学院数学与计算科学系-67-2.4运算符和表达式位运算符一般高级语言:byteC语言:bitC++语言中提供了六个位运算符,可以对整数进行位操作,分别是按位与(&
),按位或(|),按位异或(^),按位取反(~),左移位(<<),右移位(>>)。2022/11/24湖南科技学院数学与计算科学系-68-2.4运算符和表达式按位与(&)按位与操作的作用是将两个操作数对应的每一位分别进行逻辑与操作。例如:计算
3&53:000000115:000001013&5:00000001例如:将chara;的最低位置0:取inta;的低字节:a=a&0376;charc=a&0377;2022/11/24湖南科技学院数学与计算科学系-69-2.4运算符和表达式按位或(|)按位或
操作的作用是将两个操作数对应的每一位分别进行逻辑或操作。例如:计算3|53:000000115:000001013|5:00000111例如:将inta;的低字节置1:a=a|0xff;2022/11/24湖南科技学院数学与计
算科学系-70-2.4运算符和表达式按位异或(^)按位异或操作的作用是将两个操作数对应的每一位分别进行异或操作。具体运算规则:1^1=0,0^0=0,1^0=0^1=1例如:计算3^53:000000
115:000001013^5:000001102022/11/24湖南科技学院数学与计算科学系-71-2.4运算符和表达式按位异或(^)例如:如果使8位二进制数01111010的后四位翻转?可以将该二进制数与00001111进行异或操
作:01111010(^)00001111011101012022/11/24湖南科技学院数学与计算科学系-72-2.4运算符和表达式按位取反(~)按位取反是一个一元运算符,它的作用是将两个操作数对应
的每一位分别进行取反操作。具体运算规则:~1=0,~0=1。例如:计算~55:00000101~5:111110102022/11/24湖南科技学院数学与计算科学系-73-2.4运算符和表达式左移<<:按照指定的位数将一个二进制数值向左移动。左移后,低位补0,移出的高位舍弃。右移>>:按
照指定的位数将一个二进制数值向右移动,右移后,移出的低位舍弃。如果是无符号数则高位补0,如果是有符号数则高位补符号位或0,在VC++6.0环境下高位补符号位。例子chara=-8;a=a>>2;cout<<”a=”<<(int)a<<en
dl;例子chara=2;a=a<<1;cout<<”a=”<<(int)a<<endl;2022/11/24湖南科技学院数学与计算科学系-76-2.4运算符和表达式位运算符在C++中可以将位运算符和赋值运算符结合在一起进行运算,因此C++还提供另外5种运算符&=,|=,^=,<<=和>>
=。例如:x&=y相当于x=x&yx|=y相当于x=x|yx^=y相当于x=x^yx<<=y相当于x=x<<yx>>=y相当于x=x>>y2022/11/24湖南科技学院数学与计算科学系-77-2.4运算符和表达式位运算符这些位运算符的优先级由高到低依次为:1、~2、<<,>>
3、&4、^5、|6、&=,|=,^=,<<=和>>=2022/11/24湖南科技学院数学与计算科学系-78-2.4运算符和表达式条件运算符条件运算符语法格式为:表达式1?(表达式2):(表达式3);运算的结果是:如果表达
式1的值为真,则返回表达式2的值,否则返回表达式3的值。例1:x=a<b?a:b;例2:intx=0,y=1;cout<<(x>y?x:y)<<endl;2022/11/24湖南科技学院数学与计算科学系-79-2.4运算符和表达式逗号
运算符逗号表达式的语法格式为:表达式1,表达式2,……,表达式n;C++顺序计算表达式1,表达式2,……,表达式n的值,并将最后一次计算的结果作为逗号表达式的结果。例如:inta,b,c;a=1,b=2,c=a+b;例子inta
,b,c,d;d=(a=1,b=2,c=a+b,a+b+c);cout<<d<<endl;62022/11/24湖南科技学院数学与计算科学系-81-2.4运算符和表达式数据类型转换当表达式中出现多种数据类型的混合运算时,往往需要进行类型转换。表达式中的类型转换分成两种:1、隐式类型转换2
、强制类型转换。2022/11/24湖南科技学院数学与计算科学系-82-2.4运算符和表达式1、隐式类型转换各种二元运算符在进行运算时都要求两个操作数的数据类型一致。如果类型不一致,则系统自动对数据进行转换(隐式类型转换)。转换的基本原则
:将精度较低、范围较小的类型转换成精度较高、范围较大的类型。char→short→int→long→float→double2022/11/24湖南科技学院数学与计算科学系-83-2.4运算符和表达式1
、隐式类型转换对于同一种精度的无符号数和有符号数,在进行算术运算中,有符号数向着无符号数方向进行隐式类型转换:signed→unsigned。例如:inta=100;unsignedinti=99;cout<<i-a<<endl思考一下,如果将unsignedinti=99;改为unsign
edshorti=99;结果如何?2022/11/24湖南科技学院数学与计算科学系-84-2.4运算符和表达式1、隐式类型转换逻辑运算符要求参与运算的操作数为bool类型,如果是其他类型,则系统自动将其转换成bool类型,转换规则:0为false,非
0为true。赋值运算符要求“=”左右两边的操作数数据类型相同,如果类型不一致,则自动将右边的操作数类型向着左边的操作数类型转换。例如:inti=3.15;cout<<i<<endl;2022/11/24湖南科技学院数学与计算科学系-85-2.4运算符和表达式2、强制类型
转换强制类型转换通过是类型说明符和括号来实现的显式转换,其语法格式为:(数据类型名)表达式或数据类型名(表达式)例如:inti=97;cout<<(char)i<<endl;floatf=3.75;cout<<(int)f<<en
dl;2.5I/O流控制2022/11/24湖南科技学院数学与计算科学系-87-2.5I/O流控制在iostream库中包含有一个标准输入流对象cin和一个标准输出流对象cout,分别用来实现从键盘读取数据,以及将数据在屏幕输出。1、cin2、cout3、I/O流的格式
控制2022/11/24湖南科技学院数学与计算科学系-88-2.5I/O流控制1、标准输入流cincin负责从键盘读取数据,使用提取操作符“>>”就可以将键盘键入的数据读入到变量中。语法格式为:cin>>变量1>>变量2…>>变量n;
例如:inta,b;charch;cin>>a>>b>>ch;2022/11/24湖南科技学院数学与计算科学系-89-2.5I/O流控制2、标准输出流coutcout负责将变量或常量中的数据输出到屏幕,使用插入操作符“<<
”就可以将变量或常量的数据显示在屏幕上。例如:cout<<”Helloworld!\n”;cout能够自动识别“<<”后面的数据类型并进行显示,并且可以从左到右一次显示多个变量。例子#include<iostream>usingn
amespacestd;voidmain(){inta,b;charch;cout<<”请按顺序输入2整数和1字符:\n”;cin>>a>>b>>ch;cout<<”a=”<<a<<”b=”<<b<<”ch=”<<ch<<endl;}2022/11/24湖南科技学院数学与计算科学系-91-2.5I
/O流控制3、IO流的格式控制库文件iomanip常用控制符:setfill(c)设置填充字符setw(n)设置域宽为n2022/11/24湖南科技学院数学与计算科学系-92-2.5I/O流控制设置输出宽度和填充字符setw(n)设置域宽,即设置“<<”符号后面的数据占用的屏幕宽度。setfil
l(c)设置填充字符,即“<<”符号后面的数据长度小于域宽时,使用什么字符进行填充。setw(n)和setfill(c)例1:cout<<setw(8)<<‟a‟<<setw(8)<<‟b‟<<endl;输出结果:例2:cout<<setfill(„*‟)<<setw(5)<
<‟a‟<<endl;输出结果:_______a_______b****a#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){cout<<setfill('*')<<setw(2)<<'\n'<<set
w(3)<<'\n'<<setw(4)<<'\n'<<setw(5)<<'\n'<<setw(6)<<'\n'<<setw(7)<<'\n'<<setw(8)<<'\n';}****************************2022/
11/24湖南科技学院数学与计算科学系-95-2.5I/O流控制注意1除了setw()控制符外,其他控制符一旦设置,则对其后的所有输入输出产生影响。而setw()控制符只对其后输出的第一个数据有效,对其他数据没有影响,所以如
下代码:cout<<setw(8)<<‟a‟<<‟b‟<<endl;输出结果:_______ab2022/11/24湖南科技学院数学与计算科学系-96-2.5I/O流控制注意2setw()的默认为setw(0),意思是按实际输出。如果输出的数值占用的宽度
超过setw(intn)设置的宽度,则按实际宽度输出。例如:floatf=0.12345;cout<<setw(3)<<f<<endl;0.123452022/11/24湖南科技学院数学与计算科学系-97-2.5
I/O流控制3、I/O流的格式控制C++默认输出浮点数的有效位为6位,那么要想控制输出的数据的长度,该如何呢?比如:floatf=3.1234567;如何让显示结果为3.12?C++提供了setprecision(intn)可以控制显示浮点
数的有效位。#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){floatf=17/7.0;cout<<f<<endl;cout<<setpr
ecision(0)<<f<<endl;cout<<setprecision(1)<<f<<endl;cout<<setprecision(2)<<f<<endl;cout<<setprecision
(3)<<f<<endl;cout<<setprecision(6)<<f<<endl;cout<<setprecision(8)<<f<<endl;}2.428572.4284722.42.432.428572.42857152
022/11/24湖南科技学院数学与计算科学系-99-2.5I/O流控制3、I/O流的格式控制如何控制小数的位数?setiosflags(ios::fixed)控制符是用定点方式表示浮点数,将setpr
ecision(intn)和setiosflags(ios::fixed)结合,可以使用setprecision(intn)控制小数点右边小数的个数。#include<iostream>#include<iomanip>usingnamespacestd;voidmain
(){floatf=17/7.0;cout<<setiosflags(ios::fixed);cout<<setprecision(0)<<f<<endl;cout<<setprecision(2)<<f<<en
dl;cout<<setprecision(3)<<f<<endl;cout<<setprecision(4)<<f<<endl;}22.432.4292.42862022/11/24湖南科技学院数学与计算科学系-101-2.5I/O流控制3、I/O流的格式控制如何控制指数表示
的小数个数?setiosflags(ios::scientific)控制符使用指数方式显示浮点数,将setprecision(intn)和setiosflags(ios::scientific)结合,可以使用setprecision(intn)控制指
数表示法的小数位数。#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){floatf=17/7.0;cout<<setiosflags(ios::scientifi
c);cout<<setprecision(2)<<f<<endl;cout<<setprecision(3)<<f<<endl;cout<<setprecision(4)<<f<<endl;}2.43e+0002.429e+0002.4
286e+000总结1、基本数据类型有哪些?2、如何定义和使用变量和常量?变量和常量的异同?3、运算符的优先级?4、数据类型如和转化?5、I/O流的使用技巧