东南大学C 课件第2章c++简单程序设计_第1页
东南大学C 课件第2章c++简单程序设计_第2页
东南大学C 课件第2章c++简单程序设计_第3页
东南大学C 课件第2章c++简单程序设计_第4页
东南大学C 课件第2章c++简单程序设计_第5页
已阅读5页,还剩157页未读 继续免费阅读

下载本文档

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

文档简介

第二章

C++简单程序设计

*本章主要内容

-C++语言概述

-基本数据类型和表达式

■数据的输入与输出

-算法的基本控制结构

-自定义数据类型

*2.1C++语言概述

2.1.1C++语言的产生

-C++是从c语言发展演变而来的:

C语言的开发史源于高级语言和UNIX操作系统的发展要求。

早期的系统程序设计,使用的是汇编语言,其优点:

(1)能体现计算机硬件指令级的特性,表达能力强;

(2)运行效率高。

其缺点:可读性,可移植性及描述问题的性能不如高级语言。

这样很自然有如下想法:能否用具有足够表达能力的高级语言

来进行系统软件的设计呢?Bell实验室做了这一尝试。

1970:在PDP・11/2()机上实现了B语言,并用它编写了UNIX系统的

实用程序。

Bv—BCPLv-CPLv-ALGOL60

在B语言基础上,改进其缺陷,发展出了C语言,

其设计目标:

(1)保持BCPL和B的精练性及接近硬件的特点

(2)恢复这些语言失去的通用性

1972:第一个C编译投入使用

1973:UNIX用C改写,加入多道程序功能,发生质变

现在,UNIX已得到广泛推广,成为公认的第一标准的操作系统

随着UNIX的进一步开发,C也交织在一起被迅速推广。

1983:对C扩充,发展为C++。

-C++语言的标准化工作从1989年开始,于1994

年制定了ANSIC++标准草案。以后又经过不断

完善,成为目前的C++。

*212C++的特点

-全面兼容c

♦它保持了C的简洁、高效和接近汇编语言等特点

♦对C的类型系统进行了改革和扩充

♦C++也支持面向过程的程序设计,不是一个纯

正的面向对象的语言

-支持面向对象的方法

*2.1.3C++程序实例一例24

//thisisasimplestprogram.

#include<iostream.h>

voidmain(void)

cout«"Hello!\n";

cout«"Welcometoc++!\n";

)

说明:(i)注解

(2)编译预处理

(3)main函数

(4)语句括号{}

(5)语句分号;

*C++程序实例

运行结果:

Hello!

WelcometoC++!

2.1.4C++字符集

语言的最基本单位是字符:

字符--->词--->语句--->函数--->程序。

字符集是构成C++语言的基本元素

■大小写的英文字母:A~Z,a〜z

-数字字符:0〜9

-特殊字符:

空格!#%-&*

_(下划线)+二-

7>/\'〃

7

,()[]{}

*2.1.5词法记号

-词法记号是最小的词法单位

-1、关键字C++预定义的单词。是指C++中有特殊含义

的字,是不能重新定义的。程序员不可用之作为自己定

义的变量或函数的名字。

类别关键字个数举例

ANSIC32char,for等

ANSIC++61(增加29个)class,public等

BC/AC扩展了一些asm等

■2、标识符程序员声明的单词,它命名程序正文中的

■一些实体。

♦标识符的构成规则

曾以大写字母、小写字母或下划线(_)开始。

年可以由以大写字母、小写字母、下划线(_)或数字0~9组成。

-大写字母和小写字母代表不同的标识符。

历例Rectangle>Draw、JineNo.1

3、文字在程序中直接使用布号表示的数据

"包括数字、字符、字符串和布尔文字

4、操作符用于实现各种运算的符号。+-

5、分隔符用于分隔各个词法记号或程序正文:()

{},:;

6、空白:空格、制表符(TAB键产生的字符)、换行符

(Enter键所产生的字符)和注释的总称。

♦C++程序书写自由

♦〃、/**/

*2.2基本数据类型和表达式

-2.2.1基本数据类型

数据:是程序命令操作的对象

数据类型:是指将数据根据表达形式的不同而划分的类别。

C++的数据类型一般分为如下几种:

基本数据类型-实型(浮点型)

逻辑型(布尔型)

数据类型数组

指针

空类型

'非基本数据类结构

型(用户定义数据类联合

型)

枚举

数据类型修饰符:

