46
教教教教 C++ 教教教教教 / 教教教教教 cin/cout C++ 教教教教教 教教教教教教教 1 教3教 教教教教教教教教教教教教

第3章 程序结构和简单的输入输出

Embed Size (px)

DESCRIPTION

第3章 程序结构和简单的输入输出. 教学内容 C++ 的标准输入 /输出 流对象 cin /cout C++ 程序的构成 顺序结构的实现. 第3章 程序结构和简单的输入输出. 重点、难点 cin,cout 顺序结构的实现. 第3章 程序结构和简单的输入输出. 教学目标 熟练掌握 C++ 的标准输入输出流对象 熟练掌握 C++ 程序的构成 熟练掌握 C++ 的3种基本结构. 第3章 程序结构和简单的输入输出. 3. 1 C++ 的输出 3. 2 C++ 的输入 3. 3 C++ 语句概述 3. 4 程序的三种基本结构 - PowerPoint PPT Presentation

Citation preview

Page 1: 第3章   程序结构和简单的输入输出

教学内容

C++ 的标准输入 / 输出流对象 cin/cout

C++ 程序的构成

顺序结构的实现

1

第 3 章 程序结构和简单的输入输出

Page 2: 第3章   程序结构和简单的输入输出

重点、难点

cin,cout

顺序结构的实现

2

第 3 章程序结构和简单的输入输出

Page 3: 第3章   程序结构和简单的输入输出

教学目标

熟练掌握 C++ 的标准输入输出流对象

熟练掌握 C++ 程序的构成

熟练掌握 C++ 的 3 种基本结构

3

第 3 章程序结构和简单的输入输出

Page 4: 第3章   程序结构和简单的输入输出

3.1 C++ 的输出3.2 C++ 的输入3.3 C++ 语句概述3.4 程序的三种基本结构3.5 顺序结构的实现

4

第 3 章程序结构和简单的输入输出

Page 5: 第3章   程序结构和简单的输入输出

C++ 的输出和输入是用“流” (stream) 的方式实现的。

流是指来自设备或传送给设备的数据流。

C++ 的输入输出流库中提供了标准输入 cin 和标准输出 cout 流对象。

iostream 5

C++ 的输入与输出

Page 6: 第3章   程序结构和简单的输入输出

cout 是标准输出流对象,用于向标准输出设备 --- 显示器输出数据。

数据的输出是通过插入运算符 << 将字符插入到输出流中的。

6

3.1 标准输出流 cout

Page 7: 第3章   程序结构和简单的输入输出

7

标准输出流 cout

【格式】 cout<< 表达式 1<< 表达式 2… ;

【说明】( 1 )在一个 cout 中,可以连续使用多个插入运算符<< 输出多个数据。( 2 )输出多个表达式时,各表达式之间无空格输出。( 3 ) cout 可以输出任何基本类型的数据。

Page 8: 第3章   程序结构和简单的输入输出

8

【例 3-1-1 】标准输出流 cout 示例

#include <iostream>

using namespace std;void main(){char ch1,ch2; int x,y; cout<<"input ch1,ch2="; cin>>ch1>>ch2; x=ch2-ch1; y=ch1+ch2; cout<<"x="<<x<<endl; cout<<"y="<<y<<endl;}

结果:

input ch1,ch2=h t

x=12

y=220

Page 9: 第3章   程序结构和简单的输入输出

9

【例 3-1-2 】标准输出流 cout 示例

#include <iostream>

using namespace std;void main(){ int i=3; float r=2.0,p; cout<<"2*-i="<<2*-i<<endl; i=r/i; cout<<"i=r/i="<<i<< '\n'; r/=(i+3); cout<<"r=r/(i+3)="<<r<<endl; i=2%3; cout<<"i=2%3="<<i<<endl;

r=6/3; cout<<"r="<<r<<ends; p=6.0/3; cout<<"p="<<p<<endl; }

结果: 2*-i=-6i=r/i=0r=r/(i+3)=0.666667i=2%3=2r=2 p=2

Page 10: 第3章   程序结构和简单的输入输出

10

标准输出流 cout

【说明】

( 1 )操纵符 ends 作用于输出流时,输出一个空字符 '\0' 。

( 2 )操纵符 endl 作用于输出流时,输出一个回车换行符 '\n' ,并刷新流。

( 3 )输出浮点型数据时,插入运算符试图输出占最小空间的值,所以输出 6.0/3 的值是 2 ,而不是 2.0 。

Page 11: 第3章   程序结构和简单的输入输出

11

