C++程序设计-教学幻灯片_第1页
C++程序设计-教学幻灯片_第2页
C++程序设计-教学幻灯片_第3页
C++程序设计-教学幻灯片_第4页
C++程序设计-教学幻灯片_第5页
已阅读5页,还剩497页未读 继续免费阅读

下载本文档

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

文档简介

C++程序设计课程安排及要求课程信息:总学时:48学时上课:24学时上机:24学时考试方式:待定课堂要求:1.不允许无故缺席,缺席一次,平时成绩扣10分。2.采取不定时点名,累积缺席达3次,取消该门课考试资格。上机要求:上机玩游戏、聊天者,发现一次扣平时成绩2分,累计8次,平时成绩记0分关于C++语言课程C与C++(C加加,see-plus-plus)贝尔实验室于二十世纪八十年代在C语言的基础上开发的。C++是C语言的超集,包含了C语言的所有内容,同时增加了面向对象编程方面的内容。C++与Java和C#C++是Java和C#的始祖。Java和C#是C++的子集与简化因此,学习C++后学习Java与C#会事半工倍、倍感轻松。参考书目与课时安排参考书目C++程序设计导学.李春葆著.北京:清华大学出版社C++语言程序设计教程杨进才沈显君刘蓉编著清华大学出版社C++Primer(3RD)中文版.StanleyB.Lippman,Josee

Lajoie

著.潘爱民,张丽译.北京:中国电力出版社

如何学好C++能细能粗在面向过程编程部分,对数据类型、运算符、语句等要注重细节。做到细致掌握。在面向对象部分重在对概念的掌握,对每个概念回答是什么?为什么?如何?这三个问题。做到掌握思想。重视实践和学好所有编程语言一样,做到“上机、上机、再上机”。利用资源利用网络资源进行学习、交流、答疑。如清华大学的BBS站的C++学习园地上有大量的帖子。地址:第1章C++编程简介本章内容1.1计算机程序设计语言1.2面向过程的程序设计1.3面向对象的程序设计1.4C++概述1.5C++程序实例

1.1计算机程序设计语言机器语言汇编语言高级语言面向过程面向对象CPU指令系统,由0、1序列构成的指令码组成如:10000000加

10010000减用助记符号描述的指令系统如ADDAX,BX面向机器的语言程序设计依赖解决问题的过程客观事物描述成具有属性和行为的对象;同一类对象的共同属性和行为形成类;封装对象间通过发送和接受消息发生联系;类的继承与多态性可以提供使用现成类的机制,从而实现代码的重用.

程序设计关键是定义类,并由类实例化成对象接近人的自然语言习惯,如:100+200

1.2面向过程的程序设计本质:通过程序来进行数据处理高级语言:1、面向过程的语言BASIC、PASCAL、C2、面向对象的语言C++、JAVA

1.2面向过程的程序设计例如:要向屏幕打印一个“A”字符1、BASIC语言:PRINT“A”2、PASCAL语言:writeln(‘A’);3、C语言:printf(“A”);4、C++语言:cout<<“A”;5、JAVA语言:System.out.print("A");主要思想自顶向下逐步求精核心算法:为解决某一应用问题而采用的解题步骤。 一个计算机程序可以看成是由一系列任务组成的,任何一项任务如果过于复杂就将其分解成一系列较小的子任务,直至每一项任务都很小,很容易解决。1.2面向过程的程序设计基本结构1.2面向过程的程序设计“面向过程的程序设计”不足:1、生产率低下,软件代码重用程度低;2、软件维护困难。“面向对象的程序设计”本质:把数据和处理数据的过程当成一个整体即对象。“面向对象的程序设计”优点:与人类习惯的思维方式一致。可重用性好。可维护性好。1.3面向对象的程序设计对象是实现世界中的一个实际存在的事物张三李四抽象类是具有相同属性和服务的一组对象的概括属性服务性别,年龄…说话,行走…具体化继承新类人说话,行走…性别,年龄…大学生性别,年龄,专业…说话,行走,学习…消息1.3面向对象的程序设计封装:信息隐蔽:通过将类定义的成员设置成不同的访问权限来实现。继承和派生:在程序中定义类,当出现两个或多个类享有相似的情况,就不必重复在类中定义,可通过继承,从其他类派生出其他类。多态性:指在一般类中定义的属性和行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。1.3面向对象的程序设计1.4C++语言概述全面支持C

C++语言的产生

1983加入类CC++ANSIC++1994标准化C++语言的特点

面向对象比C更完善、安全、高效

1.3C++程序开发过程程序代码的录入、修改执行预处理指令,词法分析、语法分析后生成目标程序与其它目标程序或库连接,生成可执行程序1.4C++程序实例

