C++程序设计:第二章 C++基础知识_第1页
C++程序设计:第二章 C++基础知识_第2页
C++程序设计:第二章 C++基础知识_第3页
C++程序设计:第二章 C++基础知识_第4页
C++程序设计:第二章 C++基础知识_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

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

文档简介

第一个C++源程序#include<iostream.h>voidmain(){ cout<<"hello,world\n"; }包含头文件主函数的函数头函数后跟的一对{}C++输出语句第二章C++基础知识2.1C++的词法单位2.4运算符、表达式2.3常量和变量2.2C++中的数据类型2.6简单输入、输出2.5语句2.1C++的词法单位2.1.1C++的字符集

2.1.2关键字

2.1.3标识符(ID,identifier)2.1.4标点符号

26个小写字母

abcdefghijklmnopqrstuvwxyz26个大写字母

ABCDEFGHIJKLMNOPQRSTUVWXYZ10个阿拉伯数字

0123456789

其他符号

+-*/=,._:;?\"'~|!#%&()[]{}^<>空格C++语言中,构造基本词法单位的特定字符:关键字标识符常量运算符标点符号2.1.1C++的字符集2.1.1C++的字符集#include<iostream.h>intmax(inti,intj){

if(i>=j)returni;

elsereturnj;}intmain(void){ cout<<“输入i,j:”;

inti,j; cin>>i>>j; cout<<“最大数是:”<<max(i,j)<<‘\n’;

return0;}关键字标识符常量运算符标点符号关键字(keyword)又称保留字。是由系统定义的具有特定含义的英文单词。标准C++(ISO14882)定义了74个关键字,具体的C++编译器还会做一些增删。2.1.2C++的关键字关键字不能另做他用!表2.1C++的常用关键字及其分类

2.1.2C++的关键字数据类型说明符与修饰符

boolcharwchar_tclass

constdoubleenumfloatintlongshortsignedstructunionunsignedvoidvolatile存储类型说明符autoexterninlineregisterstatic访问说明符friendprivateprotectedpublic语句breakcasecatchcontinue

defaultdoelseforgoto

ifreturnswitchthrowtrywhile运算符及逻辑值deletefalsenewsizeoftrue其他说明符asmexplicitnamespace

opetator

template

thistypedeftypenameusing

virtual关键字全部小写!标识符(Identifier,ID)是程序员定义的“单词”,用来给变量、常量、数据类型、函数等命名。2.1C++的词法单位2.1.3C++的标识符合法标识符由字母或下划线开始的由字母、数字、下划线组成的字符序列VisualC++中有效长度为1-247个字符区分大小写!不能和关键字重名!(1)使用有意义的英文单词或拼音序列作标识符,以提高可读性;(2)可大、小写混用,以提高可读性;(3)不要用下划线或双下划线打头,以免与系统定义的关键字冲突。2.1C++的词法单位建议:2.1.3C++的标识符例:判断下面哪些是合法的标识符:

MyFileSalary94amountvoid94SalarySalary94$amountf3.5Num_of_Student2.1C++的词法单位2.1.3C++的标识符标点符号包括#、()、{}、,、:、;、"、'等。标点符号的作用:有一定的语法意义。如字符和字符串常量分别用‘’和“”引起来。对语法符号起分隔作用。如;等2.1.4C++的标点符号2.1C++的词法单位2.1.4分隔符编写C++程序时,每个词法单位必须使用分隔符将它们分隔开。可用作C++分隔符的有:运算符、标点符号、空格符、Tab符、回车符。2.1C++的词法单位#include<iostream.h>voidmain(void){floata,b,c,max;cin>>a,b,c;if(a>b)max=a;elsemax=b;if(c>max)max=c;cout<<max;}cin>>a>>b>>c;从键盘上输入:238计算机处理的对象是数据,而数据是以某种特定的形式转换成二进制码存放在内存中的。例如,整数在内存中采用原码或补码表示、实数采用浮点数表示方式。对于整数10和实数10.0在内存中的数据是不一样的。即使同样表示整数,对于(FFFFFFFF)16若表示为有符号的整数则为-1,若表示为无符号的整数则为232-1。2.2C++的数据类型2.2C++的数据类型图1C++的数据类型单精度型float双精度型doubleC++的数据类型基本数据类型非基本数据类型数组type[]指针type*引用type&类class结构struct联合union枚举enum整型int字符型char布尔型bool无值型void实型字符型数据本质上也是整数,即ASCII码。记住‘A’、‘a’的ASCII码分别为65和97。整型数据的范围不是很大,要防止溢出!(>>下一页)布尔型即逻辑型,false对应于0,true对应于1或非0。函数无返回值时,要用无值型进行说明