【例 3-1-3 】标准输出流 cout(oct,hex) 示例

#include <iostream>

using namespace std;void main(){ int a=3,m,k; m=(a=3*5,4*6,a*5 ); int i=5; k=(i++,i==2); cout<<"i="<<i<<endl; cout<<"k="<<k<<endl; cout<<"a="<<a<<endl; cout<<"m="<<m<<endl; cout<<oct; cout<<"i="<<i<<endl; cout<<"k="<<k<<endl;

cout<<"a="<<a<<endl; cout<<"m="<<m<<endl; cout<<hex; cout<<"i="<<i<<endl; cout<<"k="<<k<<endl; cout<<"a="<<a<<endl; cout<<"m="<<m<<endl;}

dec:i=6 k=0a=15 m=75oct:i=6 k=0

a=17 m=113hex:i=6 k=0a=f m=4b

Page 12: 第3章   程序结构和简单的输入输出

12

iomanip 库中常用的操纵符及其功能

在 C++ 的 iomanip 库中定义了一些输出流操纵符( manipulator ),用于控制提取字符的行为。这些操纵符可以作为右操作对象出现在提取运算符 >> 的右边。当程序中使用这些操纵符时,要包含 iomanip.h 头函数。

Page 13: 第3章   程序结构和简单的输入输出

13

iomanip 库中常用的操纵符及其功能

操纵符 功能

setiosflags(ios::fixed) 固定的浮点显示

setiosflags(ios::scientific) 科学表示法显示

表中的操纵符具有持续性,即对于所输出的数据都按其指定方式显示,直到指定了另外的显示方式为止。

Page 14: 第3章   程序结构和简单的输入输出

14

【例 3-1-4 】 iomanip 库中常用的操纵符示例

#include <iostream.h>#include <iomanip>void main(){float x,y; float fx; cout<<"input x,y="; cin>>x>>y; fx=x/y; cout<<123622569.32564<<" "<<-65980000.32<<" "<<0.0000001235647<<endl; cout<<"auto:fx="<<fx<<' '<<"y="<<y<<endl; cout<<"scientific:"<<setiosflags(ios::scientific); cout<<"fx="<<fx<<' '<<"y="<<y<<endl; cout<<"fixed:"<<setiosflags(ios::fixed); cout<<"fx="<<fx<<' '<<"y="<<y<<endl;}

Page 15: 第3章   程序结构和简单的输入输出

15

【例 3-1-4 】 示例结果

结果:input x,y=31 6

1.23623e+008 -6.598e+007 1.23565e-007

auto:fx=5.16667 y=6

scientific:fx=5.166667e+000 y=6.000000e+000

fixed:fx=5.16667 y=6

Page 16: 第3章   程序结构和简单的输入输出

16

标准输出流 cout

【说明】( 1 )浮点数默认的输出方式是自动方式,即输出6 位有效位数字,超过 6 位的按四舍五入截断。( 2 )自动方式下,如果输出比较大、比较小或接近于 0 的数时,系统会自动按科学法表示。( 3 ) 对 于 浮 点 数 , 操 纵 符setiosflags(ios::scientific) 和 setiosflags(ios::fixed)

分别设置其输出方式为科学表示法或定点表示法。

Page 17: 第3章   程序结构和简单的输入输出

cin 是标准输入流对象,用于从标准输入设备-键盘上读取数据。当用户在键盘上输入字符时,输入的字符顺序形成了输入流。数据的输入是通过提取运算符 >> 从输入流中提取的。

17

3.2 标准输入流对象 cin

Page 18: 第3章   程序结构和简单的输入输出

【说明】 ( 1 )在一个 cin 中,可以连续使用多个提取符 >> 输

入多个数据。( 2 )提取符 >> 后面的表达式可以是获得数据的变量

或对象。( 3 ) cin 可以输入任何基本类型的数据。

18

标准输入流对象 cin

【格式】 cin>> 表达式 1>> 表达式 2… ;

Page 19: 第3章   程序结构和简单的输入输出

#include <iostream>using namespace std;void main(){int m,n,t; float x,y,z; cin>>m>>n; cin>>dec>>x>>y; t=(m+n)/(m-n); z=(x+y)/(x-y); cout<<"t="<<t<<endl; cout<<"z="<<z<<endl;}

19

【例 3-2-1 】标准输入流对象 cin 示例

输入:

5 8

5.0 8.0

结果:

t=-4

z=-4.33333

Page 20: 第3章   程序结构和简单的输入输出

【说明】( 1 )输入多个数据时,每两个数据之间用空格、制表

