A基本数据运算与输入输出ppt_第1页
A基本数据运算与输入输出ppt_第2页
A基本数据运算与输入输出ppt_第3页
A基本数据运算与输入输出ppt_第4页
A基本数据运算与输入输出ppt_第5页
已阅读5页,还剩121页未读 继续免费阅读

下载本文档

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

文档简介

第2章基本数据运算与输入输出(A)第2章基本数据运算与输入输出(A)主要内容如何用计算机计算圆面积(2.1-2.4)标识符(2.5)基本数据类型(2.9)变量定义(2.6)常量(2.8,2.9.1)I/O流控制(3.12)小结及作业2C++程序设计主要内容如何用计算机计算圆面积(2.1-2.4)2C++程序2.1如何用计算机计算圆面积问题描述计算机从键盘读入圆的半径,输出其面积程序将使用变量保存半径和面积,并用一个表达式计算面积解决思路读入半径利用圆面积公式计算面积输出面积3C++程序设计2.1如何用计算机计算圆面积问题描述3C++程序设计2.1如何用计算机计算圆面积程序主函数框架程序清单intmain(){//Step1:Readinradius

//Step2:Computearea

//Step3:Displaythearea}#include<iostream>usingnamespacestd;intmain(){//Step1:Readinradius

doubleradius;

cout

<<"Enteraradius:";

cin>>radius;//Step2:Computearea

doublearea=radius*radius*3.14159;//Step3:Displaythearea

cout

<<"Theareais"<<area<<

endl;

return0;}consolein/out4C++程序设计2.1如何用计算机计算圆面积程序主函数框架intmain2.2标识符字符集字符是指计算机中使用的字母、数字、单词和符号用于构造有意义语句的一组字符,这也是任何一种语言的特点C++程序的字符集26个大、小写字母:a~z,A~Z10数字:0~9其他符号:+-*/%&|~(){}<>^"',.?:;\5C++程序设计2.2标识符字符集5C++程序设计2.2标识符标识符由字符集元素组成的一串字符,为变量、常量及函数等程序实体命名分为系统预定义标识符(如预编译指令)和用户自定义标识符(如变量名,函数名)标志符命名规则由字母、下划线、数字组成,且第一个符号不能是数字中间不能有空格C++是大小写敏感,即大写和小写字母是不同的最好使用英文单词或其组合,切忌使用汉字或汉语拼音不能使用保留字作为标志符(参见附录A)采用见名思义的原则:sum、name、sex,不要太长,一般以不超过31个字符为宜6C++程序设计2.2标识符标识符6C++程序设计2.2标识符保留字又称关键字(Keyword),是预先定义好的标识符,对C++编译程序有特殊含义在程序中用到的其他名字(标识符)不能与C++的关键字相同关键字也不能重新定义不同开发环境如VC、BC会对保留字有不同扩充C/C++保留字参见教材附录AC++关键字(P492)7C++程序设计2.2标识符保留字7C++程序设计2.3基本数据类型中学阶段数学课学习的数据类型及运算实数(R)、复数(C)355.5,76.8有序实数对:2+3i整数(I)、小数35,-683.5,0.8自然数(N),正整数(Z)0,1,2,3,…有理数、无理数正数、负数常数:π,e自然数整数小数实数复数数数正数负数数有理数无理数8C++程序设计2.3基本数据类型中学阶段数学课学习的数据类型及运算自然数2.3基本数据类型C++语言中的数据类型整型int字符型单字符型char宽字符型wchar_t实型单精度型float双精度型double逻辑型bool数据类型基本数据类型非基本数据类型数组type[]指针type*空类型void结构struct共用体union枚举enum类class9C++程序设计2.3基本数据类型C++语言中的数据类型整型int字符型2.3基本数据类型C++语言中数据为什么要区分类型?不同类型的数据代表不同的数据表示形式合法的取值范围可参与的运算种类占用内存空间大小对程序当中所用到的所有数据都必须指定其数据类型从基本数据类型到抽象数据类型无数据类型void基本数据类型构造数据类型抽象数据类型10C++程序设计2.3基本数据类型C++语言中数据为什么要区分类型?10C2.3基本数据类型基本数据类型:系统事先规定了的数据类型(内置类型)int,整数,在目前绝大多数机器上占4个字节float,单精度浮点数,一般是4个字节长,VC内缺省显示为6位有效数字double,双精度浮点数,一般是8个字节长,VC内缺省显示为14位有效数字char字符,一般是1个字节长用来表示256个ASCII字符,或者0~255的整数注意