/*************************************************程序文件名:p1_1.cpp**本程序显示:HelloC++!**设计者:鲁莹时间:8-27-2007************************************************/#include<iostream>//载入头文件usingnamespacestd;//使用命名空间stdvoidmain()//程序入口{

cout<<"HelloC++!"<<endl;}

预处理命令无返回值无参数、无返回值的主函数主函数名函数开始函数体语句结束标志函数结束运行结果:

HelloC++!注释块注释行在C++程序中,注释块由“/*”开始,由“*/”结束,可以实现多行注释

。也可使用“//”进行单行注释。

C++语言的预处理命令都是以“#”号开头。iostream是一个头文件,系统头文件不带.h后缀

cout为标准输出流对象,它与显示器相连。<<是插入操作符,endl为换行符号。整个语句的功能是将”HelloC++!”字符串与endl依次插入到cout中

main是主函数名,一个C++语言程序有且仅有一个main函数。C++程序执行时就是从main函数开始.

C++语言规定:语句以分号结束

?为什么:标准C++库提供的对象等都放在标准名字空间std中,要使用它们,必须要声明使用标准名字空间std.

使用标准名字空间std有3种方式:整体声明

usingnamespacestd;使用时单个对象临时声明

std::cout<<"HelloC++"<<std::endl;单个对象使用前声明

usingstd::cout;

整体声明#include<iostream>usingnamespacestd;voidmain(){

cout<<"HelloC++!"<<endl;}单个对象临时声明#include<iostream>voidmain()

{

std::cout<<”HelloC++!”<<std::endl;}单个对象使用前声明#include<iostream>usingstd::cout;usingstd::endl;voidmain(){

cout<<”HelloC++!”<<endl;}使用名字空间相同的名字放在不同空间以防止命名冲突

cin>>对象1>>对象2>>...>>对象n;

cout<<对象1<<对象2<<...<<对象n;C++中使用对象cin

作为标准输入流对象,通常代表键盘,cin与提取操作符>>连用,使用格式为:意思是从标准输入流对象键盘上提取n个数据分别给对象1、对象2、...、对象n。C++中使用对象cout

作为标准输出流对象,通常代表显示设备,cout

与插入操作符<<连用,使用格式为:意思是依次从将对象1、对象2、...、对象n插入到标准输出流对象中,从而实现了对象在显示器上的输出.C++输入/输出简介本章小结程序设计语言经历了从机器语言、汇编语言、高级语言、面向对象的语言的发展过程,使得编程语言与人的自然语言越来越接近,编程效率越来越高。程序设计方法经历了面向过程的方法、结构化的方法、面向对象的方法的发展过程。C++语言具有全面兼容C与面向对象的特点,支持结构化与面向对象程序设计方法。面向对象的基本概念有:对象、类、封装、继承、消息、多态性。C++程序设计的步骤有编辑、预编译、编译、连接、调试与运行。程序注释有两种方法,应培养给程序写注释的好习惯。预处理指令include在编译的预处理阶段将头文件搬到程序中,包含文件是C++程序的必不可少的部分。标准C++的类库定义在名字空间std中,可以通过三种方法使用名字空间。实验一熟悉Vc++上机环境编程实现在屏幕上显示输出“Hello,VC++!”实现在屏幕上显示输出以下图形:

*********第2章C++数据类型主讲:鲁莹本章内容2.1

数据类型概述2.2

常量与变量2.3

基本类型2.4

运算符和表达式2.5

类型转换

基本整型(int)

短整型(short)

整型长整型(long)

无符号型(unsigned)

基本类型

单精度型(float)

实型(浮点型)双精度型(double)

字符型(char)扩展双精度型(longdouble)数据类型布尔型(bool)

空类型(void)

数组类型([])

指针类型

(*)

构造类型结构体类型(struct)

共用体类型(union)

枚举型(enum)

类(class)2.1数据类型概述C++中新增2.1数据类型概述数据类型和内存空间不同的数据类型,加上不同的修饰符就具有了不同的特点,在内存中占用的空间也不同,因而其所能表示的数值范围也不尽相同。内存单元的单位是字节,因此用来表示数据类型的长度的单位也是字节。2.1数据类型概述注意整型int的长度等于机器的字长:16位机:int=2字节;32位机:int=4字节。但是short和long表示的数据长度是固定的,任何支持标准C++的编译器都是如此,因而如果需要编写可移植性好的程序,应将整型声明为short或long。2.1数据类型概述例题编写一个程序,输出基本数据类型char,int,float,double,bool的长度。提示:使用sizeof(数据类型)能够获取不同数据类型的长度。2.1数据类型概述//输出基本数据类型的长度#include<iostream>usingnamespacestd;voidmain(){cout<<“char:”<<sizeof(char)<<“字节\n";cout<<"int:"<<sizeof(int)<<"字节\n";cout<<"float:"<<sizeof(float)<<"字节\n";cout<<"double:"<<sizeof(double)<<"字节\n";cout<<"bool:"<<sizeof(bool)<<"字节\n";}2.2常量与变量2.2.1常量2.2.2变量#include<iostream>usingnamespacestd;voidmain(void){constintPRICE=30;

