Upload
melvin-navarro
View
123
Download
4
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
教学内容
C++ 的标准输入 / 输出流对象 cin/cout
C++ 程序的构成
顺序结构的实现
1
第 3 章 程序结构和简单的输入输出
重点、难点
cin,cout
顺序结构的实现
2
第 3 章程序结构和简单的输入输出
教学目标
熟练掌握 C++ 的标准输入输出流对象
熟练掌握 C++ 程序的构成
熟练掌握 C++ 的 3 种基本结构
3
第 3 章程序结构和简单的输入输出
3.1 C++ 的输出3.2 C++ 的输入3.3 C++ 语句概述3.4 程序的三种基本结构3.5 顺序结构的实现
4
第 3 章程序结构和简单的输入输出
C++ 的输出和输入是用“流” (stream) 的方式实现的。
流是指来自设备或传送给设备的数据流。
C++ 的输入输出流库中提供了标准输入 cin 和标准输出 cout 流对象。
iostream 5
C++ 的输入与输出
cout 是标准输出流对象,用于向标准输出设备 --- 显示器输出数据。
数据的输出是通过插入运算符 << 将字符插入到输出流中的。
6
3.1 标准输出流 cout
7
标准输出流 cout
【格式】 cout<< 表达式 1<< 表达式 2… ;
【说明】( 1 )在一个 cout 中,可以连续使用多个插入运算符<< 输出多个数据。( 2 )输出多个表达式时,各表达式之间无空格输出。( 3 ) cout 可以输出任何基本类型的数据。
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
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
10
标准输出流 cout
【说明】
( 1 )操纵符 ends 作用于输出流时,输出一个空字符 '\0' 。
( 2 )操纵符 endl 作用于输出流时,输出一个回车换行符 '\n' ,并刷新流。
( 3 )输出浮点型数据时,插入运算符试图输出占最小空间的值,所以输出 6.0/3 的值是 2 ,而不是 2.0 。
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
12
iomanip 库中常用的操纵符及其功能
在 C++ 的 iomanip 库中定义了一些输出流操纵符( manipulator ),用于控制提取字符的行为。这些操纵符可以作为右操作对象出现在提取运算符 >> 的右边。当程序中使用这些操纵符时,要包含 iomanip.h 头函数。
13
iomanip 库中常用的操纵符及其功能
操纵符 功能
setiosflags(ios::fixed) 固定的浮点显示
setiosflags(ios::scientific) 科学表示法显示
表中的操纵符具有持续性,即对于所输出的数据都按其指定方式显示,直到指定了另外的显示方式为止。
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;}
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
16
标准输出流 cout
【说明】( 1 )浮点数默认的输出方式是自动方式,即输出6 位有效位数字,超过 6 位的按四舍五入截断。( 2 )自动方式下,如果输出比较大、比较小或接近于 0 的数时,系统会自动按科学法表示。( 3 ) 对 于 浮 点 数 , 操 纵 符setiosflags(ios::scientific) 和 setiosflags(ios::fixed)
分别设置其输出方式为科学表示法或定点表示法。
cin 是标准输入流对象,用于从标准输入设备-键盘上读取数据。当用户在键盘上输入字符时,输入的字符顺序形成了输入流。数据的输入是通过提取运算符 >> 从输入流中提取的。
17
3.2 标准输入流对象 cin
【说明】 ( 1 )在一个 cin 中,可以连续使用多个提取符 >> 输
入多个数据。( 2 )提取符 >> 后面的表达式可以是获得数据的变量
或对象。( 3 ) cin 可以输入任何基本类型的数据。
18
标准输入流对象 cin
【格式】 cin>> 表达式 1>> 表达式 2… ;
#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
【说明】( 1 )输入多个数据时,每两个数据之间用空格、制表
符或换行符隔开。( 2 )提取符 >> 从流中提取字符时,只提取除空格、制
表符或换行符之外的字符,而空格、制表符或换行符被跳过。
( 3 )提取字符时,整数的首字符可以是符号字符( +或 - )或整数字符;浮点数的首字符可以是小数点或整数字符。
( 4 )输入字符型数据时,不要用单引号 '' 括起来。 20
标准输入流对象 cin
#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
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
23
iostream 库中常用的操纵符及其功能
iostream 库中定义了一些输入输出流操纵符( manipulator ),用于控制流的格式。这些操纵符可以作为右操作对象出现在提取运算符 >> 和插入运算符 << 的右边。
24
iostream 库中常用的操纵符及其功能
控制符 描述
dec 设置基数为 10
oct设置基数为 8
hex设置基数为 16
endl 输出换行符 '\n' ,并刷新流
ends 输出 '\0'
flush 刷新流
【说明】(1) 从键盘输入十六进制或八进制数据时,不需要加前缀 0x
或 0 。(2) 操纵符 dec 、 hex 和 oct 具有持续性,即对于所输入的
数据都按其指定的基数表示,直到指定了另外的基数为止。例如:cin>>oct>>x>>y; // 输入两个八进制数cin>>hex>>a>>b; // 输入两个十六进制数
25
iostream 库中常用的操纵符及其功能
26
getchar 和 putchar 函数( c )
1. putchar 函数putchar 函数的作用是向终端输出一个字符。例如:putchar(ch1) ;
它输出字符变量 ch1 的值。
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
28
2. getchar 函数
getchar 函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。 getchar 函数没有参数,其一般形式为:getchar ( ),函数的值就是从输入设备得到的字符。
29
【例 3-2-5 】 getchar 函数示例
#include <iostream>
using namespace std;
int main( )
{char c;
c=getchar( ); putchar(c+32); putchar(′ \ n′);
return 0;
}
30
scanf 和 printf 函数
在 C 语言中是用 printf 函数进行输出,用scanf 函数进行输入的。 C++ 保留了 C 语言的这一用法。 scanf 函数一般格式是:
scanf( 格式控制,输出表列 )
printf 函数的一般格式是:
printf( 格式控制,输出表列 )
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;
}
【例 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++ 语句概述
33
C++ 程序结构
C++ 语句可以分为以下 4 种:1. 声明语句2. 执行语句通知计算机完成一定的操作。3. 空语句;
34
C++ 语句
4. 复合语句 复合语句也称为块语句,是由一对{}括起来的零个
或多个语句组成。在语法上,复合语句被视为一条语句。例如:{ z=x+y;
if(z>100) z=z-100 ;cout<<z;
}
35
C++ 语句
【注意】复合语句中最后一个语句中最后的分号不能省略。
复合语句可以嵌套使用。复合语句一般用于下列两种情况:
( 1 )当语句上要求一条语句,但又难于用一条简单语句表达时,用复合语句。
( 2 )当声明的名字仅在某一范围内使用时,使用块语句使其形成局部化的块结构。
36
C++ 语句
37
3.4 程序 三种基本结构
3.4.1 程序的三种基本结构
A
B
P 条件
A B
P 条件
A
图 3-1 三种基本结构
38
三种基本结构共同的特点
( 1 )只有一个入口点,一个出口点。
( 2 )对于每个操作都有一条路径,即从入口到出口要通过每个操作。
39
3.4.2 程序的组成
程序一般由 3 部分组成:
输入 输入 //// 已知已知
处理处理 //// 求解求解
输出(必须的) 输出(必须的) //// 答答
40
3.5 顺序结构的实现
【功能】顺序执行
A 、 B 操作。
A
B
赋值语句是由赋值表达式加上一个分号构成。例如: a=b; a=b=c=d;
41
3.5.1 赋值语句
【注意】 = 是一个赋值运算符,而不是等号
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
43
算法:(1)输入 a,b,c 的值(2)求 b2-4ac
(3)求 x 的值(4)输出
【例 3-5-2 】求一元二次方程式 ax2+bx+c=0 的根。 a,b,c 的值在运行时由键盘输入,它们的值满足 b2-4ac≥0 。
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;
}
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 ;}
46
问题
a,b,c 不能构成三角形,怎么办?