数据类型标识符为小写字母int大小范围与机器有关11C++程序设计2.3基本数据类型基本数据类型:系统事先规定了的数据类型(2.3基本数据类型基本数据类型修饰符:short、long、signed、unsignedshortshortint,短整数,一般2个字节长,通常简写为short

long

longint,长整数,VC中一般是4个字节长,通常简写为long

longdouble,长双精度(高精度)浮点数,一般是10个字节长。

signed用来修饰char、int、short和long,说明他们是有符号的整数(正整数、0和负整数),一般缺省都是有符号的,所以这个修饰符通常省略

unsigned用来修饰char、int、short和long,说明他们是无符号的整数(正整数和0)12C++程序设计2.3基本数据类型基本数据类型修饰符:short、long一、无符号的整型数据大于或等于零的正整数无符号的短整型

分类无符号的基本整型无符号的长整型

unsignedshort[int]

标识符

unsigned[int]

unsignedlong[int]

2

对应内存空间的大小4

40~216-1

取值范围同上0~232-1注意1、[]的含义2、标识符为小写字母3、int与机器有关2.3基本数据类型13C++程序设计一、无符号的整型数据无符号的短整型分类无二、有符号的整型数据包括负整数、零、正整数有符号的短整型

分类有符号的基本整型有符号的长整型[signed]short[int]

标识符

[signed]int

[signed]long[int]

2

对应内存空间的大小4

4取值范围-215~2152.3基本数据类型-231~231同上有符号整数在计算机内存中是以补码形式存储14C++程序设计二、有符号的整型数据有符号的短整型分类有符号1.求整数的补码规则例如:(10)补=(-10)补=0000101011110110-10取绝对值10000010101111010111110110用二进制表示各位取反末位加12.由补码推出原码-10加负号10000010101111010111110110用十进制表示各位取反末位减12.3基本数据类型下面以一个字节存储有符号整数为例分析其取值范围15C++程序设计1.求整数的补码规则例如:(10)补=000010补码00000001————110000000————-12811111111————-101111111————12700000000————010000001————-127原码11111110————-2取值范围-128~127-27~27-12.3基本数据类型正数负数16C++程序设计补码00000001————110000000———三、实型:一律作为有符号的数据使用

2.3基本数据类型分类标志符字节数缺省有效精度单精度实数float46位双精度实数double814位实数作为有符号的数据使用,可表示为小数形式和指数形式,但在计算机内部都用浮点方式来实现存储定点小数:小数点位置固定,位于符号位和第一个数值位之间,如-0.34,表示的是纯小数;浮点数:小数点的位置是可以浮动的数,如浮点数通用表示是将实数分为阶码和尾数两部分:S为尾数(正负均可),一般规定用纯小数形式,r为基数,对二进制而言,r=2,j为阶码(正负均可),但必须是整数17C++程序设计三、实型:一律作为有符号的数据使用2.3基本数据类型分类2.3基本数据类型理论上浮点数在计算机中的存储格式为阶码j尾数S阶码符号阶码数值尾数符号位数数值18C++程序设计2.3基本数据类型理论上浮点数在计算机中的存储格式为阶码j浮点数在VC6中实际的存储方式为float型2.3基本数据类型…31302923222110符号位阶码尾数double型…63626152515010符号位阶码尾数阶码:决定数的大小,对应浮点数:2-128~2127,尾数:决定数的精度19C++程序设计浮点数在VC6中实际的存储方式为2.3基本数据类型…31例:float71.3125转换为二进制为:1000111.0101,将其规范化之后成为:1.0001110101×26,这里的规范化是指移动小数点使小数点的左边只有一个“1”。

内存里实际存储实数的三部分信息:符号(如+)、指数(如6)和尾数(即小数点右边的位,如000111010100),而小数点左边的1并不存储。010000101

00011101010000000000000(428EA000)2.3基本数据类型

符号位

指数位

小数部分

指数偏移量

单精度浮点数

1位[31]

8位[30-23]

23位[22-00]

127

双精度浮点数

1位[63]

11位[62-52]

52位[51-00]

1023

尾数部分占的位数愈多,实数的有效数字愈多,即有效精度愈高。指数部分占的位数愈多,则能表示的数值范围愈大。实数在操作中存在误差,例如:把111111.111作为float型数据,输出的结果是111111.10920C++程序设计例:float71.3125转换为二进制为:1000四、字符型

采用ASCII码字符集,即用1个字节存放字符的ASCII码值

2.3基本数据类型分类标志符内存空间取值范围有符号字符型[signed]char1-128~127无符号字符型unsignedchar10~25521C++程序设计四、字符型2.3基本数据类型分类2.3基本数据类型数据类型数据长度适用范围小数点后有效位数bool8bits(1Byte)0或10char8bit(1Byte)0~2550int32bits(4Byte)-231~(231-1)0shortint16bits(2Byte)-32768~327670longint32bits(4Byte)-231~(231-1)0unsignedshort 16(2Byte)0~655350unsignedint32bits(4Byte)0~(232-1)0unsignedlong32bits(4Byte)0~42949672950float32bits(4Byte)3.4×10-38~3.4×10387double64bits(8Byte)1.7×10-308~1.7×1030816longdouble64bits(8Byte)1.7×10-308~1.7×103081622C++程序设计2.3基本数据类型数据类型数据长度适用范围小数点后有效位数2.4变量变量:在程序运行中其值可以改变的量变量是存储信息的单元,它对应某个内存空间变量名代表其存储空间,程序能在变量中存储值和取出值变量的定义:

数据类型

变量名1[[=初值],变量名2=[初值],…,];例:floatr1=1.5f,r2=0.5f,r3;charch='A';变量的初始化:为变量赋初值的过程,用赋值运算符“=”进行定义的同时进行初始化单独进行初始化inta,b;unsignedlongsum;a=123,sum=0;b=a;23C++程序设计2.4变量变量:在程序运行中其值可以改变的量inta2.4变量变量名的含义表示分配给变量的存储空间表示内存空间中存储的数据:变量的值每个变量都有一个名字、一个数据类型和一个值注意变量名与变量值的区别

3a变量名(一个符号地址,在对程序编译时系统分配给它一个内存地址)变量值(在程序中对变量取值,实际上是通过变量名找到相应内存地址,从其存储单元中读取数据)存储单元24C++程序设计2.4变量变量名的含义3a变量名(一个符号地址,在对程序2.4变量变量名命名规定由字母、下划线、数字组成,且第一个符号不能是数字不要与关键字、保留字重名;中间不能有空格C++是大小写敏感,即大写和小写字母是不同的变量名中不能包含”.;,“‘+-”之类特殊符号变量名不要与C++中的库函数、类名和对象名相同不要使用易混淆的字母某些功能的变量采用习惯命名,如循环变量习惯用i,j,k采用见名思义的原则:sum、name、sex,不要太长,一般以不超过31个字符为宜最好使用英文单词或其组合,切忌使用汉字或汉语拼音25C++程序设计2.4变量变量名命名规定25C++程序设计2.4变量变量名命名风格下划线和大小写通常用来增强可读性Unix风格:variable_nameWindows风格(匈牙利命名法):chName,strName指出下列命名的正确性,错误的指出原因x_y,x1,X1,x,y∏$姓名2xvarname指出下列命名的正确性,错误的指出原因_y1Case,51select,Alot,-vvSin,cin,cout,stringD6Xy√××××√√××√26C++程序设计2.4变量变量名命名风格指出下列命名的正确性,指出下列命名2.4变量匈牙利命名法标识符的名字以一个或者多个小写字母开头,用这些字母来指定数据类型在标识符内,前缀以后就是一个或者多个第一个字母大写的单词,这些单词指出程序中该对象的用途常用的数据类型的标准前缀ch字符(char)n整数(integer)bBOOLl长整数(long)hHANDLE(无符号int)m_类成员变量fn函数(function)例如,nCount表示一个计数器的变量,数据类型是整型。27C++程序设计2.4变量匈牙利命名法27C++程序设计#include<iostream>usingnamespacestd;intmain(){intprice=30;intnum,total;//定义变量,在内存中开辟区间num=10;//变量赋值,10为常量total=num*price;cout<<"total="<<total;//输出结果return0;}其中:num=10total=num*PRICE

是赋值号,不同于数学意义上的等号!!!numtotal10300price302.4变量28C++程序设计#include<iostream>其中:num=10t2.5常量在程序运行时保持不变的值,称为常量根据常量的数据类型,常量可分为整型常量、实型常量、字符常量、字符串常量、枚举常量根据常量的声明,常量可分为文字常量和自定义常量文字常量:在程序中出现的、代表数据的文字整型文字常量十进制:78,-132八进制:以数字0开头,后跟一串八进制数字(注意:数字0),如012(√),03256(√),0128(×)十六进制:以0x开头,后跟0~9、A~F或a~f(数字0,字母x),如0x123(√),0xabc(√),01bc(×)10进制数有正负之分,8进制、16进制只能表示无符号整数29C++程序设计2.5常量在程序运行时保持不变的值,称为常量29C++程序2.5常量整型文字常量长整型常量123l、123L、123456l、123456L无符号型常量123u、123U实型文字常量小数形式,例如:0.123,-5.6,.123,2.0,2.指数形式(科学记数法)1.56×10-3

1.56E-3,1.56×108

1.56E8,1.56e+8注意实数一律用十进制表示:0x2.5×E的左右必须要有数字:E2(1E2),2E(2E+1、2E1)指数部分必须为整数:2.5E+2.5×30C++程序设计2.5常量整型文字常量30C++程序设计#include<iostream>usingnamespacestd;intmain(){intint10,int8,int16;//定义3个整型变量int10=10; //默认为十进制int8=010; //八进制int16=0x10; //十六进制cout<<"int10="<<int10<<endl;cout<<"int8="<<int8<<endl;cout<<"int16="<<int16<<endl;return0;}输出int10=10int8=8int16=162.5常量31C++程序设计#include<iostream>输出2.5常量31C+2.5常量实型文字常量单精度float:一般在内存中占4个字节,提供7位有效数字双精度double:一般在内存中占8个字节,提供15位有效数字长双精度longdouble:一般在内存中占10个字节,提供19位有效数字在C++中,一个实型常数如果没有任何说明,表示double型;若要表示float型数,则必须在实数后加上f或F;若要表示longdouble型数,则必须在实数后加上l或L34.5f//float型34.5//double型(系统默认表示)34.5L//longdouble型34.5l//longdouble型34.5e23f//float型34.5e23//double型(系统默认表示)34.5e23L//longdouble型34.523l//longdouble型34.5e400//longdouble型(范围超过double表示)32C++程序设计2.5常量实型文字常量34.5f//float型34#include<iostream>usingnamespacestd;intmain(){floata,b;doublec,d;a=0.01;b=3.45678e-2;c=3.45678e-2;d=9.7654e-5;cout<<"a="<<a<<'\t'<<"b="<<b<<endl;cout<<"c="<<c<<'\t'<<"d="<<d<<endl;return0;}a=0.01b=0.0345678c=0.0345678d=9.7654e-005Pressanykeytocontinue2.5常量33C++程序设计#include<iostream>a=0.01b=0.2.5常量字符文字常量用一对英文单引号括起来的单个字符或转义序列单个字符:如'a','x','$'转义序列:以'\'开头后跟一个字符或几个数字'\n'回车键,'\t'tab键\ddd1-3位8进制数所代表的字符:'\101'与'A'、65表示同一个字符,不需以0开头,表示范围为'\000'~'\377'(0~255)\xhh1-2位16进制数所代表的字符:'\x41'与'A'、65表示同一个字符,242、'\362'、'\xF2'表示≥,必须用x或X引导,表示范围为'\x00'~'\xff'(0~255)将一个字符常量赋值给字符变量,实际上并不是把该字符本身放到内存单元中,而是将该字符的相应ASCII码(整型数)存入,即在内存中字符数据以ASCII存储,即以整数表示34C++程序设计2.5常量字符文字常量34C++程序设计2.5常量字符文字常量例:charchVar='b',chVar1='\n'charchVar2='\007';//1-3位8进制数charchVar3='\xff';//1-2位16进制数charchVar4=97;C++中字符数据和整型数据之间可以相互赋值,但要注意其表示的范围合理性

inta='b';//Ok给一个整型变量赋一个字符值charb=97;//Ok给一个字符变量赋一个整型值cout<<a<<endl;结果为98cout<<b<<endl;结果为a'0'与0的区别常用转义字符:一些特殊字符(无法从键盘输入或者另有它用)用转义字符表示35C++程序设计2.5常量字符文字常量35C++程序设计#include<iostream>usingnamespacestd;intmain(){charc1,c2,c3,c4;charn1,n2;c1='a'; //字符常量c2=97; //十进制c3='\x61';//转义字符c4=0141;//八进制cout<<"c1="<<c1<<'\t'<<"c2="<<c2<<endl;cout<<"c3="<<c3<<'\t'<<"c4="<<c4<<endl;n1='\n';//转义字符:回车n2='\t';//转义字符:下一个输出区(Tab)cout<<"使用转义字符\n";cout<<"c1="<<c1<<n2<<"c2="<<c2<<n1;cout<<"c3="<<c3<<n2<<"c4="<<c4<<n1;return0;}输出:c1=ac2=ac3=ac4=a使用转义字符c1=ac2=ac3=ac4=a2.5常量36C++程序设计#include<iostream>输出:2.5常量362.5常量字符串文字常量用一对双引号

括起来的一个或多个字符序列,如:"China","CLanguage","\"hello!\""字符串的存储:在内存中,依次存放组成字符串的每个字符的ASCII码值,并且把空字符'\0'(ASCII码值为0)加到字符串的尾部,作为字符串的结束标志。字符串的长度:等于字符的个数字符串存储时占内存的大小:字符串的长度+1不能将字符串常量赋值给字符变量,如charch="abcd";一个字符占一个内存单元,含有一个字符的字符串占2个内存单元,区分"A"与'A','0'、

"0"与0HELLO'\0'37C++程序设计2.5常量字符串文字常量HELLO'\0'37C++程序设2.5常量用户自定义常量若希望变量的内容自初始化后一直保持不变,此时可以定义一常量若程序中多处都要用到一个常数,此时应定义一常量以避免常数值的不一致性constfloatpi=3.14159;常量定义时必须初始化,此后程序中对其只能读不能修改常量名不能放在赋值语句的左边constfloatpi;pi=3.14159;常量在编译时求值constintnSize=100*sizeof(int);constintnMax=fnMax(15,23);//fnMax用户自定义函数38C++程序设计2.5常量用户自定义常量38C++程序设计2.5常量用户自定义常量#defineC++为兼容C而保留#define称为编译预定义指令,其语法格式为#define常量名字符串#definePI3.1415926常量名与字符串之间用空格分隔,行末不用分号,在编译预处理阶段进行字符串直接替换在C++编程中,常量定义应使用const不用define39C++程序设计2.5常量用户自定义常量39C++程序设计#include<iostream>usingnamespacestd;#definePI3.1415926//自定义常量intmain(){

constintPRICE=30;//自定义常量,在程序中保持不变intnum,total;//定义变量,在内存中开辟区间num=10;//变量赋值,10为文字常量total=num*PRICE;cout<<"total="<<total;//输出结果

floatfR,fArea;//定义变量,在内存中开辟区间fR=3.5f;//变量赋值,3.5f为文字常量fArea=fR*fR*PI;cout<<"Area="<<fArea;//输出结果return0;}numtotal10300PRICE302.5常量40C++程序设计#include<iostream>numtotal103#include<iostream>usingnamespacestd;#definePI3.14156#defineS"China"intmain(){

constfloatpi=3.14156; //变量作为常量使用cout<<"PI="<<PI<<endl;cout<<"10*PI="<<10*PI<<endl;cout<<S<<endl;//PI=PI+3;//pi=pi+4;cout<<"PI="<<PI<<endl;cout<<"pi="<<pi<<endl;return0;}输出:PI=3.1415610*PI=31.4156ChinaPI=3.14156pi=3.141562.5常量41C++程序设计#include<iostream>输出:2.5常量412.5常量//用计算机计算圆的面积:#include<iostream>usingnamespacestd;intmain(){

constdoublePI=3.1415926;//Step1:Readinradiusdoubleradius;cout<<"Enteraradius:";cin>>radius;//Step2:Computeareadoublearea=radius*radius*PI;//Step3:Displaytheareacout<<"Theareais"<<area<<endl;return0;}42C++程序设计2.5常量//用计算机计算圆的面积:42C++程序设计2.6I/O流控制程序在执行期间,接收外部信息的操作称为程序的输入(Inpout);而把程序向外部发送信息的操作称为程序的输出(Output)。在C++中没有专门的输入输出语句,所有输入输出是通过输入输出流来实现的。要使用C++提供的输入输出时,必须在程序的开头增加两行:

#include<iostream>usingnamespacestd;包含输入输出流的头文件为iostream.h,有关包含文件的作用,在编译预处理部分(第5章)作详细介绍。43C++程序设计2.6I/O流控制程序在执行期间,接收外部信息的操作称为程inta,b;cin>>a>>b;//程序运行至此停下,等待从键盘输入变量值键盘输入:35<CR>或:3<CR>5<CR>均可。输入语句自动过滤空白字符!a3键盘b5键盘输入语句:cin输入十进制整数和实数:cin>>

<变量名1>[>><变量名2>...]2.6I/O流控制44C++程序设计inta,b;键盘输入:35<CR>输入语句自floatc,d;cin>>c>>d;charch1,ch2;cin>>ch1>>ch2;若输入:ab<CR>则ch1为a,ch2为b。若输入:ab<CR>则ch1为a,ch2为b。字符型变量过滤空白字符,cin格式过滤空白字符!输入语句:cin浮点型数据同整型数据一样字符型数据2.6I/O流控制45C++程序设计floatc,d;charch1,ch2;若输入floata;inti1,i2;charch1,ch2;cin>>i1>>a>>i2>>ch1>>ch2;输入:345.6781ab<CR>i2:1在缺省的情况下,cin自动跳过输入的空格,换言之,cin不能将输入的空格赋给字符型变量;回车键也是作为输入字符之间的分隔符,也不能将输入的回车键字符赋给字符型变量。a:5.578i1:34ch1:ach2:b2.6I/O流控制输入语句:cin不同类型数据混合输入46C++程序设计floata;输入:345.6781a若要把从键盘上输入的每一个字符,包括空格和回车键都作为一个输入字符赋给字符型变量时,必须使用函数cin.get(),其格式为:cin.get(<字符型变量>);cin.get()从输入行中取出一个字符,并将它赋给字符型变量,该语句一次只能从输入行中提取一个字符。charc1;cin.get(c1);charch1,ch2,ch3;cin.get(ch1);cin.get(ch2);cin.get(ch3);则:ch1:Ach2:空格ch3:B输入:AB<CR>并且在输入缓冲区中保留回车键!2.6I/O流控制47C++程序设计若要把从键盘上输入的每一个字符,包括空格和回车键都作为一个输输入语句:cin输入十六进制或八进制数据:缺省情况下,系统约定输入的整型数是十进制数据;当要求按八进制或十六进制输入数据时,在cin中必须指明相应的数据类型:hex为十六进制,oct为八进制,dec为十进制。inti,j,k,l;cin>>hex>>i; //指明输入为十六进制数cin>>oct>>j; //指明输入为八进制数cin>>k; //输入仍为八进制数cin>>dec>>l; //指明输入为十进制数当执行到语句cin时,若输入的数据为:11111212<CR>结果:i:17j:9k:10l:122.6I/O流控制48C++程序设计输入语句:cininti,j,k,l;结果:i:17j2.6I/O流控制输入语句:cin使用非十进制数输入时,要注意以下几点八进制或十六进制数的输入,只能适用于整型变量,不适用于字符型变量,实型变量当在cin中指明使用的数制输入后,则所指明的数制一直有效,直到在接着的cin中指明输入时所使用的另一数制为止。如上例中,输入k的值时,仍为八进制。输入数据的格式、个数和类型必须与cin中所列举的变量类型一一对应。一旦输入出错,不仅使当前的输入数据不正确,而且使得后面的提取数据也不正确。cin>>ab;cin>>ab;inta,b;cin>>a>>b;49C++程序设计2.6I/O流控制输入语句:cincin>>ab;cin输出语句:cout与输入cin对应的输出是cout输出流当要输出一个表达式的值时,可使用cout来实现,其一般格式为:cout<<<表达式>[<<<表达式>...];其中运算符“<<”称为插入运算符,它将紧跟其后的表达式的值,输出到显示器当前光标的位置。2.6I/O流控制50C++程序设计输出语句:cout2.6I/O流控制50C++程序设计inta=6;floatf1=12.4;chars1[]="abcd";cout<<a<<'\t'<<f1<<'\t'<<s1<<endl;'\t'为转义字符Tab,endl为回车或'\n'显示器显示器显示器a6f112.4s1\0dcba612.4abcd2.6I/O流控制51C++程序设计inta=6;'\t'为转义字符Tab,endl为回车或cout将双引号中的字符串常量按其原样输出charch1='a',ch2='b';cout<<"c1="<<ch1<<'\t'<<"c2="<<ch2<<endl;c1=a,c2=b<CR>inti1=4,i2=5;floata=3.5;cout<<"a*i1="<<a*i1<<endl<<"a*i2="<<a*i2<<endl;a*i1=14a*i2=17.52.6I/O流控制52C++程序设计cout将双引号中的字符串常量按其原样输出charc2.6I/O流控制使用控制符用于对I/O流的格式进行控制在头文件iomanip.h中定义的对象可以直接将控制符插入流中控制符描述deciostream.h置基数为10hex置基数为16oct置基数为8setw(n)iomanip.h设域宽为n个字符setprecision(n)设显示小数精度为n位setfill(c)设填充字符为csetiosflags(ios::skipws)忽略前导空白setiosflags(ios::fixed)固定的浮点显示setiosflags(ios::scientific)指数表示setiosflags(ios::left)左对齐setiosflags(ios::right)右对齐setiosflags(ios::uppercase)16进制数大写输出setiosflags(ios::lowercase)16进制数小写输出53C++程序设计2.6I/O流控制使用控制符控制符描述dec置基数为12.6I/O流控制输出语句:cout输出八进制或十六进制数:控制符是hex,oct和dec,分别对应16进制、8进制和10进制数的显示当在cout中指明使用的数制输出后,则所指明的数制一直有效,直到在接着的cout中指明输出时所使用的另一数制为止,如下例中,输出j的值时,仍为八进制。cout<<dec<<i<<endl;cout<<hex<<i<<endl;cout<<oct<<i<<endl;cout<<j<<endl;10013e91751inti=1001,j=127;cout<<dec<<i<<endl;cout<<hex<<i<<endl;cout<<oct<<i<<endl;10013e9175117754C++程序设计2.6I/O流控制输出语句:coutcout<<dec<2.6I/O流控制输出语句:cout设置值的输出宽度:在输出的数据项之间进行隔开的另一种办法是指定输出项的宽度setw(6)指明其后的输出项占用的字符宽度为6,即括号中的值指出紧跟其后的输出项占用的字符位置个数,并向右对齐,setw是“setwidth”的缩写inti=4,j=12,m=7,k=2;cout<<setw(6)<<i<<setw(10)<<j<<endl;cout<<setw(5)<<m<<setw(10)<<j*k<<endl;_____4________12____7________2455C++程序设计2.6I/O流控制输出语句:coutinti=4,j=1使用setw()应注意以下三点:1、在程序的开始位置必须包含头文件iomanip.h,即在程序的开头增加:#include<iomanip>2、括号中必须给出一个表达式(值为正整数),它指明紧跟其后输出项的宽度。3、该设置仅对其后的一个输出项有效。一旦按指定的宽度输出其后的输出项后,又回到原来的缺省输出方式2.6I/O流控制56C++程序设计使用setw()应注意以下三点:2.6I/O流控制56C2.6I/O流控制输出语句:cout控制浮点数值显示setprecision(n)

控制输出流显示浮点数的数字个数,C++默认的流输出数值有效位是6setprecision(n)

与setiosflags(ios::fixed)

联合控制小数点右边的数字个数setprecision(n)

setiosflags(ios::scientific)

联合控制指数表示法的小数位数VC6中setiosflags(ios::scientific)与setiosflags(ios::fixed)不能连续使用,否则后者失效doublefSum=22.0/7;cout<<fSum

<<endl;cout<<setprecision(0)<<fSum

<<endl;cout<<setprecision(2)<<

fSum

<<endl;cout<<setiosflags(ios::fixed)<<setprecision(4)<<fSum

<<endl;cout<<setiosflags(ios::scientific)<<setprecision(6)<<fSum

<<endl;57C++程序设计2.6I/O流控制输出语句:coutdoublefSum2.6I/O流控制输出语句:cout设置填充字符:缺省时流使用空格符来保证字符间的正确间隔,setfill用于设置非空字符来填充inti=4,j=12,m=7,k=2;cout<<setfill('*');cout<<setw(6)<<i<<setw(10)<<j<<endl;cout<<setw(5)<<m<<setw(10)<<j*k<<endl;cout<<setfill('');58C++程序设计2.6I/O流控制输出语句:coutinti=4,j=12.6I/O流控制输出语句:cout强制显示小数点和符号:要强制显示小数点,用setiosflags(ios::showpoint)标志要强制显示正数前的正号,用setiosflags(ios::showpos)标志floatfSum=10.0/5;cout<<fSum<<endl;cout<<setiosflags(ios::showpoint)<<fSum<<endl;cout<<setiosflags(ios::showpos)<<fSum<<endl;pos:positive59C++程序设计2.6I/O流控制输出语句:coutfloatfSum2.6I/O流控制输出语句:coutios::right,ios::leftios::uppercase,ios::lowercaseios::skipws忽略前导空白printf与scanfC语言中的标准输入输出函数包含在头文件stdio.h中C++语言中已被I/O流完全替代60C++程序设计2.6I/O流控制输出语句:cout60C++程序设计2.6I/O流控制printf与scanfprintf的简单使用%d或%i:输出用十进制表示的int型数据%u:输出用十进制表示的unsigned型数据%o:输出用八进制表示的unsigned型数据%x:输出用十六进制表示的unsigned型数据%f:以小数形式输出实数,并且自动按四舍五入形式保留6位小数;如果输出的实数本身不足6位小数,则在小数后面自动补数字0,以凑足6位。%e或%E:以指数形式输出实数%g:以小数或指数形式最合适的方式输出浮点数%c:输出一个字符%s:输出字符串输出的八进制或十六进制不显示前缀符61C++程序设计2.6I/O流控制printf与scanf输出的八进制2.6I/O流控制#include<stdio.h>intmain(){inta=10,b=-1;unsignedx=65535;printf("a=%d\ta=%i\t",a,a);

printf("a=%o\ta=%x\ta=%X\n",a,a,a);printf("b=%d\tb=%i\n",b,b);

printf("x=%u\tx=%o\tx=%x\tx=%X\n",x,x,x,x);printf("b=%o\tb=%x\tb=%X\tx=%d\n",b,b,b,x);return0;}

62C++程序设计2.6I/O流控制#include<stdio.h>62小结与作业这一节我们主要学习了。。。C++语言中的保留字基本数据类型变量常量I/O流作业教材P46:习题2.1~2.4,2.12,2.17~2.19,2.24教材P72:习题3.24,3.26预习实验指导书实验二预习教材第2章:2.9~2.1563C++程序设计小结与作业这一节我们主要学习了。。。63C++程序设计第2章基本数据运算与输入输出(A)第2章基本数据运算与输入输出(A)主要内容如何用计算机计算圆面积(2.1-2.4)标识符(2.5)基本数据类型(2.9)变量定义(2.6)常量(2.8,2.9.1)I/O流控制(3.12)小结及作业65C++程序设计主要内容如何用计算机计算圆面积(2.1-2.4)2C++程序2.1如何用计算机计算圆面积问题描述计算机从键盘读入圆的半径,输出其面积程序将使用变量保存半径和面积,并用一个表达式计算面积解决思路读入半径利用圆面积公式计算面积输出面积66C++程序设计2.1如何用计算机计算圆面积问题描述3C++程序设计2.1如何用计算机计算圆面积程序主函数框架程序清单intmain(){//Step1:Readinradius

//Step2:Computearea

//Step3:Displaythearea}#include<iostream>usingnamespacestd;intmain(){//Step1:Readinradius

doubleradius;

cout

<<"Enteraradius:";

cin>>radius;//Step2:Computearea

doublearea=radius*radius*3.14159;//Step3:Displaythearea

cout

<<"Theareais"<<area<<

endl;

return0;}consolein/out67C++程序设计2.1如何用计算机计算圆面积程序主函数框架intmain2.2标识符字符集字符是指计算机中使用的字母、数字、单词和符号用于构造有意义语句的一组字符,这也是任何一种语言的特点C++程序的字符集26个大、小写字母:a~z,A~Z10数字:0~9其他符号:+-*/%&|~(){}<>^"',.?:;\68C++程序设计2.2标识符字符集5C++程序设计2.2标识符标识符由字符集元素组成的一串字符,为变量、常量及函数等程序实体命名分为系统预定义标识符(如预编译指令)和用户自定义标识符(如变量名,函数名)标志符命名规则由字母、下划线、数字组成,且第一个符号不能是数字中间不能有空格C++是大小写敏感,即大写和小写字母是不同的最好使用英文单词或其组合,切忌使用汉字或汉语拼音不能使用保留字作为标志符(参见附录A)采用见名思义的原则:sum、name、sex,不要太长,一般以不超过31个字符为宜69C++程序设计2.2标识符标识符6C++程序设计2.2标识符保留字又称关键字(Keyword),是预先定义好的标识符,对C++编译程序有特殊含义在程序中用到的其他名字(标识符)不能与C++的关键字相同关键字也不能重新定义不同开发环境如VC、BC会对保留字有不同扩充C/C++保留字参见教材附录AC++关键字(P492)70C++程序设计2.2标识符保留字7C++程序设计2.3基本数据类型中学阶段数学课学习的数据类型及运算实数(R)、复数(C)355.5,76.8有序实数对:2+3i整数(I)、小数35,-683.5,0.8自然数(N),正整数(Z)0,1,2,3,…有理数、无理数正数、负数常数:π,e自然数整数小数实数复数数数正数负数数有理数无理数71C++程序设计2.3基本数据类型中学阶段数学课学习的数据类型及运算自然数2.3基本数据类型C++语言中的数据类型整型int字符型单字符型char宽字符型wchar_t实型单精度型float双精度型double逻辑型bool数据类型基本数据类型非基本数据类型数组type[]指针type*空类型void结构struct共用体union枚举enum类class72C++程序设计2.3基本数据类型C++语言中的数据类型整型int字符型2.3基本数据类型C++语言中数据为什么要区分类型?不同类型的数据代表不同的数据表示形式合法的取值范围可参与的运算种类占用内存空间大小对程序当中所用到的所有数据都必须指定其数据类型从基本数据类型到抽象数据类型无数据类型void基本数据类型构造数据类型抽象数据类型73C++程序设计2.3基本数据类型C++语言中数据为什么要区分类型?10C2.3基本数据类型基本数据类型:系统事先规定了的数据类型(内置类型)int,整数,在目前绝大多数机器上占4个字节float,单精度浮点数,一般是4个字节长,VC内缺省显示为6位有效数字double,双精度浮点数,一般是8个字节长,VC内缺省显示为14位有效数字char字符,一般是1个字节长用来表示256个ASCII字符,或者0~255的整数注意