short"ngunsignedsigned

无符号整型unsignedint

例:无符号长整型unsignedlong

无符号短整型unsignedshort

至于它们之间的差异,请看下表(p24):(16位计算机)

类型所占位数数的范围

int16-32768〜32767

short[int]16-32768〜32767

long[int]32-2147483648〜2147483647

unsigned[inti160〜65535

unsignedshort160〜65535

unsignedlong320〜4294967295

*

1

011111111111111

+.3145678923

数符

小数部分指数

注意:

(1)整型和实型的几种不同方式

(2)注意各种数据类型的取值范围。

(3)注意C无布尔类型。C语言在表达逻辑运算的结果时,用

整数0代表逻辑“假”,用非0的整数值(如1)表示逻辑“真”

OC++中增添了布尔类型bool,但并非每个C++编译器都支持

O

用睇博(数据类型)可以确定数据类型的字节长度

♦cout«usizeofintisu«sizeof(int)«endl;

C++强类型语言一要求程序设计者在使用数据

之前对数据的类型进行声明。

数据类型

*常量与变量

#include<iostream.h>

voidmain(void)

constintPRICE=30;

变量先定intnum,total;

义后使用、^floatv,r,h;

、mim=4n-付亏

total=num*PRICE;

cout«total«endl;

变量r=2.5;

h=3.2;

v=3.14159*r*r*h;

cout«v«endl;

}

*2.2.2常量

常量——就是其值不能被改变的量,它相当于数学中的常数。

在程序中出现的分为一般常量和符号常量两种。

一般常量_____________________

intsum;

让我们来看右

sum=3+5;

边的程序段:

printf(66sum=%d?\sum);

其中的“3”和“5”都是一般常量。

常量由于数据类型整型常量

的不同而被分为:实型常量

字符常量

字符串常量

*1、整型常量

整义常量即以文字形式出现的整数。

分十进制整数、八进制整数和十六进制整数,

注意它们的书写形式。

整型常量类型表达形式有无正负

十进制957有正负123L1231长整型

八进制01667只有正

十六进制0xB7只有正

★/2、实型常量

实型常量即以文字形式出现的实数,又称浮点型。

它分一般形式和指数形式。

实型常量类型表达形式

一般形式0.123

指数形式123e5

3:

(1)指数形式的书写。E或e的前面必须要有数字,且E后

面的指数必须为整数。

例:e3

2.1e3.5

.e3

⑵一个实型常数缺省说明为double,如表示float型,则

在实数后加f或F。

例34.5f34.5

*3、字符常量

单引号括起来的一个字符例‘公

・每个字符常数占一个字节

・每个字符常数有一个编码数字值一ASCH码表中的码值

例如:'A':65'B':66'a':976b9:98...

・字符常量可象数量一样进行运行、比较

例1:if(c>=6A,&&c<=6Z5)c=c+6a,-6A9;

将字符变量c从大写字母转为小写字母。

例2:0・0=0

,2,・,0,=2

如果c是一数字字符,则就是它对应数字的数值

*转义字符

•非图形字符(如回车、制表符等)及、“等字符,因它们有特殊作用,所以

表示这些字符本身时,应:p25o

\n表换行

・无论是不可显示字符还是一般字符,都可用8进制数、16进制数表示

,\ddd:一至三位8进制数。

,\xhh:一至二位16进制数。

例如:'\001,表示码值为(01)8的ASCII字符。

'A,也可用表示

'\(F为空白符,即NULL,码值为0,在C语言中是字符串的结束

