1 / 46

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

第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 程序的三种基本结构

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第3章 程序结构和简单的输入输出 教学内容 • C++的标准输入/输出流对象cin/cout • C++程序的构成 • 顺序结构的实现

  2. 第3章程序结构和简单的输入输出 重点、难点 • cin,cout • 顺序结构的实现

  3. 第3章程序结构和简单的输入输出 教学目标 • 熟练掌握C++的标准输入输出流对象 • 熟练掌握C++程序的构成 • 熟练掌握C++的3种基本结构

  4. 第3章程序结构和简单的输入输出 3.1 C++的输出 3.2 C++的输入 3.3 C++语句概述 3.4 程序的三种基本结构 3.5 顺序结构的实现

  5. C++的输入与输出 C++的输出和输入是用“流”(stream)的方式实现的。 流是指来自设备或传送给设备的数据流。 C++的输入输出流库中提供了标准输入cin和标准输出cout流对象。 iostream

  6. 3.1 标准输出流cout 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=-6 i=r/i=0 r=r/(i+3)=0.666667 i=2%3=2 r=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=0 a=15 m=75 oct: i=6 k=0 a=17 m=113 hex: i=6 k=0 a=f m=4b

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

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

  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)分别设置其输出方式为科学表示法或定点表示法。

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

  18. 标准输入流对象cin 【格式】cin>>表达式1>>表达式2…; 【说明】 (1)在一个cin中,可以连续使用多个提取符>>输入多个数据。 (2)提取符>>后面的表达式可以是获得数据的变量或对象。 (3)cin可以输入任何基本类型的数据。

  19. 【例3-2-1】标准输入流对象cin 示例 输入: 5 8 5.0 8.0 结果: t=-4 z=-4.33333 #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; }

  20. 标准输入流对象cin 【说明】 (1)输入多个数据时,每两个数据之间用空格、制表符或换行符隔开。 (2)提取符>>从流中提取字符时,只提取除空格、制表符或换行符之外的字符,而空格、制表符或换行符被跳过。 (3)提取字符时,整数的首字符可以是符号字符(+或-)或整数字符;浮点数的首字符可以是小数点或整数字符。 (4)输入字符型数据时,不要用单引号''括起来。

  21. 【例3-2-2】标准输入流对象cin示例 输入: b a 3 结果: ch1=b ch2=a fvar=5.1 #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; }

  22. 【例3-2-3】标准输入流对象cin示例 输入: 12 12 12 结果: x=12 ox=10 hx=18 s=22 m=28 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;}

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

  24. 控制符 描述 dec 设置基数为10 oct 设置基数为8 hex 设置基数为16 endl 输出换行符'\n',并刷新流 ends 输出'\0' flush 刷新流 iostream库中常用的操纵符及其功能

  25. iostream库中常用的操纵符及其功能 【说明】 (1)从键盘输入十六进制或八进制数据时,不需要加前缀0x或0。 (2)操纵符dec、hex和oct具有持续性,即对于所输入的数据都按其指定的基数表示,直到指定了另外的基数为止。 例如: cin>>oct>>x>>y; //输入两个八进制数 cin>>hex>>a>>b; //输入两个十六进制数

  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; }

  32. 3.3 C++语句概述 【例3-3-1】下面是一个完整的C++程序。 #include <iostream> //预处理命令 using namespace std; //在函数之外的声明部分 int a=3; //在函数之外的声明部分 int main( ) //函数首部 { float b; //函数内的声明部分 b=4.5; //执行语句 cout<<a<<b; //执行语句 return 0; //执行语句 }

  33. C++程序结构

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

  35. C++语句 【注意】复合语句中最后一个语句中最后的分号不能省略。 4. 复合语句 复合语句也称为块语句,是由一对{}括起来的零个或多个语句组成。在语法上,复合语句被视为一条语句。 例如: { z=x+y; if(z>100) z=z-100; cout<<z; }

  36. C++语句 复合语句可以嵌套使用。复合语句一般用于下列两种情况: (1)当语句上要求一条语句,但又难于用一条简单语句表达时,用复合语句。 (2)当声明的名字仅在某一范围内使用时,使用块语句使其形成局部化的块结构。

  37. P条件 A P条件 A B B A 3.4 程序 三种基本结构 3.4.1 程序的三种基本结构 图3-1 三种基本结构

  38. 三种基本结构共同的特点 (1)只有一个入口点,一个出口点。 (2)对于每个操作都有一条路径,即从入口到出口要通过每个操作。

  39. 3.4.2 程序的组成 程序一般由3部分组成: 输入 //已知 处理 //求解 输出(必须的) //答

  40. A B 3.5 顺序结构的实现 【功能】顺序执行 A、B操作。

  41. 3.5.1 赋值语句 【注意】=是一个赋值运算符,而不是等号 赋值语句是由赋值表达式加上一个分号构成。 例如: a=b; a=b=c=d;

  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. 【例3-5-2】求一元二次方程式ax2+bx+c=0的根。a,b,c的值在运行时由键盘输入,它们的值满足b2-4ac≥0。【例3-5-2】求一元二次方程式ax2+bx+c=0的根。a,b,c的值在运行时由键盘输入,它们的值满足b2-4ac≥0。 • 算法: • 输入a,b,c的值 • 求b2-4ac • 求x的值 • 输出

  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边长,求三角形的面积【例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不能构成三角形,怎么办?

More Related