数据类型标识符为小写字母int大小范围与机器有关74C++程序设计2.3基本数据类型基本数据类型:系统事先规定了的数据类型(2.3基本数据类型基本数据类型修饰符:short、long、signed、unsignedshortshortint,短整数,一般2个字节长,通常简写为short

long

longint,长整数,VC中一般是4个字节长,通常简写为long

longdouble,长双精度(高精度)浮点数,一般是10个字节长。

signed用来修饰char、int、short和long,说明他们是有符号的整数(正整数、0和负整数),一般缺省都是有符号的,所以这个修饰符通常省略

unsigned用来修饰char、int、short和long,说明他们是无符号的整数(正整数和0)75C++程序设计2.3基本数据类型基本数据类型修饰符:short、long一、无符号的整型数据大于或等于零的正整数无符号的短整型

分类无符号的基本整型无符号的长整型

unsignedshort[int]

标识符

unsigned[int]

unsignedlong[int]

2

对应内存空间的大小4

40~216-1

取值范围同上0~232-1注意1、[]的含义2、标识符为小写字母3、int与机器有关2.3基本数据类型76C++程序设计一、无符号的整型数据无符号的短整型分类无二、有符号的整型数据包括负整数、零、正整数有符号的短整型

分类有符号的基本整型有符号的长整型[signed]short[int]

标识符

[signed]int

[signed]long[int]

2

对应内存空间的大小4

4取值范围-215~2152.3基本数据类型-231~231同上有符号整数在计算机内存中是以补码形式存储77C++程序设计二、有符号的整型数据有符号的短整型分类有符号1.求整数的补码规则例如:(10)补=(-10)补=0000101011110110-10取绝对值10000010101111010111110110用二进制表示各位取反末位加12.由补码推出原码-10加负号10000010101111010111110110用十进制表示各位取反末位减12.3基本数据类型下面以一个字节存储有符号整数为例分析其取值范围78C++程序设计1.求整数的补码规则例如:(10)补=000010补码00000001————110000000————-12811111111————-101111111————12700000000————010000001————-127原码11111110————-2取值范围-128~127-27~27-12.3基本数据类型正数负数79C++程序设计补码00000001————110000000———三、实型:一律作为有符号的数据使用

2.3基本数据类型分类标志符字节数缺省有效精度单精度实数float46位双精度实数double814位实数作为有符号的数据使用,可表示为小数形式和指数形式,但在计算机内部都用浮点方式来实现存储定点小数:小数点位置固定,位于符号位和第一个数值位之间,如-0.34,表示的是纯小数;浮点数:小数点的位置是可以浮动的数,如浮点数通用表示是将实数分为阶码和尾数两部分:S为尾数(正负均可),一般规定用纯小数形式,r为基数,对二进制而言,r=2,j为阶码(正负均可),但必须是整数80C++程序设计三、实型:一律作为有符号的数据使用2.3基本数据类型分类2.3基本数据类型理论上浮点数在计算机中的存储格式为阶码j尾数S阶码符号阶码数值尾数符号位数数值81C++程序设计2.3基本数据类型理论上浮点数在计算机中的存储格式为阶码j浮点数在VC6中实际的存储方式为float型2.3基本数据类型…31302923222110符号位阶码尾数double型…63626152515010符号位阶码尾数阶码:决定数的大小,对应浮点数:2-128~2127,尾数:决定数的精度82C++程序设计浮点数在VC6中实际的存储方式为2.3基本数据类型…31例:float71.3125转换为二进制为:1000111.0101,将其规范化之后成为:1.0001110101×26,这里的规范化是指移动小数点使小数点的左边只有一个“1”。

内存里实际存储实数的三部分信息:符号(如+)、指数(如6)和尾数(即小数点右边的位,如000111010100),而小数点左边的1并不存储。010000101

00011101010000000000000(428EA000)2.3基本数据类型

符号位

指数位

小数部分

指数偏移量

单精度浮点数

1位[31]

8位[30-23]

23位[22-00]

127

双精度浮点数

1位[63]

11位[62-52]

52位[51-00]

1023

尾数部分占的位数愈多,实数的有效数字愈多,即有效精度愈高。指数部分占的位数愈多,则能表示的数值范围愈大。实数在操作中存在误差,例如:把111111.111作为float型数据,输出的结果是111111.10983C++程序设计例:float71.3125转换为二进制为:1000四、字符型

采用ASCII码字符集,即用1个字节存放字符的ASCII码值

2.3基本数据类型分类标志符内存空间取值范围有符号字符型[signed]char1-128~127无符号字符型unsignedchar10~25584C++程序设计四、字符型2.3基本数据类型分类2.3基本数据类型数据类型数据长度适用范围小数点后有效位数bool8bits(1Byte)0或10char8bit(1Byte)0~2550int32bits(4Byte)-231~(231-1)0shortint16bits(2Byte)-32768~327670longint32bits(4Byte)-231~(231-1)0unsignedshort 16(2Byte)0~655350unsignedint32bits(4Byte)0~(232-1)0unsignedlong32bits(4Byte)0~42949672950float32bits(4Byte)3.4×10-38~3.4×10387double64bits(8Byte)1.7×10-308~1.7×1030816longdouble64bits(8Byte)1.7×10-308~1.7×103081685C++程序设计2.3基本数据类型数据类型数据长度适用范围小数点后有效位数2.4变量变量:在程序运行中其值可以改变的量变量是存储信息的单元,它对应某个内存空间变量名代表其存储空间,程序能在变量中存储值和取出值变量的定义:

数据类型

变量名1[[=初值],变量名2=[初值],…,];例:floatr1=1.5f,r2=0.5f,r3;charch='A';变量的初始化:为变量赋初值的过程,用赋值运算符“=”进行定义的同时进行初始化单独进行初始化inta,b;unsignedlongsum;a=123,sum=0;b=a;86C++程序设计2.4变量变量:在程序运行中其值可以改变的量inta2.4变量变量名的含义表示分配给变量的存储空间表示内存空间中存储的数据:变量的值每个变量都有一个名字、一个数据类型和一个值注意变量名与变量值的区别

3a变量名(一个符号地址,在对程序编译时系统分配给它一个内存地址)变量值(在程序中对变量取值,实际上是通过变量名找到相应内存地址,从其存储单元中读取数据)存储单元87C++程序设计2.4变量变量名的含义3a变量名(一个符号地址,在对程序2.4变量变量名命名规定由字母、下划线、数字组成,且第一个符号不能是数字不要与关键字、保留字重名;中间不能有空格C++是大小写敏感,即大写和小写字母是不同的变量名中不能包含”.;,“‘+-”之类特殊符号变量名不要与C++中的库函数、类名和对象名相同不要使用易混淆的字母某些功能的变量采用习惯命名,如循环变量习惯用i,j,k采用见名思义的原则:sum、name、sex,不要太长,一般以不超过31个字符为宜最好使用英文单词或其

温馨提示

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

评论

0/150

提交评论