符或换行符隔开。( 2 )提取符 >> 从流中提取字符时,只提取除空格、制

表符或换行符之外的字符,而空格、制表符或换行符被跳过。

( 3 )提取字符时,整数的首字符可以是符号字符( +或 - )或整数字符;浮点数的首字符可以是小数点或整数字符。

( 4 )输入字符型数据时,不要用单引号 '' 括起来。 20

标准输入流对象 cin

Page 21: 第3章   程序结构和简单的输入输出

#include <iostream>using namespace std;void main(){char ch1,ch2; int ivar; float fvar; cin>>ch1>>ch2>>ivar; fvar=(ch1-ch2)*2.1f+ivar; cout<<"ch1="<<ch1<<endl; cout<<"ch2="<<ch2<<endl; cout<<"fvar="<<fvar<<endl;}

21

【例 3-2-2 】标准输入流对象 cin 示例

输入:

b a 3

结果:

ch1=b

ch2=a

fvar=5.1

Page 22: 第3章   程序结构和简单的输入输出

void main(){int x,ox,hx,s,m; cin>>dec>>x; cin>>oct>>ox; cin>>hex>>hx; cout<<"x="<<x<<endl; cout<<"ox="<<ox<<endl; cout<<"hx="<<hx<<endl; s=x+ox; m=ox+hx; cout<<"s="<<s<<endl; cout<<"m="<<m<<endl;}

22

【例 3-2-3 】标准输入流对象 cin 示例

输入:

12 12 12

结果:

x=12

ox=10

hx=18

s=22

m=28

Page 23: 第3章   程序结构和简单的输入输出

23

iostream 库中常用的操纵符及其功能

iostream 库中定义了一些输入输出流操纵符( manipulator ),用于控制流的格式。这些操纵符可以作为右操作对象出现在提取运算符 >> 和插入运算符 << 的右边。

Page 24: 第3章   程序结构和简单的输入输出

24

iostream 库中常用的操纵符及其功能

控制符 描述

dec 设置基数为 10

oct设置基数为 8

hex设置基数为 16

endl 输出换行符 '\n' ,并刷新流

ends 输出 '\0'

flush 刷新流

Page 25: 第3章   程序结构和简单的输入输出

【说明】(1) 从键盘输入十六进制或八进制数据时,不需要加前缀 0x

或 0 。(2) 操纵符 dec 、 hex 和 oct 具有持续性,即对于所输入的

数据都按其指定的基数表示,直到指定了另外的基数为止。例如:cin>>oct>>x>>y; // 输入两个八进制数cin>>hex>>a>>b; // 输入两个十六进制数

25

iostream 库中常用的操纵符及其功能

Page 26: 第3章   程序结构和简单的输入输出

26

getchar 和 putchar 函数( c )

1. putchar 函数putchar 函数的作用是向终端输出一个字符。例如:putchar(ch1) ;

它输出字符变量 ch1 的值。

Page 27: 第3章   程序结构和简单的输入输出

27

【例 3-2-4 】 putchar 函数示例

#include <iostream>

using namespace std;

int main( )

{char a,b,c;

a=‘B’;b=‘O’;c=‘Y’;

putchar(a);putchar(b);

putchar(c);putchar(‘\ n’);

putchar(66);putchar(79);

putchar(89);putchar(10);

return 0;}

运行结果为:BOY

BOY

Page 28: 第3章   程序结构和简单的输入输出

28

2. getchar 函数

getchar 函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。 getchar 函数没有参数,其一般形式为:getchar ( ),函数的值就是从输入设备得到的字符。

Page 29: 第3章   程序结构和简单的输入输出

29

【例 3-2-5 】 getchar 函数示例

#include <iostream>

using namespace std;

int main( )

{char c;

c=getchar( ); putchar(c+32); putchar(′ \ n′);

return 0;

}

Page 30: 第3章   程序结构和简单的输入输出

30

scanf 和 printf 函数

在 C 语言中是用 printf 函数进行输出,用scanf 函数进行输入的。 C++ 保留了 C 语言的这一用法。 scanf 函数一般格式是:

scanf( 格式控制,输出表列 )

printf 函数的一般格式是:

printf( 格式控制,输出表列 )

Page 31: 第3章   程序结构和简单的输入输出

31

【例 3-2-6 】 scanf 和 printf 函数示例

#include <iostream>

using namespace std;

int main( )

{int a; float b; char c; // 注意在变量名前要加地址运算符 &

scanf(″%d %c %f″,&a,&c,&b);

printf(″a=%d,b=%f,c=%c \ n″,a,b,c);

return 0;

}