标志。(与'(F和空格符不同)

例:coutvv“\x07operating\tsystem\n”;

operatingsystem

■字符数据的使用方法例:

inta=6b5;

♦字符数据和整型数据之间

可以运算。charc=97;

cout«a«endl;

♦字符数据与整型数据可以

互相赋值。cout«c«endl;

输出:

98

4、字符串常量

完母用型常量是用双引号括起来的一个或多个字符。

例如,将1用双引号括起来,此时“1”代表的是一个字符串型常量,

与字符型常量’1,也是有区别的。

C++规定以字符‘\0,作为字符串结束标志。如,一个字符串“HELLO”,在内存

中以八0”为结尾。“\0”在输出时不作显示,只用来表示字符串的结束。

注意“P”与?不同。前者为字符串,在机内存储形式

为IPI\0I,而就是一常数P。

字符串型常量“HELLO”H\0

*5符号常量

#definePI3.14159这是一个知道圆半径,求圆周长、

圆面积的简单C程序。其中的就是

main()

符号常量,它的值在一开始就被预处理

(命令“#defiiie”定义为实数了,

intr;故程序在运行和编译时会自动用

floatL,S;“3.14159”来替代PI。

r=10;

符号常量比起一般常量来,不但使用

L=2*PI*r;方便,实际值容易修改,而且更形象

S=PI*r*r;化,便于记忆。

printf(“周长=%八11”人);

printf(“面积=%八正卓);

}

★★6数据类型口,皿一

¥—布尔型数据

.布尔型变量的说明:

例:boolflag;

.布尔型数据的取值:

只有false和true两个值

*C++中:

constfloatpi=3.14159;

*常量定义中初始化的值可以是一个常量表达式:

constintsize=100*sizeof(int);

constintnumber=max(15,23);(错)

注意:#define与const的区别

*2.2.3变量

变量是什么?变量——程序在运行过程中,其值

会发生改变的量。

/变量名length

变量、变量值23

'变量类型int

1、命名

C++规定必须以字母或下划线打头,后面跟字母、数字或下

划线(如:a,Z_5e,_D7d等),并且不能与保留字、函数名、

类名等C++专用名相同(如char,for,int等)。

注意:

(a)长度:早期的C编译程序只认前8个字符。VC允许

256个字符。但一般不要超过31个字符为宜

(b)约定:•变量名、函数名、和数据类型名等用小写字母

•自定义的类型名(如类)、符号常量名及宏

用大写字母;

•下划线开头的名字常为系统程序(库函数用),

用户一般不用。

©要有意义:如用Sum表示“求和变量”,不要用aaa,Al,

B12之类名字。

例:my_car小写

my_Car骆驼

iMyCar匈牙利标识法(WINDOWS标准命名法)

*下面我们看一段关于变量的程序:

程序中的num],niim2和sum者B

voidmain()

是变量。它们的值在程序的运

(

行过程中都发生了变化。变量

intnuml,num29sum;

numl=10;num2=25;定义后,各变量的初值都是不

sum=numl+num2;确定的。numl的第一个确切

cout«66sum=66«sum«endl;值是10,当再次给numl赋值

numl=-5;num2=numl+3;

sum=numl+num2;时,numl的值又变成-5。其

cout«66sum=u«sum«endl;他两个变量的变化情况类似。

N

Um

2、变量的定义

变量:需要定义,说明其存储属性和数据类型。

externdouble

register

auto

例:staticintnward=0,nkayword;

同一语句中,不能混合定义不同类型的变量。

*变量的存储类型

■auto存储类

♦属手承矍填立的,其存储空间可以被若干变

■register存储类

♦存放在通用寄存器中。

■extern存储类

♦在所有函数和程序段中都可引用。

■static存储类

♦在内衣中盘以图定地址存放的,在整个程序

屋仃期间都有效。

变量赋值与初始化

(1)doublearea,radius=23;

(2)doublearea,radius;

radius=23;

2.2.4算术运算符与算术表达式

■表达式:

♦一个常量或标识对象的标识符是一个最简单的表达式,其值

是常量或对象的值

♦一个表达式的值可以用来参与其它操作,即用作其它运算符

的操作数,这就形成了更复杂的表达式

♦包含在括号中的表达式仍是一个表达式,其类型和值于未加

括号时的表达式相同

-算术表达式:

♦由算术运算符、操作数和括号构成的表达式称为算术表达式

♦a+b+(c-b)/2+5

■1、基本算术运算符

+-*/%(取余)

4___________(若整数相除,结果取

整)

■优先级与结合性

先乘除,后加减,同级自左至右

P33

(1)/整除

5/2=2

5.0/2.0=2.5

若/的两操作数都为整数,则为整除:

例inti=15;

floatf;

f=i/10;

结果为:f=l

如果将第三条语句改为

f=(float)i/10;W=i/10.0;

则结果为:f=L5

在C++语言中,表达式(7/3+1)+5/6的值是()。

A)2B)3C)4D)不能确定

B

*(2.)%取余

(余的符号与被除数相同,不允许对浮点数操作)

3%4=34%4=0

例ttinclude<iostream.h>

voidmain()