intnum,total;floatv,r,h;num=10;total=num*PRICE;

cout<<total<<endl;r=2.5;h=3.2;v=3.14159*r*r*h;

cout<<v<<endl;}常量变量变量先声明后使用Page31字符常量2.2.1常量严格来说,常量又分成符号常量和常数。符号常量:代表一个固定不变值的名字常数(整型和浮点型):程序中使用的具体的数据2.2.1常量与符号常量符号常量C++中提供了一个关键字const,用来区分常量和变量。并且由于常量代表一个固定的值,并且该值在程序运行过程中不能够被改变,所以要求常量在定义的时候必须进行初始化。定义形式有:⑴

const

数据类型符号常量名=初始值;

例如:constdoublePI=3.1415926;注意:①

constdoublePI;

PI=3.1415926;

//error

constdoublePI=;

//error

constintM=max(15,23);

//error

⑵#define

符号常量名初始值例如:#definePI3.14159262.2.1常量与符号常量2.2.2变量什么是变量?在C++中,变量是存储信息的地方。变量的实质是内存中的一个地址空间,在这个地址空间中可以进行数据的存储和读取。2.2.2变量变量有三个基本要素:名字、类型和值。C++的程序设计中,在使用变量前必须首先定义变量,即指定变量的名称与数据类型。变量一经定义,系统根据其数据类型在内存中为该变量分配一定的存储单元,在该存储单元中可存放变量的值。变量的定义

一般格式为:

数据类型关键字变量名表;

说明:(1)变量名表:可以包含若干个变量,彼此间用

逗号分开。变量名必须是合法的标识符,不能用C++的关键字作为变量名。

(2)数据类型:变量可以被定义为基本数据类型和构造类型。

例如:

intx;

floatarea,width,length;

变量的定义

注意:

与C语言不同,C++语言中的变量定义不必位于程序的开始,可以穿插在其它语句中间。变量最好在使用时才定义,这样可以增加程序的可读性,避免变量发生混淆。初始化变量在定义变量的同时给其一个初始值,称为初始化变量。例如:

unsignedshortwidth=5;

longwidth=8,length=8;

doublearea,radius=20;或unsignedshortwidth(5);

longwidth(8),length(8);

“函数表示法”

doublearea,radius(20);初始化变量#include<iostream>usingnamespacestd;voidmain(){Int

myAge=18;cout<<“myAge=”<<myAge<<endl;myAge=20;cout<<“myAge=”<<myAge<<endl;}运行结果:myAge=18myAge=201.整型2.实型(浮点型)3.字符型4.布尔类型5.void类型小结2.3基本类型voidmain()整型

1.

整型常量的表示

2.

整型变量的分类关键字:int整型常量的表示(1)十进制整数:非0开头的,以0至9数字、正负号组成的常数,如1234,-10为合法十进制整常数,而123.0,1.23E+2是非法的十进制整常数。(2)八进制整数:以O开头的,由0至7数字组成的数字串,不能带符号,如O1234,O10为合法八进制整常数,而1234,028则是非法的八进制整常数。整型常量的表示(3)十六进制整数:以0x(或0X)开头的,由0至9数字和a至f(或A至F)字符组成,不能带符号,如0x10,0x2f,0xa为合法的十六进制整常数,而12,0xgf,20H是非法的十六进制整常数。注意:C++中,十进制数有正负之分,但八进制和十六进制数只能表示无符号整数。以下选项中可以作为C/C++语言合法整数的是

A)10110BB)0368C)0XffaD)x2a2整型变量的分类(1)signed:表示有符号位(可缺省,int型);(2)unsighed:表示无符号位(unsigned[int]型);(3)long:表示长型(long[int]

型和unsignedlong型);(4)short:表示短型(short[int]

型和unsignedshort型);例如:signedinta;等价于inta;

unsigned

inta;等价于unsigneda;

long

inta;等价于

longa;

short

inta;等价于

shorta;整型变量的分类

在十进制、八进制和十六进制表示的整常数中,若数字串的后面加上字母l(或L),则说明该常数为长整数,如12L,027l,0xa1L,0x9FL。若数字串的后面加上字母u(或U),则说明该常数为无符号整数,如5U。说明:实型