(>>下一页)若干注意点:2.2C++的数据类型类型名称占用字节数取值范围bool布尔型

1true,false(signed)char有符号字符型1-128127unsigedchar无符号字符型10255(signed)short(int)有符号短整型2-3276832767unsignedshort(int)无符号短整型2065535(signed)int(signed)有符号整型4-231

(231-1)unsigned(int)无符号整型40(232-1)(signed)long(int)有符号长整型4-231

(231-1)unsignedlong(int)无符号长整型40(232-1)float实型4-1038

1038double双精度型8-10308

10308longdouble长双精度型8-10308

10308void无值型0无值表2.2VisualC++中所有基本数据类型2.3.1变量2.3.2

文字常量2.3.3

常变量在程序中,常量和变量是用来表示数据的;常量又分为文字常量(literalconstant)、

常变量(signedconstant);2.3变量和常量a=50b=2sum=72a=16b=23sum=592.3变量和常量2.3.1变量sum=a+b+20a、b、sum都是变量(逻辑意义上)物理意义上呢??????????????????????????????????????????????????????????????????????????????????????????????????????????????????2.3变量和常量2.3.1变量?????????????????????????????????????????????????????????????????????????????????????????????????????????????????2.3变量和常量2.3.1变量absum变量和内存单元地址之间存在一个映射关系!?????????????????????????????????????????????????0000000000110010????????????????????????????????????????????????0000000001001000????????????????00000000000000102.3变量和常量2.3.1变量absumsum=a+b+20a=50b=2sum=72?????????????????????????????????????????????????0000000000010000????????????????????????????????????????????????0000000000111011????????????????00000000000101112.3变量和常量2.3.1变量absumsum=a+b+20a=16b=23sum=59?????????????????????????????????????????????????????????????????????????????????????????????????????????????????2.3变量和常量2.3.1变量使用前分配?用到的时候分配?

何时分配?1变量说明

在C++中,变量说明的一般格式为:《存储类型》数据类型变量名1《,变量名2,,变量名n》;

inti,j,k;

//说明三个整型变量i,j,kfloatx,y,z;

//说明三个实型变量x,y,zcharc1,c2;

//说明两个字符型变量c1,c2doubledx;

//说明一个双精度型变量dx

unsignedshorta,b,sum;

//说明三个无符号整型变量a,b,sum2.3变量和常量2.3.1变量“《》”括起来的部分是可选的;省略号“…”表示可以多次重复。任何变量都必须先说明后使用,好处是:(1)便于编译程序为变量分配空间,(2)便于编译时进行语法检查;变量有类型之分,如整形变量、字符变量等;变量必须用标识符进行标识,称为变量名;变量使用第一步:给变量赋初始值(变量初始化);若干注意点:建议:2.3变量和常量2.3.1变量1变量说明2变量初始化——变量说明时直接赋初值inta=3,b=4,c=5; floatx=3.0;2.3变量和常量2.3.1变量变量初始化可以避免引用到随机变量。3用赋值语句赋初值。例如:

floatx,e; x=3.5; e=2.71828;

引用是一种非常特殊的数据类型,它不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名,也就是C++系统不为引用类型变量分配内存空间。引用定义的格式为:类型&引用变量名=已定义过的变量名;1、引用类型变量的说明及使用2.3.2变量与引用2.3变量和常量例如:doublenumber;double&newnum=number;