{intn;

n=40%5;cout<<〃40%5:z/<<n<<endl;//(0)

n=40%7;cout<<〃40%7:<<n<<endl;//(5)

n=40%-7;cout<<〃40%-7:<<n<<endl;//(5)

n=-40%7;cout<<〃-40%7:<<n<<endl;//(-5)

n=-40%-7;cout<<〃-40%-7:<<n<<endl;//(-5)

*2、增量和减量++,

(1.)a++

取a作为表达式的值,然后a=a+1

(2.)++a

先a=a+1;然后取a作为表达式的值

(3.)a---取a;a=a—1

(4.)---aa=a—1,取a

例:inta=3;

intb=++a;44

4t4<

cout<<a<<<<b<<endl;54

intc=a++;

cout<<a<<u4<<<c<<endl;

.赋福运算二

V赋值运算符用于将一个数据传给一个变量。

■例如:intx;x=5;将值5传给变量X。其中二号即赋值运算符。

■A:(1)双目运算符,从右到左d二a二b

.(2)赋值操作是一个表达式,

-每个表达式在求值后都有一个确定的值,其值

为赋值号左边表达式的值

■例:cout<<(x=5)<<endl;

-(3)当赋值号两边类型不一至时,根据左边类型转

inta=10;floatx=70000.5;

x=a;

将a的值10赋给x,x的值为lO.Oo

inta=10;floatx=70000.5;a=x;

将x的值70000.5赋给a,但70000.5超过了int

的取值范围,于是将超过的部分扔掉了,a是多少不

知道了。

特别注意,上面的赋值语句,编译时是可以通过的。

*复合的赋值运算符

■有10种复合运算符:

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

«=»=&=A=l=

■例:a+=3等价于a=a+3

等价于x=x*(y+8)

赋值运算符和赋值表达式

—赋值表达式举例

a=5表达式值为5

a=b=c=5表达式值为5‘a’b,c均为5

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

a=(b=4)+(c=6)

表达式值为10,a为10,b为4,c为6

a=(b=10)/(c=2)

表达式值为5,a为5,b为10,c为2

a+=a-=a*a相当于:a=a+(a=a・a*a)

例:x=6;

B

x+二X-=x*x;

若X为整型变量,则上述语句执行后x的值是—(4)_。

A.36B.-60C.60D.—24

4、逗号运算和逗号表达式

■格式:

表达式1,表达式2

■求解顺序及结果:

先求解1,再求解2,最终结果为表达式2的值

■例1

a=3*5.a*4最终结果为60

例2inta,b,c;

d=(a=l,b=a+2,c=b+3);

cout«d«endl;

6

*、关系运算与关系表达式

-用关系运算符将两个表达式连接起来,就是关系表达

-关系运算是比较简单的一种逻辑运算,优先次序为:

vv=>>===!=

优先级相同(高)优先级相同(低)

-关系表达式是一种最简单的逻辑表达式

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

■例如:a>b,c<=a+b,x+y==3

*逻辑运算与逻辑表达式

-逻辑运算符:

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

优先次序:高一低

-逻辑表达式

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

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

falseo

*

a!a

truefalse

falsetrue

aba||b

111

101

011

000

优先级:

*/%;

+-;

><>=<=

&&

注意:

(1).比较运算符

==与=

if(x==9)

cout<<“xisnoto'n";

if(x=9)

cout<<“Xisnoto'n"

(2).不等于运算符

if(x!=9)

if(x=!9)

*

(3).逻辑非

if(!(x==9))

例.!cx>ax—6若cx=15,ax=5

(!ex)>(ax—6)

!(cx>ax—6)

(4).10>=X>=5

若写成5<=X<=10从左到右(衡为1)

X>=5&&X<=10

例:a<b&&x>y||a<b-!c

(a<b)&&(x>y)||(a<(b-(!c))

若x,y,z的初值均为1,则执行表达式w=++x||++y&&++z

后,x,y,z的值分别为o

A)x=l,y=l,z=2B)x=2,y=2,z=2

C)x=2,y=l,z=2D)x=2,y=l,z=l(D)

*6、条件运算符与条件表达式

.一般形式:

表达式1?表达式2:表达式3

表达式1必须是bool类型

■执行顺序:

♦先求解表达式1,

♦若表达式1的值为true,则求解表达式2,表达式2的值为

最终结果

♦若表达式1的值为false,则求解表达式3,表达式3的值

为最终结果

例x=a<b?a:b该例是IF…ELSE语句的一个替代

if(a<b)

x=a;

else

x=b;