1.

实型常量表示法

2.

实型变量的分类关键字:float和double(1)小数表示法:由符号、数字和小数点组成的常数,可以省去整数部分,只保留小数部分,但绝对不能没有小数点。如2.55,0.0,-12.3,.234,250.等都是合法的十进制小数。(2)科学表示法:在小数表示法后加e(或E)及指数部分。注意:E或e的前面必须要有数字,且E后面的指数必须为整数,指数部分可正可负。如2.1E+5,123E-3,123e3,123.e3都是合法的,而345,-.5,3.E,e5等都是非法的指数形式。实型常量表示法实型变量的分类(1)单精度型:float型;(数据长度为4个字节)(2)双精度型:double型;(数据长度为8个字节)(3)扩展双精度型:longdouble型;(数据长度为16个字节)实型变量的分类

1.在C++中,一个实型常数如果没有任何说明,则表示double型(默认型),如:12.3。

2.若要表示float型数,则必须在实型数后面加上F或f,如:12.3f,12.3e4f。

3.若要表示longdouble型数,则必须在实数后加上L或l,如:12.3L,12.3e4L。

说明:字符型

1.

字符型常量

2.

字符串常量关键字:char

例如:charc;

/*字符变量c在内存中占用一个字节*/一般字符常量:用单引号括起来的一个字符,其值为ASCII代码值。如‘a’,‘A’,‘#’,‘$’。在内存中,字符数据是以ASCII码值存储的(即以整数表示),占据一个字节。因此C++使字符数据和整型数据之间可以通用。如:

‘A’=65=0101=0x41=01000001‘A’和‘a’是不‘a’=97=0141=0x61=01100001同的字符常量‘0’=48=060=0x30‘0’和0是截然‘1’=49=061=0x31不同的两个数字符型常量HELLO\0

字符串常量字符串常量

是用一对双引号括起来的字符序列。如“a”,“a\\\””,“123”,“Howdoyoudo?\n”,“¥1.23”等都是字符串常量。字符串中可以出现空格或其他字符,也可以包含C++以外的字符,如汉字等。

在C++中,字符串常量和字符常量是不同的,字符串常量中的字符连续存储,并在最后加上字符‘\0’作为字符串结束的标志。例如字符串“HELLO”在内存中占连续6个内存单元,如图:字符串常量

字符串常量和字符常量的区别为:①表现形式不同:“x”,

‘x’

②在内存中存放时所占空间不同:字符常量占1字节用于存放字符的ASCII码值;而字符串常量除每个字符占用1字节存放其ASCII码值外,还需1字节存放结束标志‘\0’。例如“x”在内存中占连续两个单元(即2个字节),第二个单元存放‘\0’结束符,而字符常量‘x’占一个字节。③操作不同:字符常量可以在一定范围与整数进行加减运算。如‘r’-‘a’+3是合法的,而“r”-“a”+3是非法的。④存放两者的变量不同:字符常量存放在字符变量中,而字符串常量需要存放在一个一维字符数组中。如:charch=‘a’;是正确的,而charch=“a”;是不正确的。即不能将字符串常量赋给字符变量。布尔类型布尔“bool”是表示逻辑变量的专有名词,所代表的意义就只有“真true”和“假false”两种。布尔数据是用来控制程序的执行方式的,或者说是用来处理程序中判断或比较结果的。例如:boolflag=true;//声明一个布尔变量

doubled=5.32;

if(flag==false)d=3.24;

由定义,true转为整型值时为1,false为0。相应的,非零值可以隐式地转为true,而0为false。bool类型的变量至少占据和char一样的空间。2.4运算符与表达式算术运算符与算术表达式基本算术运算符

+-*/(若整数相除,结果取整)%(取余,操作数为整数)优先级与结合性先乘除,后加减,同级自左至右++,--(自增、自减)例:i++;--j;Page57基本数据类型和表达式赋值运算符和赋值表达式

简单的赋值运算符"="举例

n=n+5表达式的类型

等号左边对象的类型表达式的值

等号左边对象被赋值后的值Page58基本数据类型和表达式赋值运算符和赋值表达式

复合的赋值运算符有10种复合运算符:

+=,-=,*=,/=,%=,

<<=,>>=,&=,^=,|=例

a+=3

等价于a=a+3

x*=y+8

等价于x=x*(y+8)基本数据类型和表达式赋值运算符和赋值表达式

——赋值表达式举例a=5 表达式值为5a=b=c=5

表达式值为5,a,b,c均为5a=5+(c=6)

表达式值为11,a为11,c为6a=(b=4)+(c=6)