number称为引用newnum的关联变量。如在程序中修改了newnum也就是修改了number,两位一体。别名已定义过的变量名引用的说明符。2.3.2变量与引用2.3变量和常量#include<iostream.h>voidmain(){ inti=10; int&refi=i; refi=20; cout<<"i="<<i<<'\n';}refi是变量i的引用1.整型常量

4.字符串常量3.字符型常量2.实型常量常量:取值在程序的执行过程中始终保持不变的量。常量存储在程序区,而非数据区;文字常量:指程序中直接给出的量;2.3变量和常量2.3.3文字常量常量又分为文字常量(literalconstant)、

常变量(signedconstant);十进制表示法八进制表示法十六进制表示法其他表示整型常量,可以有多种表示方法:1整型常量2.3变量和常量2.3.2文字常量与我们熟悉的书写方式相同。如15-24以0开始,由数字07组成,用来表示一个八进制数。如:012 //八进制数12,即十进制数10-0655 //八进制数-655,即十进制数-429十进制表示法1整型常量2.3变量和常量2.3.2文字常量八进制表示法零十六进制表示法1整型常量2.3变量和常量2.3.2文字常量以0X(大小写均可)开始,由数字09和字母AF(大小写均可)组成,用来表示一个十六进制数。如:0x32A//十六进制数32A,即十进制数810-0x2fe0//十六进制数-2fe0,即十进制数-12256其他表示整型常量还可以表示长整数和无符号整数。零(1)一般形式与平时书写形式相同,由数字09和小数点组成。例如:0.23-125.760.0.46-35.(2)指数形式(也称为科学表示法)表示为尾数乘以10的次方形式,由尾数、E(或e)和阶数组成。实数2实型常量2.3变量和常量2.3.2文字常量包含小数点含有10的幂必须有小数点!必须有E(或e),尾数必须有数字,指数(阶)必须是整数!

判断下列实数表示是否合法?2实型常量2.3变量和常量2.3.2文字常量123E12-.34e-2

E41.43E3.5

-.0e-2

0.E4-125.76.00.00.0字符可显示的字符不可显示的字符特殊意义的字符单引号引起来的单个字符;保存的是字符的ASCII码‘@'‘a'回车符换行符制表符响铃退格反斜杠单引号双引号3字符型常量2.3变量和常量2.3.2文字常量4转义字符转义序列就是用转义符“\”开始,后跟一个字符或一个整型常量(字符的ASCII码值)的方法来表示一个字符。若转义符后边是一个整型常量,则必须是一个八进制或以x为前缀的十六进制数。当转义符后跟八进制数时,前缀0可以省略。如'\021'、'\x78'、'\0'、'\56'等都是合法的字符型常量。转义符后面的字符必须小写,大写只能表示其自身。如果转义字符后面是大写字母,则忽略反斜杠,作为一个一般的符号处理,即标识大写字母自身。例如:'\E',则认为就是'E'。

2.3变量和常量2.3.2文字常量转义字符名称功能或用途\a响铃(报警)输出\b退格(Backspce键)退回一个字符\f换页输出(用于打印机)\n换行输出\r回车输出\t水平制表符(Tab键)输出\v纵向制表符输出\\反斜线用于输出或文件的路径名\'单引号输出\"双引号输出\0空字符标识字符串结束''a''——字符串常量占两个字节,存放′a′和′\0′′a′——字符型常量占一个字节,存放′a′用双引号引起来的若干个字符称为字符串常量。例如:″IamaChinese.″,″123″

5字符串常量2.3变量和常量2.3.2文字常量N>=1

对于常量a,是字符串常量还是字符型常量?单引号作为字符串中一个字符时,可直接按书写形式写出,也可用转义序列表示;双引号作为字符串中一个字符时,只能用转义序列表示。″\″″

″′″

″\′″

aa\0注意:

′e′和′E′是不同的字符常量,它们代表不同的ASCII码值。′4′和整型数4是不同的值,′4′的ASCII码值为52。′0′和′\0′是两个不同的字符。′0′的ASCII码值为48。而′\0′的ASCII码值为0。2.3变量和常量2.3.3常变量#include<iostream.h>2.3变量和常量2.3.3常变量用常量说明符const给文字常量起个名字(标识符),这个标识符就称为:标识符常量