Page 32: 第3章   程序结构和简单的输入输出

【例 3-3-1 】下面是一个完整的 C++ 程序。#include <iostream> // 预处理命令using namespace std; // 在函数之外的声明部

分int a=3; // 在函数之外的声明部分int main( ) // 函数首部{ float b; // 函数内的声明部分 b=4.5; // 执行语句 cout<<a<<b; // 执行语句 return 0; // 执行语句}

32

3.3 C++ 语句概述

Page 33: 第3章   程序结构和简单的输入输出

33

C++ 程序结构

Page 34: 第3章   程序结构和简单的输入输出

C++ 语句可以分为以下 4 种:1. 声明语句2. 执行语句通知计算机完成一定的操作。3. 空语句;

34

C++ 语句

Page 35: 第3章   程序结构和简单的输入输出

4. 复合语句 复合语句也称为块语句,是由一对{}括起来的零个

或多个语句组成。在语法上,复合语句被视为一条语句。例如:{ z=x+y;

if(z>100) z=z-100 ;cout<<z;

}

35

C++ 语句

【注意】复合语句中最后一个语句中最后的分号不能省略。

Page 36: 第3章   程序结构和简单的输入输出

复合语句可以嵌套使用。复合语句一般用于下列两种情况:

( 1 )当语句上要求一条语句,但又难于用一条简单语句表达时,用复合语句。

( 2 )当声明的名字仅在某一范围内使用时,使用块语句使其形成局部化的块结构。

36

C++ 语句

Page 37: 第3章   程序结构和简单的输入输出

37

3.4 程序 三种基本结构

3.4.1 程序的三种基本结构

A

B

P 条件

A B

P 条件

A

图 3-1 三种基本结构

Page 38: 第3章   程序结构和简单的输入输出

38

三种基本结构共同的特点

( 1 )只有一个入口点,一个出口点。

( 2 )对于每个操作都有一条路径,即从入口到出口要通过每个操作。

Page 39: 第3章   程序结构和简单的输入输出

39

3.4.2 程序的组成

程序一般由 3 部分组成:

输入 输入 //// 已知已知

处理处理 //// 求解求解

输出(必须的) 输出(必须的) //// 答答

Page 40: 第3章   程序结构和简单的输入输出

40

3.5 顺序结构的实现

【功能】顺序执行

A 、 B 操作。

A

B

Page 41: 第3章   程序结构和简单的输入输出

赋值语句是由赋值表达式加上一个分号构成。例如: a=b; a=b=c=d;

41

3.5.1 赋值语句

【注意】 = 是一个赋值运算符,而不是等号

Page 42: 第3章   程序结构和简单的输入输出

42

【例 3-5-1 】 已知圆半径 r ,求圆的面积。

#include <iostream>using namespace std;

#define PI 3.1415926 //constant define

void main()

{ float r,area; //variable define

cout<<“input r:”; //interface:prompt user input

cin>>r; //input r

area=PI*r*r; //calculate area

cout<<“area=”<<area<<endl;

} //output area

Page 43: 第3章   程序结构和简单的输入输出

43

算法:(1)输入 a,b,c 的值(2)求 b2-4ac

(3)求 x 的值(4)输出

【例 3-5-2 】求一元二次方程式 ax2+bx+c=0 的根。 a,b,c 的值在运行时由键盘输入,它们的值满足 b2-4ac≥0 。

Page 44: 第3章   程序结构和简单的输入输出

44

【例 3-5-2 】程序

#include <iostream>#include <cmath> using namespace std;void main( )

{float a,b,c,x1,x2;

cin>>a>>b>>c;

x1=(-b+sqrt(b*b-4*a*c))/(2*a);

x2=(-b-sqrt(b*b-4*a*c))/(2*a);

cout<<"x1="<<x1<<endl;

cout<<"x2="<<x2<<endl;

}

Page 45: 第3章   程序结构和简单的输入输出

45

【例 3-5-3 】已知三角形的 3 边长,求三角形的面积

#include <iostream>#include <cmath> using namespace std;int main() { float a,b,c,l,area; //variable define cout<<“input a,b,c:”; //interface:prompt user input cin>>a>>b>>c; //input a,b,c l=(a+b+c)/2; area=sqr(l*(l-a)*(l-b-)*(l-c)); //calculate area cout<<“area=”<<area<<endl; return 0 ;}

Page 46: 第3章   程序结构和简单的输入输出

46

问题

a,b,c 不能构成三角形,怎么办?