表达式值为10,a为10,b为4,c为6a=(b=10)/(c=2)

表达式值为5,a为5,b为10,c为2a+=a-=a*a相当于

a=a+(a=a-a*a)Page60基本数据类型和表达式逗号运算和逗号表达式格式表达式1,表达式2求解顺序及结果先求解1,再求解2,最终结果为表达式2的值例a=3*5,a*4

最终结果为60Page61基本数据类型和表达式关系运算与关系表达式关系运算是比较简单的一种逻辑运算,优先次序为:

<<=>>===!=

优先级相同(高)优先级相同(低)关系表达式是一种最简单的逻辑表达式其结果类型为bool,值只能为true

或false。例如:a>b,c<=a+b,x+y==3基本数据类型和表达式逻辑运算与逻辑表达式逻辑运算符

!(非)&&(与)||(或)

优先次序:高→低逻辑表达式

例如:(a>b)&&(x>y)

其结果类型为bool,值只能为true

或false基本数据类型和表达式条件运算符与条件表达式一般形式表达式1?表达式2:表达式3表达式1必须是bool

类型执行顺序先求解表达式1,若表达式1的值为true,则求解表达式2,表达式2的值为最终结果若表达式1的值为false,则求解表达式3,表达式3的值为最终结果例:x=a>b?a:b;基本数据类型和表达式条件运算符与条件表达式注意:条件运算符优级高于赋值运算符,低于逻辑运算符表达式2、3的类型可以不同,条件表达式的最终类型为2和3中较高的类型。例:x=a>b?a:b;基本数据类型和表达式①②sizeof

运算符语法形式

sizeof(类型名)

或sizeof(表达式)结果值:

“类型名”所指定的类型或“表达式”的结果类型所占的字节数。例:sizeof(short)sizeof(x)基本数据类型和表达式位运算——按位与(&)运算规则将两个运算量的每一个位进行逻辑与操作举例:计算3&53:000000115:(&)000001013&5:00000001用途:将某一位置0,其它位不变。例如:

将char

型变量a

的最低位置

0:

a=a&0376;取指定位。

例如:有charc;inta;

取出a的低字节,置于

c中:c=a&0377;基本数据类型和表达式位运算——按位或(|)运算规则将两个运算量的每一个位进行逻辑或操作举例:计算3|53:000000115:(|)000001013|5:00000111用途:将某些位置1,其它位不变。

例如:将int

型变量a

的低字节置

1

a=a|0xff;基本数据类型和表达式位运算——按位异或(^)运算规则两个操作数进行异或:

若对应位相同,则结果该位为0,

若对应位不同,则结果该位为1,举例:计算071^052071: 00111001052:(^)00101010071^052: 00010011基本数据类型和表达式位运算——按位异或(^)用途:使特定位翻转(与0异或保持原值,与1异或取反)例如:要使01111010

低四位翻转:

01111010(^) 00001111 01110101基本数据类型和表达式位运算——取反(~)单目运算符,对一个二进制数按位取反。例:025:0000000000010101~025:1111111111101010基本数据类型和表达式位运算——移位左移运算(<<)左移后,低位补0,高位舍弃。右移运算(>>)右移后,低位:舍弃

高位:无符号数:补0

有符号数:补“符号位”基本数据类型和表达式运算符优先级基本数据类型和表达式

(1)运算符的优先级按单目、双目、三目、赋值依次降低。

(2)算术、移位、关系、按位、逻辑运算的优先级依次降低。运算符优先级括号++,--,sizeof*,/,%+,-==,!=位运算&&||?:赋值运算逗号运算低高基本数据类型和表达式2.5

类型转换2.5.1自动类型转换2.5.2强制类型转换2.5.1自动类型转换基本原则: 编译系统自动将低类型数据转换为高类型数据。

longdouble

高doublefloatunsignedlonglongunsigned

低intchar,short

强制类型转换是靠强制类型转换控制运算符实现的,其一般形式为:

数据类型(操作数)(第一种C++格式)或(数据类型)操作数(第二种C++格式)

其中操作数可以是变量名或表达式,功能是把操作数值的数据类型暂时强行转换为指定的数据类型。例如:double(a)、int(x+y)、float(5%3)。2.5.2强制类型转换注意:

数据类型转换仅仅是为了本次操作中对操作数进行一时的转换,并不能改变原数据类型说明中所规定的数据类型。如果使用第二种格式,当操作数为表达式时,表达式应用括号括起来。例如:(int)(x+y)不能写成(int)x+y

。实验二C++基础编程练习编程实现三个数求最大值。编程实现求解一元二次方程的解。C++语言程序设计Programming

inC++