也称为:常变量constfloatPI=3.1415926constfloatPI=3.1416常变量必须先说明后使用;常变量初始化之后,不允许再被赋值;常变量必须也只能在说明时进行初始化;若干注意点:2.3变量和常量2.3.3常变量常变量存储在数据区,并且可以按地址访问。编译时系统对常变量进行类型检查;2.4运算符和表达式本节主要内容:2.4.1运算符、优先级、结合性2.4.3语句2.4.2基本运算符及其表达式2.4.4算术类型转换和赋值类型转换在C++中对常量或变量进行运算或处理的符号称为运算符,参与运算的对象称为操作数。2.4运算符和表达式2.4.1

运算符、优先级、结合性输入:2+2*3

与数学中的先乘除、后加减一样,众多的C++运算符也存在优先级问题。当表达式中需要有多种运算符时,必须清楚谁先谁后的运算次序。1、优先级2.4运算符和表达式2.4.1运算符、优先级、结合性表2.3C++的运算符及其优先级和结合性………………左→右+,-6右→左=16………………左→右*,/5结合性用法功能运算符优先级谁更优先?什么含义?2.左、右结合问题

计算机在执行诸如5+6这样的操作运算时,它必须包括这样的过程:(1)先取一个数,(2)再取另一个数,(3)然后将两数相加。

现在的问题是,它先取哪个数呢?这就是结合性问题。

在C++中,执行诸如5+6这样的操作,是按从左到右的顺序取数,即先取5,再取6,然后相加。从左到右的顺序在本书中称为右结合

那么,计算机怎么知道这个顺序呢?这就是加号+运算符这个指令在起作用,它指示计算机按照它规定的顺序操作。所谓结合性,实际上就是运算符的结合性。显然+属于右结合运算符。

有没有从右到左的运算符呢?最常见的就是赋值运算符=。例如中的=,它指令操作系统,将它右边运算所得结果送入(或称复制等)左边的变量a的存储单元。由于这个顺序是从右到左,因此本书中称为左结合。a=5+6

又因为要把右边的结果送到左边,这就要求,在送到左边之前右边的最终结果必须是一个值。因此,=等号的优先级必然低于加号+。

当表达式中存在两个或两个以上优先级相同的运算符时,谁先谁后呢?对于右结合,其顺序是从左到右。例如

3/66结果是0。为什么?首先,C++规定,同类型的数据运算,所得结果的类型不变。所以,两个整数运算的结果仍为整数。2.4运算符和表达式2.4.1运算符、优先级、结合性运算符单目(一元)运算符双目(二元)运算符三目(三元)运算符-ab!ab-ab*ab?c:ab/c++…………3.运算符问题2.4运算符和表达式2.4.2

基本运算符及其表达式算术运算符赋值运算符自增(减)运算符逻辑运算符位运算符逗号运算符基本运算符sizeof()运算符

……+(加)、-(减)、*(乘)、/(除)、%(求余)

求余运算的两个操作数必须都是整数!

程序员需自己检查算术运算数据溢出问题2.4运算符和表达式算术运算符赋值运算符基本运算符

……=左值=右值可以访问可以修改一般为变量名可以为常量可以为变量可以为表达式定能取确定值2.4.2基本运算符及其表达式3.1415926=pix+y=zconstintN=30;N=40;判断不是等号,具有方向性!例a=a+12.4运算符和表达式算术运算符赋值运算符基本运算符

……=左值=右值2.4.2基本运算符及其表达式赋值表达式本身也有值a=1c=(a=1)+(b=2)例b=2c=#+#复合赋值运算符例a+=3a*=b-ca-=(b+6)a=a+3a=a*(b-c)a=a-(b+6)2.4运算符和表达式算术运算符赋值运算符自增(减)运算符基本运算符

……自增++自减--前增后增前减后减例a=a+1a++++a?2.4.2基本运算符及其表达式

++作为C++的一个自增型单目运算符。所谓自增,是指每执行一次运算时,++运算符都使它惟一的运算对象自动增加1。相应地,--则是每次运算都自动减少1的自减运算符。两者都是从右到左的左结合单目运算符。例如,执行自增、自减运算符