注意:(1)条件运算符优于赋值运算符比关系运算符和算术运算符都低

例max=(a>b)?a:b+l

(2)条件运算符的结合性为“自右向左”

{Ji]a>b?a:c>d?c:d即a>b?a:(c>d?c:d)

(3)条件表达式与一般if的语句的关系

cout«a>b?a:b;

(4)表达式2、3的类型可以不同,条件表达式的最终类型为2

和3中较高的类型。

/7、sizeof操作符

・语法形式

sizeof(类型名)

或sizeof(表达式)

・结果值:

“类型名”所指定的类型或“表达式”的结

果类型所占的字节数。

■例:cout«sizeof(double)«endl;

*8、位运算一按位与(&)

-运算规则

♦将两个运算量的每一个位进行逻辑与操作

-举例:计算3&5

3:00000011

5:(&)00000101

3&5:00000001

■用途:

♦将某一位置0,其它位不变。例如:

将char型变量a的最低位置0:a=a&0376;

♦取指定位。

例如:有charc;inta;

取出a的低字节,置于c中:c=a&0377;

*位运算——按位或()

-运算规则

♦将两个运算量的每一个位进行逻辑或操作

■举例:计算3|5

3:00000011

5:(1)00000101

3|5:00000111

-用途:

♦将某些位置1,其它位不变。

例如:将int型变量a的低字节置1:

a=a|Oxff;

*位运算一按位异或O

-运算规则

♦两个操作数进行异或:

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

若对应位不同,则结果该位为1,

■举例:计算07厂例2

071:00111001

052:「)00101010

07T052:00010011

*位运算一按位异或C)

■用途:

♦使特定位翻转(与0异或保持原值,与I异或取反)

例如:要使01111010低四位翻转:

01111010

n00001111

01110101

*位运算―取反(〜)

单目运算符:对一个二进制数按位取反。

例:025:0000000000010101

〜025:1111111111101010

*位运算一移位

.左移运算(«)

左移后,低位补0,高位舍弃。

.右移运算(»)

右移后,低位:舍弃

高位:无符号数:补0

有符号数:补“符号位”

★例1:

■chara=-8;

■cout«int(a)«endl;

■cout«(a»2)«endl;

11111000

11111110

oo

o

o

oo

oo

2oo

oo

oo

v

v

CM

*9、运算符优先级

括号高

++,■・,sizeof

*,/,%

十,■

——।I-

JB

位运算

&&

II

?;

限值运算

逗号运算

10、混合运算时数据类型的转换

**——隐含转换

■一些二元运算符(算术运算符、关系运算符、逻辑运算符、位运算

符和赋值运算符)要求两个操作数的类型一致。

■在算术运算和关系运算中如果参与运算的操作数类型不一致,编译

系统会自动对数据进行转换(即隐含转换),基本原则是将低类型

数据转换为高类型数据。

charshortintunsignedlongunsignedlongfloatdouble

低高

混合运算时数据类型的转换

*——隐含转换

-逻辑运算要求参与运算的操作数必须是bool型,如果操

作数是其它类型,编译系统会自动将非。数据转换为true,

0转换为false。

■位运算的操作数必须是整数,当二元位运算的操作数是

不同类型的整数时,也会自动进行类型转换,

■赋值运算要求左值与右值的类型相同,若类型不同,编

译系统会自动律将右值转换为左值的类型。

★混合运算时数据类型的转换

——强制类型转换

■语法形式:

类型说明符(表达式)

(类型说明符)表达式

-强制类型转换的作用是将表达式的结果类型转换

为类型说明符所指定的类型。

注:inta=16,b=5;

floatx=10;

x=(float)a+a/b;(19.0)

*2.3赋值语句

■格式:

赋值表达式;

.赋值语句与赋值表达式的区别:

赋值表达式可以包含在其它表达式中,

而赋值语句不可。

例:if((a=b)>0)t=a;

不可写为:if((a=b;)>O)t=a;

*2.4简单的输入、输出

这是C++中新加的非常简单易用的输入、输出方式,

C++中没有专门的输入输出语句,是用I/O流类来实现。

在程序的开头增加一行:

#include<iostream.h>

1)用插入操作符“VV”向标准输出流cout中插入字符。

・向标准输出设备(显示器)输出

例:intx;

cout«ux=u«x;

2)用抽取操作符“>>”从标准输入流cin中抽取字符