主讲:鲁莹第3章结构化程序设计第三章结构化程序设计3.1C++语言输入输出流3.2

结构化程序设计概述3.3

顺序结构程序设计3.4

选择结构程序设计3.5

循环结构程序设计3.6

程序设计举例3.1C++语言输入输出流在C++中,将数据从一个对象到另一个对象的流动抽象为“流”。从流中获取数据的操作称为提取操作,向流中添加数据的操作称为插入操作。数据的输入输出是通过输入输出I/O流来实现的。

C++提供了I/O流机制,完成对输入输出的操作管理,包括流输入和流输出。cin和cout是预定义的流对象。cin用来处理标准输入,即键盘输入;cout用来处理标准输出,即屏幕输出。由于cin和cout被定义在“iostream.h”头文件中,在使用它们之前,要用预编译命令“#include”将“iostream.h”(即所使用的头文件)包括到用户的源程序中。即源文件中需有:

#include

<iostream.h>1.无格式输出cout

“<<”是预定义的插入符,使用“<<”向cout输出流中插入数据,便可实现在屏幕上显示输出。格式如下:

cout<<表达式1<<表达式2…<<表达式n;

或分成多行:

cout<<表达式1<<表达式2…<<表达式n;//输出效果同单行格式

3.1.1C++语言无格式输入输出

3.1.1C++语言无格式输入输出

2.无格式输入cin

“>>”是预定义的提取符,使用“>>”从cin输入流中提取数据,便可实现键盘输入。格式如下:

cin

>>

数据1>>数据2……>>数据n;

也可写成多行:

cin>>数据1>>数据2……

>>数据n;floatf;longl;cin>>f>>l;按特定的格式进行输入输出,例如对

doublepi=3.1415;

如果希望显示的是3.14,即保留两位小数,且域宽为5个字符并换行,此时如用下面的语句则不能完成。

cout<<pi<<“\n”;

//系统默认显示6位有效数字

为此C++提供了控制符(manipulators),用于对I/O流的格式进行控制。使用控制符,把上述语句改为如下形式则可以完成需求。

cout<<setw(5)<<setprecision(3)<<pi<<endl;

控制符是在头文件iomanip.h中预定义的对象,可以直接插入流中。使用控制符时,要在源文件中添加#include<iomanip.h>预处理命令。常用控制符如表3.1所示。3.1.2C++语言格式输入输出表3.1I/O流的常用控制符

控制符

描述

endldecocthexsetiosflags(ios::uppercase)resetiosflags(ios::uppercase)setw(n)setfill(‘c’)setprecision(n)setiosflags(ios::fixed)setiosflags(ios::scientific)setiosflags(ios::left)setiosflags(ios::right)setiosflags(ios::showpoint)setiosflags(ios::showpos)

插入换行符并刷新流数值数据采用十进制表示(默认)数值数据采用八进制表示数值数据采用十六进制表示设置16进制数大写输出取消16进制数大写输出(默认)设域宽为n个字符(默认实宽)设填充字符为c(默认空格)设显示小数精度为n位(默认6位)用定点方式表示实数用科学计数法表示浮点数左对齐(默认)右对齐强制显示小数点和无效0强制显示正数符号

Whatisexactoutput?#include<iostream>#include<iomanip> //forsetprecision()usingnamespacestd;voidmain(){floatmyNumber=123.4587;

cout<<fixed<<showpoint; //usedecimalformat

//printdecimalpoints

cout<<“Numberis”<<setprecision(3)<<myNumber<<endl;

//setprecision}Outputofprogram:Numberis123.459#include<iomanip> #include<iostream>usingnamespacestd;voidmain(){

int

myNumber=123;

int

yourNumber=5;

cout<<setw(10)<<“Mine” <<setw(10)<<“Yours”<<endl;

cout<<setw(10)<<myNumber <<setw(10)<<yourNumber<<endl;}Whatisexactoutput?12345678901234567890

MineYours1235#include<iostream>#include<iomanip> //forsetprecision()usingnamespacestd;voidmain(){floatmyNumber=123.4;floatyourNumber=3.14159;

cout<<fixed<<showpoint; //usedecimalformat

//printdecimalpoints

cout<<“Numbersare:”<<setprecision(4)<<endl

<<setw(10)<<myNumber<<endl <<setw(10)<<yourNumber<<endl;}Numbersare:123.40003.1416Whatisexactoutput?

floatx=312.0; floaty=4.827;

cout<<fixed<<showpoint;

cout<<setprecision(2)<<setw(10)<<x<<endl

’’’’

3

1

2.00 <<setw(10)<<y<<endl; ’’’’’’

4.83