由此可知:(一)、++运算符的运算对象必须是变量,不能是常数。例如,以下运算是错误的。++x;时,可把运算过程分成三个步骤:1.++运算符先访问它右边变量x中,并取x的值,2.按++运算规律,将变量x中的值加1,即x+13.再将x+1的结果赋给变量x,即x=x+1

使变量x的值被刷新。++5;因为按第三步骤,要将运算结果再存入运算对象,而5是个确定的常数,当然不具有能存放数据的功能,

(二)、在执行这个表达式时,变量x中应有初始值。++运算符是先将这个初始值与1相加,再将结果存入运算对象。

(三)、++运算符也允许运算对象出现在它的左边,例如int

s=3,k=4;++s;k++;结果是s的值为4,k的值为5。int

s=3,k;k=s++;(四)例如:int

s=3,k;k=++s;

那么k=s++如何执行?由于++的运算顺序是从右到左,但它的右边没有变量可以访问,违反了它的结合性,故无法运算。两个表达式中s和k的值各是多少呢?

此时,表达式就执行下一级运算,即,=运算。由于=也是左结合,因此,运算时先访问s,并取其s的值复制到k。因为s的值未变,所以k的值为3。

最后当要结束该表达式时,++运算符则按右结合规则:1、访问变量s,2、将s的值加1,3、再将结果赋给s,使s变为4。?

类似地,--运算符具有同样的性质。

由此可知,当运算对象出现在++的右边时,它是按左结合规则运算,并且其优先级符合表中的次序,比较高;当运算对象出现在++的左边时,它却按右结合规则运算,优先级则比=还低。应用时请务必注意这种特点。2.4运算符和表达式算术运算符赋值运算符自增(减)运算符逻辑运算符基本运算符

……关系运算符逻辑运算符2.4.2基本运算符及其表达式>>=<==

=<!=!(非)||&&(与)(或)表达式的计算结果为真或假2.4运算符和表达式算术运算符赋值运算符自增(减)运算符逻辑运算符基本运算符

……2.4.2基本运算符及其表达式整数也可参与逻辑运算。逻辑运算的结果可以作为一个整数参与其他运算。

逻辑型整型整型真假真假非00102.4运算符和表达式算术运算符赋值运算符自增(减)运算符逻辑运算符基本运算符

……2.4.2基本运算符及其表达式优先级:<、<=、>、>===、!=a=b==c<d;b=c>b<d;按优先级与结合性,其求值顺序等于:a=(b==(c<d));b=((c>b)<d);右结合a<b<c表示什么??2.4运算符和表达式算术运算符赋值运算符自增(减)运算符逻辑运算符基本运算符

……2.4.2基本运算符及其表达式!算术运算&&、||21&&0//逻辑与,21与0,结果为假:021||0//逻辑或,21或0,结果为真:1!21//逻辑非,21的非,结果为假:0result=(21||0

)+(21&&0

)+(!21)result=21||0+21&&0+!21关系运算result=21||(0+21)&&(0+(!21))2.4运算符和表达式算术运算符赋值运算符自增(减)运算符逻辑运算符位运算符基本运算符

……2.4.2基本运算符及其表达式(1)按位取反运算符“~”(2)左移运算符“<<”(3)右移运算符“>>”(4)按位与运算符“&”(5)按位或运算符“|”(6)按位异或运算符“^”c++语言提供字位运算,它对操作数的各个位进行操作。(1)按位取反运算符“~”例如,整数a的值为10011011,则的值为01100100。(2)左移运算符“<<”运算一般格式为:a<<n

2.4运算符和表达式2.4.2基本运算符及其表达式16<<2100001000000(3)右移运算符“>>”一般格式:a>>n以上三种运算不影响数据本身的值,而是只产生一个中间量,这个中间量被引用后即不再存在。

-32>>2111000001110000011a01001101b00001111