・从标准输入设备(键盘)输入

例:intx;

cin»x;

inta,b;

cin»a»b;

3)使用控制符

有时缺省输出格式不能满足要求,这时可以用控制符控制输出的格

式。P36表2・6o

在程序的开头增加一行:

#include<iomanip.h>

■#include<iostream.h>

■#include<iomanip.h>

■voidmain()

■cout«setw(5)«setprecision(3)«3.1415«endl;

■)

■3.14

2.5算法的基本控制结构

问题的提出:(1)-1(x<0)

y=o(x=o)

1(x>0)

(2)统计任意一个人群的平均身高

算法

算法的基本控制结构:

顺序结构

•分支结构

循环结构

.程序流程图

★★2.4.1if语句

—三种形式

(表达式)语句

例:if(x>y)cout«x;

if(表达式)语句1else语句2

例:if(x>y)cout«x;

elsecout«y;

if(表达式1)语句1

elseif(表达式2)语句2

elseif(表达式3)语句3

else语句n

1.IF(条件表达式)

语句;

或IF(条件表达式)

{语句;

或IF(条件表达式);空语句作IF中的语句

语句;

例(判输入是否合理)

ttinclude<iostream.h>

voidmain()

{unsignedintage;

cout<<"Whatisthestudent,sage...

cin>>age;

if(age<10)

cout<<"Theagemaybewrong”;

例判闰年

ttinclude<iostream.h>

voidmain()

{intyear;

cout<<"Pleaseinputayear...”;

cin>>year;

//thinkaboutthesequenceofthelogicalexpression

if(year%4==0&&year%100!=0||year%400==0)

cout<<〃Theyearisleapyear〃;

else

cout<<"Theyearisn'tleapyear

if语句

*-----嵌套

-一般形式

if()

if()语句1

else语句2

else

if()语句3

else语句4

■注意

语句1、2、3、4可以是复合语句,每层的if与

else配对,或用{}来确定层次关系。

intx=20;

If语句的嵌套二义性

if(x>=0)

if(x<50)因为if可以嵌套,所有在嵌套时有时会出歧义,

cout«66xisok\nw;例如上例中,else是与第一个if配对,

else还是与第二个if配对?

cout«66xisnotok\n^^;这种时候,系统就认为:else与最近的一个if相对应

二冰K

if(I%3==0)

if(I%7==0)

coutVVIVVendl;〃输出能被3整除,能被7整除

else

cout«I<<endl;〃输出能被3整除,不能被7整除

(2)if(I%3==0)

{if(I%7==0)

cout«I«endl;〃输出能被3整除,能被7整除

}

else

cout«I<<endl;//输出不能被3整除不管是否被7整除

*

例2・3

输入两个整数,比较两个数的大小。

*#i*nclude<iostream.h>

voidmain()

(

int*,y;

cout«nEnterxandy:n;

cin»x»y;

if(x!=y)

if(x>y)

cout«nx>yn«endl;

else

cout«nx<yn«endl;

else

cout«nx=yn«endl;

)

运行结果1:

Enterxandy:58

x<y

运行结果2:

Enterxandy:88

x=y

运行结果3:

Enterxandy:128

x>y

■功能:在三个数中取最大的

■#include<iostream.h>

■voidmain()

■{intx,y,z;

■cin»x»y»z;

■intmax=x;

■if(z>y)

■{if(z>x)

rout«max

■max=z;}

■else

{if(y>x)

■#include<iostream.h>

■voidmain()

■intx,y,z;

■cin»x»y»z;

■intmax=x;

■If(y>max)

■max=y;

■if(z>max)

max=z;

amount<10

//total=5.Mamount10<=amount<=100

5.68*0.95*amountamount>100

铲就Feaf昨h>

voidmain()

unsignedintamount=0;

floattotal=0;

cout«nPleaseinputanumber:n;

cin»amount;

if(amount<10)

total=5.88*long(amount);

else

if(amount<=100)

total=5.68*long(amount);

else

total=5.68*0.95*long(amount);

cout«"Paythemoney:n«total«nPleasen;

★如何解决多分之问题?

if(条件1)

语句1;

elseif(条件2)

语句2;

elseif(条件3)

语句3;

语句N;

intgrade;

if(grade>=85&&grade<=l00)

cout«wa\n,9;

elseif(grade>=70&&grade<85)

cout«Mb\nw;

elseif(grade>=60&&grade<75)

coutvv"c\n”;

elseif(grade<60)

cout«66d\nw;

else

coutvv“eiror\n”;

2.4.2switch语句

-一般形式

switch(表达式)可以是整型、字符型、枚举型

case常量表达式1语句1

常量表达式

case2每个常量表达式的值

不能相同,次序不影

case常量表达式n语句n响执行结果。

default:语句n+

可以是多个语句,但不

执行顺序必用{}。

以case中的常量表达式值为入口标号,由此开始顺序执

行。因此,每个case分支最后应该加break语句。

switch(表达式)

case常量表达式1:语句组1

case常量表达式2:语句组2

•••

case常量表达式N:语句组N

default::语句组N+1

*特殊的多分支结构

例2・4

输入一个0~6的整数,转换成星期输出。

#include<iostream.h>

voidmain(void)

{intday;

cin»day;

switch(day)

(

case0:cout«"Sunday"«endl;

break;

case1:cout«"Monday"«endl;

break;

case2:cout«"Tuesday"«endl;

break;

¥cas*e3:cout«"Wednesday"«endl;

break;

case4:cout«"Thursday"«endl;

break;

case5:cout«"Friday"«endl;

break;

case6:cout«"Saturday"«endl;

break;

default:

cout«"DayoutofrangeSunday..Saturday"

«endl;

break;

}

)

使用switch语句应注意的问题

(1)switch后面的(表达式)只能是整型、字符型或枚举型,

case常量表达式的类型应与其匹配。

floatf=4.0

switch(f)

(2)当表达式的值等于某一个case后面的“常量表达式”时,就执行此case

后面的语句;当所有case后面的“常量表达式”时都没有与表达式的值相

则执行default后面的语句,如没有default语句则跳过switch语句

case语句起标方作用:

(A)标号不能重名

case6A9:cout«.....;

case65:cout«.....;

(B)不改变控制流程,力Inbreak中止switch

case'A':cout〈〈“85T00\n”;break;

case'B':cout〈〈“70-84\n'';break;

case'C':cout<<“60-69\n”;break;

(C)各个case(包括default)的出现次序可以任意(力Dbrealk)

(D)多个case可以共用一组执行语句

case,A':

case,B':

case,C':cout〈〈”60up\n99;break;

但:case'A',6B9,6C9:cout<<6660up\nw;break;(错)

(4)switch可以嵌套

inti,j

switch(i)

(

case1:........

case2:........

case3:

switch(j)

case1:

caes2:

)

case4:...

}

与可以互相补冲

(5)ifswitchcase100:

intgrade;

if(grade>=85&&grade<=l00)case99

coutvv"a\n”;

elseif(grade>=70&&grade<85)

coutvv"b\n";case85:coutvv“a\n”;

elseif(grade>=60&&grade<75)case84:

cout«Mc\nw;

elseif(grade<60)case83:

cout«ud\n,9;

else

coutw“error'll";case75:cout«66b\nw;

#include<iostream.h>

#lifcHae=<stdtin;h>

voidmain()

{floatnuml,num2,result;charoper;

cin»numl»oper»num2;

switch(oper)

{caseresult=numl+num2;break;

caseresult=numl-num2;break;

caseresult=numl*num2;break;

caseresult=numl/num2;break;

default:cout«n\nillegaloperator11;exit(l);

cout«result;

军港口何有效地完成重复

1、while语句

•形式

while(表达式)语句

执行顺序

先判断表达式的值,为true时,再执行语句。

例2・5

求自然数1~10之和

分析:本题需要用累加算法,累加过程是一个循环

过程,可以用while语句实现。

includ*os京am.h>

oidmain()

inti(1),sum(O);初始化(循环变量)

while(i<=10)继续条件

sum+=i;

循环体

i++;

)改变循环变量

cout«"sum="«sum

«endl;

)运行结果:

sum=55

whi1e(i<=10)whi1e(sum+=i++,iV=l0);

sum+=i++;

do-while语句

・一般形式

do

while

执行顺序

先执行循环体语句,后判断条件。

表达式为true时,继续执行循环体

与while语句的比较:

While语句执行顺序

先判断表达式的值,为true时,

再执行语句

例2・6

输入一个整数,将各位数字反转后输出。

#includetream.h>

voidmain(void)

intnrright__digit,newnum=0;

cout«"Enterthenumber:

cin»n;

cou

温馨提示

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

评论

0/150

提交评论