cout<<setprecision(1)<<setw(10)<<x<<endl

’’’’’

3

1

2.0 <<setw(10)<<y<<endl; ’’’’’’’

4.8

cout<<setprecision(5)<<setw(7)<<x<<endl

312.00000 <<setw(7)<<y<<endl; 4.82700MoreExamples3.2结构化程序设计概述1.结构化程序的基本结构2.结构化程序的设计方法3.结构化程序的组织结构结构化程序的基本结构顺序结构:是一种最简单、最基本的结构,在顺序结构内,各块按照它们出现的先后顺序依次执行。它有一个入口,一个出口。选择结构:选择结构中包含一个判断框,根据给定的条件是否成立而选择执行,它也只具有一个入口和一个出口。循环结构:循环结构又称重复结构,是指在一定条件下反复执行一个程序块的结构。循环结构也是只有一个入口,一个出口。结构化程序的设计方法

结构化程序主要采用自上而下、逐步细化的设计方法,即先全局后局部、先整体后细节、先抽象后具体的设计方法。由于实际问题往往比较复杂,为了提高效率,在进行结构化程序设计时,常常伴随着使用关键部分优先考虑的设计方法。结构化程序的组织结构模块A1模块A1(小功能)模块A2模块A2(小功能)模块A(较小功能)模块CC1C2C3C4模块BB1B2主模块(主功能)图3.1程序模块化示意图顺序结构:顺序结构是最简单、最基本的结构,在顺序结构内,顺序执行各个语句。图3.2表示了一个顺序结构形式。例3.12

ABab图3.2顺序结构示意图3.3顺序结构程序设计【例3.12】顺序结构程序举例(求表达式值)

#include<iostream.h>voidmain(){

int

a,b,result;

cout<<“pleaseinputtwonumber:\n”;

cin>>a;

cin>>b;result=3*a-2*b+1;

cout<<“resultis”<<result<<endl;}程序的运行结果为:

pleaseinputtwonumber:12345↙resultis280在C++语言中,实现顺序结构除了一般的语句如表达式语句、输入输出函数的调用语句外,还有两种特殊形式的语句:空语句和复合语句。。①空语句:C++语言中,只有一个分号的语句称为空语句,即:;它在语法上要占据一个语句的位置,但它没有任何功能操作。②复合语句:复合语句是由花括号{}括起来的多个语句组成,在语法上它等价于一个语句,一般形式为:

{

语句1;

语句2;…

语句n

}程序举例:例3.13、例3.14、例3.15、例3.16。3.3顺序结构程序设计3.4选择结构的实现3.4.1

用if

语句实现选择结构设计3.4.2

用switch语句实现选择结构设计基本形式一:if(表达式)

语句;

其执行过程是:首先计算表达式的值,若不为0,条件判断为真,则执行()后面的语句,否则,不执行()后面的语句。

基本形式二:if(表达式)

语句1;

else

语句2;

其执行过程是:首先计算表达式的值,若不为0,条件判断为真,则执行语句1,否则执行语句2。if语句的基本形式例3.17

输入两个数a,b,输出其中的大数(用if

)

。#include<iostream.h>voidmain(){int

a,b,x;

cin>>a>>b;x=b;

if(a>b)x=a;

cout<<x<<endl;}

#include<iostream.h>voidmain(){int

a,b,x;

cin>>a>>b;

if(a>b)x=a;elsex=b;

cout<<x<<endl;}例3.18用if-else

结构形式改写上例。一般形式(常用):

if(表达式1)

语句1;

elseif

(表达式2)

语句2;

elseif

(表达式3)

语句3;…

elseif

(表达式n)

语句n;

else

语句n+1;例3.19

if语句嵌套的使用。if语句的嵌套真假真真真假假假表达式1表达式2表达式3表达式4语句1语句2语句3语句4语句5if语句的嵌套示意图其他形式:

①if(){

if()语句1;

}

else

语句2;

if()

if

()语句1;

else

语句2;③

If(){if()语句1;

else

语句2;}

else

语句3;例3.20

编写一程序计算函数(用if-else嵌套)。if语句的嵌套

switch语句实现选择结构C++语言提供了switch语句可用来直接处理多分支选择问题,其流程图

语句组1break;语句组2break;语句组nbreak;缺省语句组……表达式case常量1case常量2case常量ndefaultSwitch

语句又称为开关分支语句,它的一般形式如下:

switch(表达式)

{

case常量表达式1:

语句组1;

break;

case

常量表达式2:

语句组2;

break;…

case

常量表达式n:

语句组n;

break;

default

:

语句组n+1;

}

例.21。

switch语句实现选择结构switch允许多个case共同使用一个语句组,其结构为:

switch(表达式){case

常量表达式1:

case

常量表达式m:

语句组m;

break;

case常量表达式m+1:

语句组m+1;

break;

case

常量表达式n:

语句组n;

break;

default

:

语句组n+1;}

switch语句实现选择结构例3.22#include<iostream.h>voidmain(){ chargrade;

cout<<"Pleaseinputgrade=";

cin>>grade; if(grade>='a'&&grade<='z') grade-=32; switch(grade) {

case'A':

case'B':

case'C':cout<<"pass\n";break;

case'D':cout<<"fail\n";break;

default:cout<<"error\n"; }}实习4、5:1.顺序结构程序设计:P253实验一:1~42.选择结构程序设计:

P253实验二:3、4顺序结构与选择结构程序设计3.5循环结构程序设计循环结构:循环结构又称重复结构,是指在一定条件下反复执行一个程序块的结构。循环结构也是只有一个入口,一个出口。根据循环条件的不同,循环结构分为当型循环结构和直到型循环结构两种。

3.5循环结构程序设计循环结构:循环结构又称重复结构,是指在一定条件下反复执行一个程序块的结构。循环结构也是只有一个入口,一个出口。根据循环条件的不同,循环结构分为当型循环结构和直到型循环结构两种。

A条件PabYN图3.6当型循环结构流程图图3.7直到型循环结构流程图abNY条件PA①当型循环的结构:当给定的条件p成立时,执行A框操作,执行完A操作后,再判断p条件是否成立,如果成立,再次执行A操作,如此重复执行A操作,直到判断p条件不成立才停止循环。此时不执行A操作,而从出口b脱离循环结构。②直到型循环的结构:先执行A框操作,然后判断给定条件p是否成立,如果不成立,再次执行A操作;然后再对p进行判断,如此反复,直到给定的p条件成立为止。此时不再执行A框,从出口b脱离循环。

一个循环结构应由四个主要部分构成:

循环的工作部分。即循环体,完成循环程序的主要工作。

②循环的修改部分。它保证循环体在循环过程中,有关的量能按一定的规律变化(循环变量)。

③循环的控制部分。它保证循环程序按规定的循环条件控制循环正确进行(循环条件)。

④循环的初始部分。它是保证循环结构能够开始执行的语句,往往编写在程序的开头部分,逻辑上先从这一部分开始执行(初始条件)。

3.5.1

while语句3.5.2

do-while语句3.5.3

for语句3.5.4

跳转语句break和continue3.5.5

循环的嵌套3.5循环结构程序设计3.5.1while语句一般形式:

while(表达式)

语句;//循环体执行过程:首先判断括号内最初表达式的值,如为0则跳到循环体外;如为非0,就执行语句(循环体),执行完循环体后再次判断表达式的值…,如此反复进行直到(表达式)的值为假时结束while循环。

例3.23编写程序计算1+2+3+...+99+100

#include<iostream.h>

voidmain(){

int

sum,n;n=1;//初始部分(初始条件)

sum=0;

while(n<=100)//控制部分(循环条件)

{

//工作部分(循环体)

sum+=n;n++;//修改部分(循环变量)

}

cout<<"sum="<<sum<<endl;}运行结果为:sum=5050

#include<iostream.h>

voidmain(){

intx,c1=0,c2=0;

cout<<“请输入一个正整数(<=0退出):”;

cin>>x;

while(x>0)

{

if(x<60)c1++;

elsec2++;

cout<<“请输入一个正整数(<=0退出):”;

cin>>x;}

cout<<“小于60的正整数个数:”<<c1<<endl;

cout<<“大于60的正整数个数:”<<c2<<endl;}

例3.24分别统计出键入的所有正整数中<60

和>=60的数据的个数。3.5.2do-while语句一般形式:

do

{

语句;//循环体

}while(表达式);

do-while与while比较:do-while语句是先执行循环体,再进行判断,无论条件是否成立,do-while语句至少执行循环体一次,它是直到型循环。而while语句则要先对条件进行判断,只有当条件成立才执行循环体,因此它是当型循环。对于一个循环问题,我们既可以用当型循环也可以用直到型循环来解决问题。

#include<iostream.h>//用do-while结构

voidmain(){

int

sum,n;n=1;//初始部分(初始条件)

sum=0;

do{//工作部分(循环体)

sum+=n;n++;//修改部分(循环变量)

}while(n<=100);

//控制部分(循环条件)

cout<<"sum="<<sum<<endl;}

例3.25编写程序计算1+2+3+...+99+1003.5.3for语句一般形式:

for(表达式1;表达式2;表达式3){

语句;

温馨提示

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

评论

0/150

提交评论