&00001101|01001111^01000010该运算符可用来将整数的某些位置1。上例高四位不变,低四位全1。该运算符可用来将整数的某些位清0。上例低四位不变,高四位全0。该运算符可用来将整数的某些位取反,或将整型变量的值置0(将整型变量与自身按位异或)。上例低四位取反,高四位不变。(4)按位与“&”、按位或“|”、按位异或“^”、2.4运算符和表达式算术运算符赋值运算符自增(减)运算符逻辑运算符位运算符逗号运算符基本运算符

……2.4.2基本运算符及其表达式

逗号有些情况下作为分隔符,但是也是一个运算符!一般格式为:表达式1,表达式2,……,表达式ninta=1,b=2,c=3;从左到右依次求出;result=(a=a+1,b=b*c,c=a+b+c);最后一个表达式的值作为整个表达式的值;2.4运算符和表达式算术运算符赋值运算符自增(减)运算符逻辑运算符位运算符逗号运算符基本运算符sizeof()运算符

……2.4.2基本运算符及其表达式sizeof(数据类型)sizeof(变量名)同一数据类型在不同计算机上可能占用不同的字节数;用sizeof()可以得知实际占用的字节数;为了实现程序的可移植性和通用性。用于计算字节数2.4运算符和表达式2.4.4

算术类型转换和赋值类型转换5/4//结果为1,整数5/4.0//结果为1.25,实数解释:对于运算符“/”,当两个操作数均为整数时,所执行的运算为整除,结果为整数。整除运算结果舍去小数取整。解释:只要有一个操作数是实数,则两个操作数均转换为double型,“/”成为普通的除,结果是实数。2.4运算符和表达式2.4.4算术类型转换和赋值类型转换charshortintlongunsignedcharunsignedshortunsignedintunsignedlongfloatdoublelongdouble1混合运算的类型转换规则:

占有内存空间小的数据同占用内存空间大的数据进行运算时,将占用内存小的数据转换为占用内存空间大的数据类型。‘a’+1;2.4运算符和表达式2.4.4算术类型转换和赋值类型转换2赋值的类型转换规则:整数赋给实型变量时,将整数转换成实数再赋值。实型数赋给整型变量时,仅取整数部分赋值。字符数据赋给整型变量时,将字符转换为整型.当赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时系统将自动进行类型转换,原则是将赋值运算符右边的数据类型转换成左边的类型。inta=3.1;floatb=3;charc=‘a’;ints1=c;2.4运算符和表达式2.4.4算术类型转换和赋值类型转换3强制类型转换类型转换自动强制一般格式为:(type)表达式floatx;x=7.0/5;x=7/5.0;x=7.0/5.0inta=7,b=5;floatx;inta=7,b=5;floatx;x=(float)a/b;x=a/(float)b;x=(float)a/(float)b;2.4运算符和表达式2.4.4算术类型转换和赋值类型转换强制类型转换不改变表达式本身的值的类型;强制类型的优先级较高,为第3级,因而运算中通常只对紧随其后的表达式起作用。强制类型转换产生一个临时变量,用于暂存转换后的值,引用后立即自动释放;若干注意点:2.4运算符和表达式2.4.4

求值次序与副作用(及求值优化)已知:

inta=10,b=20,c=30;doublex=1.8,y=2.4;a<b&&x>y||a<b-!c按优先级与结合性,其求值顺序等同于:(a<b)&&(x>y)||(a<(b-(!c)))t1=1t2=0-&&t3=0t5=b<t6=1||

得整个表达式的值为:①②③⑥t4=0④⑤⑦1在求逻辑表达式值的过程中,一旦表达式的值能够确定,就不再逐步进行下面的运算。称为“求值优化”。为防止这种情况,应尽可能避免在逻辑表达式中出现赋值或自增、自减等运算。逻辑运算的优化虽然节省了运行时间,但有时也会造成意想不到的问题。2.4运算符和表达式2.4.4求值次序与副作用及求值优化inta=1,b=1,c=1;d=--a&&++b||c++;求:a,b,c,d的值例如何解决?若干概念:2.4运算符和表达式2.4.4求值次序与副作用及求值优化2.5

语句表达式语句空语句复合语句流程控制语句a=1,b=2,c=3a=a+1;;a=1,b=2,c=3;;a=a+1;{a=1,b=2,c=3;;a=a+1;}{a=1,b=2,c=3;

;a=a+1;}详见下章声明语句inta,b,c;floatm;2.9简单的输入/输出本节主要内容:2.9.1C++输入/输出简介2.9.2数据的输入/输出2.9.3输入/输出控制

程序在执行期间,接受外部信息的操作称为程序的输入,向外部发送信息的操作则称为程序的输出。与其它高级语言不同,C++没有专门的输入/输出语句,而是通过输入/输出流来实现。

其中#include是包含文件的标志,而iostream.h表示被包含的文件。而.h表示文件属性为头文件head。使用输入/输出流时,必须在程序的开头增加一行

#include<iostream.h>

1、输入流cin

用于接受外部信息,其一般格式为

cin>>变量名1>>变量名2>>...>>变量名n;

其中>>是提取运算符,程序执行到输入指令时将暂停,等待你从键盘上键入相应的数据。然后由>>将它提取到变量单元。一个>>后面只能跟一个变量,但可重复使用。例如,设有以下语句2.9.1C++输入/输出简介#include<iostream>usingnamespacestd;

程序处于暂停状态,等待你从键盘上输入相应的数据。假设敲入如下数据后,再敲一个回车键

3577<回车>那么,两个数据就被依次提取到对应的单元,即

...

inti,j;

floatx,y;cin>>i>>j;cin>>x>>y;...

此时遇到提取符>>,

执行前,系统首先进行编译,并分配4个单元,即ijxy

编译通过后,即可执行,首先执行3577

再执行下一个语句,

又处于暂停状态。假设敲入如下数据后,再敲一个回车键

3.140.2<回车>则:

...

inti,j;

floatx,y;cin>>i>>j;cin>>x>>y;...ijxy3577

再执行下一个语句,3.140.2

虽然输入流比较复杂,但只要清楚上述操作过程,其它问题即可迎刃而解2、输出流cout

输出流的作用是将程序中的信息向外部发送。外部的内容很广泛,象多媒体等就是内容非常丰富的外部。在此,我们先从基础开始,将外部看作是显示器。其一般格式为

cout<<表达式1<<表达式2<<...<<表达式n;其中<<称为插入运算符,通过它将表达式的内容(值)输出到显示器当前光标的位置。例如

...inti,j;floatx,y;cin>>i>>j;cin>>x>>y;cout<<“输出变量的值”<<‘\n’;cout<<“i=”<<i<<“j=”<<j<<‘\n’;cout<<“x=”<<x<<“y=”<<y<<‘\n’;...其中,加双引号的红字体是字符串常数,加单引号的蓝字体是转义字符,表示当前输出结束后光标换一行。等效字符为endl显示器

...inti,j;floatx,y;cin>>i>>j;cin>>x>>y;cout<<“输出变量的值”<<‘\n’;cout<<“i=”<<i<<“j=”<<j<<‘\n’;cout<<“x=”<<x<<“y=”<<y<<‘\n’;...当执行到语句ijxy35773.140.2字符串常数照原样输出输出变量的值字符串常数照原样输出,变量则提取单元中的值。显示器

...inti,j;floatx,y;cin>>i>>j;cin>>x>>y;cout<<“输出变量的值”<<‘\n’;cout<<“i=”<<i<<“j=”<<j<<‘\n’;cout<<“x=”<<x<<“y=”<<y<<‘\n’;...ijxy35773.140.2输出变量的值i=35j=77x=3.14y=0.2

当执行到语句

当执行到语句情况与上一行一样

如果不加‘\n’或者endl,那么,以上所有内容都在一行显示。2.9.2

数据的输入/输出字符字符串整数实数2.9.2数据的输入/输出(1)cin

charc1,c2,c3; cin>>c1; //A

cin>>c2>>c3; 1、字符的输入程序执行到A行时,等待用户输入数据。cin自动跳过输入的空白字符(空格/制表/回车/等)Abc<CR>Abc<CR>Ab<CR>c<CR>Abc<CR>c1=‘A’c2=‘b’c3=‘c’怎么才能输入空格?(2)cin.get()

charc1,c2,c3; cin.get(c1);//B cin.get(c2); cin.get(c3);Abc<CR>Abc<CR>Ab<CR>c<CR>Abc<CR>c1=‘A’c2=‘’c3=‘b’c1=‘A’c2=‘b’c3=‘c’c1=‘A’c2=‘b’c3=‘’c1=‘A’c2=‘b’c3=回车键cin.get()把从键盘上输入的所有字符,包括空格和回车,都作为输入字符赋给字符变量2.9.2数据的输入/输出c1=‘A’;c2=‘b’;c3=‘c’;//输出时字符之间是无间隔的,如果想让字符间有间隔,必须输出间隔符

要求屏幕上输出:A bcOkcout<<c1<<‘\t’<<

c2<<‘\n’;cout<<c3<<endl;cout<<‘O’<<‘k’<<endl;怎么才能输出空格?2.9.2数据的输入/输出2、字符的输出字符串输入:用函数getline()getline()以用户按下回车键作为结束,在此之前的所有输入都放入字符数组中:2.9.2数据的输入/输出3、字符串的输入charcity[11];//定义数组,该数组的元素个数为11cin.getline(city,10);已经定义的字符数组名参数n,实际读入n-1字符Nanjing<CR>Southeast<CR>SoutheastUniversity<CR>2.9.2数据的输入/输出4.字符串的输出字符串输出:coutcharc1,c2,c3;cout<<”Inputc1,c2,c3:”<<endl;cin>>c1>>c2>>c3; cout<<”c1is”<<c1<<′\t′<<”c2is”<<c2<<′\t′<<”c3is”<<c3<<endl;

输出结果为:Inputc1,c2,c3:abc<CR>c1isa c2isb c3isc双引号中的的字符串常量照原样输出inti,j;floatx,y;cout<<“Inputi,j,x,y:”<<endl;cin>>i>>j; cin>>x>>y; cout<<“i=”<<i

<<“j=”<<j<<endl;cout<<“x+y=”<<x+y<<endl;5.十进制数据的输入、输出2.9.2数据的输入/输出输入:10204.58.6<CR>输出时各数据间是无间隔的。则程序输出:i=10j=20x+y=13.1因此应当有意输出一些间隔符。<<‘\t’如果要求按八进制或十六进制输入输出,在cin或cout中必须指明相应的数据形式,oct为八进制,hex为十六进制,dec为十进制。例如:#include<iostream.h>voidmain(){inti=2,j=10,k=30;floatx=3.14,y=100;cout<<“i=”<<hex<<i<<‘\t’<<“j=“<<j<<endl;cout.setf(ios::scientific,ios::floatfield);cout<<oct<<k;cout<<x<<‘\t’<<y<<endl; }2.9.3

输入输出的格式控制1、各种进制数据的输出输出结果为:i=2j=a36 3.14000e+000

1.000000+002

cout.setf(ios::fixed,ios::floatfield);2.9.3

输入输出的格式控制2、输出格式控制(1)为了使数据间隔开,还可以用C++提供的函数setw()指定输出数据项的宽度。例如:……inti=2,j=3;floatx=2.6,y=1.8;cout<<setw(6)<<i<<setw(10)<<j<<endl;cout<<setw(10)<<i*j<<endl;cout<<setw(8)<<x<<setw(8)<<y<<endl;……输出结果为:

2362.61.8#include<iomanip>改成程序输出(2)cout可使用setprecision()指定输出实数的有效位数。例如:

floatpi=3.1415926; cout<<pi<<'\n'; cout<<setprecision(3)<<pi<<'\n'; cout<<setprecision(5)<<pi<<'\n';输出结果为:3.141593.143.1416前面我们学习了:C++的词法单位C++的数据类型变量说明、变量赋值、变量初始化常量(整型、实型、字符型、字符串)、常变量复习复习一C++的词法单位C++的字符集

关键字标识符(ID,identifier)标点符号#、()、{}、,、:、;、

"、

'等。由字母或下划线开始的由字母、数字、下划线组成的字符序列;是由系统定义的具有特定含

温馨提示

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

评论

0/150

提交评论