第2章 顺序结构课件

文档属性

名称 第2章 顺序结构课件
格式 zip
文件大小 212.2KB
资源类型 教案
版本资源 通用版
科目 信息技术(信息科技)
更新时间 2017-09-03 09:12:45

图片预览

文档简介

课件70张PPT。第二章 顺序结构第一节 赋值语句
第二节 运算符和表达式
第三节 常量和变量
第四节 标准数据类型
第五节 数据输入输出
第六节 顺序结构实例
  第一章的简单程序已体现出处理问题的步骤的顺序关系,每条语句按自上而下的顺序依次执行一次,这种自上而下依次执行的程序称为顺序结构程序。
  在一个程序中,所有的操作都由执行部分来完成,而执行部分又都是由一条条语句组成的。因此,先要学习C++语言的基本语句,并且在学习过程中逐步学会程序设计的基本方法。我们还是先绕过那些繁琐的语法规则细节,先看一些例子,然后给出语法以供选手们参考。第一节 赋值语句赋值语句 在C++语言中,“=”作为赋值运算符,而不表示“等于”判断。赋值语句是由赋值表达式再加上分号构成的表达式语句,它是程序中使用最多的语句之一。
变量=表达式;
在赋值语句的使用中,需要注意以下几点:
 1)由于赋值运算符“=”右边的表达式也可以是赋值表达式,因此,下述形式 :
变量=(变量=表达式);
是成立的,从而形成嵌套的情形。其展开之后的一般形式为:
变量=变量=…=表达式;
  例如,“a=b=c=d=e=5;”,它实际上等价于:e=5;d=e;c=d;b=c;a=b;
2)在进行赋值运算时,如果赋值运算符两边的数据类型不同,系统将会自动进行类型转换,即将赋值运算符右边的数据类型转换成左边的变量类型。当左边是整型而右边是实型时,将去掉小数部分并截取该整型对应的有效位数。  例2.1输入两个正整数A和B,试交换A、B的值(使A的值等于B,B的值等于A)。
  【分析】 交换两个变量的值方法很多,一般我们采用引入第三个变量的算法,二个变量交换,可以想像成一瓶酱油和一瓶醋进行交换,这时容易想到拿一个空瓶子过来:
  ① 将酱油倒到空瓶中;② 将醋倒到酱油瓶中;③ 将原空瓶中的酱油倒到醋瓶中。
  程序如下:
  #include //使用cin,cout,须调用iostream库
  #include // Dev C++使用system( )调用cstdlib库
  using namespace std;
  int main()
  { int a,b,c; //定义三个变量
   cout<<"Input a,b="; //输入提示Input a,b=
   cin>>a>>b; //输入A、B的值
   c=a; a=b; b=c; //交换A、B的值
   cout<<"a="<  }  例2.2 圆柱体的表面积
   输入底面半径r和高h,输出圆柱体的表面积,保留3位小数,格式见样例。
    样例输入:3.5 9 样例输出:274.889
【分析】
   圆柱体的表面积由3部分组成:上底面积、下底面积和侧面积。由于上下底面积相等,完整的公式可以写成:表面积=底面积*2+侧面积。根据平面几何知识,底面积=πR2,侧面积=2πrh。参考程序:
  #include //使用printf和scanf, 须调用cstdio库
  #include //使用数学函数atan,须调用cmath库
  using namespace std; //在这个程序中可以省略这行
  int main()
  { const double pi=3.1415926; //定义pi为常量
   double r,h,s1,s2,s; //定义双精度实型,float为单精度实型
   scanf("%lf%lf",&r,&h); //r和h前的&符号不能漏掉,double型用%lf
   s1=pi*r*r; //计算底面积
   s2=2*pi*r*h; //计算侧面积
   s=2*s1+s2; //计算总的表面积
   printf("Area=%0.3lfn",s); //输出结果保留3位小数,注意用lf格式
   return 0;
  }  例2.3 数学中经典的“鸡兔同笼”问题,已知头共30个,脚共90只,问笼中的鸡和兔各有多少只?
  【分析】 设鸡为j只,兔为t只,头为h,脚为f,那么有:
   j+t=30 ①
     2*j+4*t=90 ②
  假设笼中30 个头全都是兔,那么都按每头4只脚计算,总脚数为(4*h),与实际脚数(f )之差为(4*h-f),如果这个差=0,则笼中全是兔(即鸡为0只);如果这个差值 >0,说明多计算了脚数,凡是鸡都多计算了两只脚,用它除以2就能得到鸡的只数,算法为:① j=(4*h - f)/2 //先用脚数差值除以2算出鸡的只数
   ② t=h - j //再用总头数减鸡数算出免的只数
  注意这两步运算的先后顺序。程序如下:
  #include //使用getchar()语句, 须调用cstdio库
  #include //使用cin,cout,须调用iostream库
  using namespace std;
  int main()
  { int h,f,j,t; //定个变量
   h=30;f=90; //赋初始值
   j=(4*h-f)/2; //计算鸡的只数
   t=h-j; //计算免的只数
   cout<<"j="<  }第二节 运算符和表达式  C++语言中运算符和表达式数量之多,在高级语言中是少见的。正是丰富的运算符和表达式使C++语言功能十分完善。这也是C++语言的主要特点之一。 运算符纵览
1.算术运算符
用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
2.关系运算符
用于比较运算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。
3.逻辑运算符
用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
4.位操作运算符
参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)左移(<<)、右移(>>)六种。
5.赋值运算符
用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
6.条件运算符
这是一个三目运算符,用于条件求值(?:)。
7.逗号运算符
用于把若干表达式组合成一个表达式(,)。
8.指针运算符
用于取内容(*)和取地址(&)二种运算。
9.求字节数运算符
用于计算数据类型所占的字节数(sizeof)。
10.特殊运算符
有括号(),下标[],成员(→,.)等几种。一、算术运算符
1、模运算符
求余的运算符“%”也称为模运算符,是双目运算符,两个操作数都是整型数。a%b的值就是a除以b的余数,5%2余数为1。其操作对象只能是整型数,而其他四种运算符对int,float,double,char都适用。
2、除法运算符
C++语言的除法运算符有一些特殊之处,即如果a、b是两个整数类型的变量或常量,那么a/b的值是a除以b的商。例如, 5/2的值是2,而不是2.5,而5.0/2或5/2.0的值是2.5。
3、自增自减运算符
自增、自减运算符用来对一个操作数进行加1或减1运算,其结果仍然赋予该操作数,而且参加运算的操作数必须是变量,而不能是常量或表达式。
1)自增运算符。例如,x++表示在使用x之后,使x的值加1,即x=x+1;++x表示使用x之前,先使x的值加1,即x=x+1。
2)自减运算符。例如,x--表示在使用x之后,使x的值减1,即x=x-1;--x表示使用x之前,先使x的值减1,即x=x-1。
4、复合算术赋值。例如,a+=1,相当于a=a+1; a+=b,相当于a=a+b。
例2.4 变量自加运算
#include
#include
using namespace std;
int main()
{
int x,y,z1,z2;
x=7; y=8;
z1=y-(x++); //计算z1=1,计算后x=8
z2=y-(++x); //计算前x的值自加1,x的值为9,再与y求差
cout<<“z1="< getchar();
}
运行结果:
 z1=1
 z2=-1二、关系运算符
关系运算符用于数值的大小比较。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种,它们都是双目运算符。
  关系运算符运算的结果是整型,值只有两种:0或1,0代表关系不成立,1代表关系成立。
请看下面的例子:
int main()
{ int n1=4,n2=5,n3;
n3=n1>n2; //n3的值为0
n3=n1 n3=n1==4; //n3的值变为1
n3=n1!=4; //n3的值变为0
n3=n1==1+3; //n3的值变为1
}三、逻辑运算符 C++语言中提供了三种逻辑运算符:与运算(&&)、或运算(||)、非运算(!)。与运算符(&&)和或运算符(||)均为双目运算符。具有左结合性。 非运算符(!)为单目运算符,具有右结合性。逻辑运算符和其它运算符优先级的关系可表示如下:
  按照运算符的优先顺序可以得出:
    a>b && c>d等价于(a>b) && (c>d)
    !b==c||d    a+b>c && x+yc) && ((x+y) 逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”来表示。其求值规则如下:
1.与运算&&参与运算的两个量都为真时,结果才为真,否则为假。例如,5>0 && 4>2,由于5>0为真,4>2也为真,相与的结果也为真。
2.或运算||参与运算的两个量只要有一个为真,结果就为真。 两个量都为假时,结果为假。例如:5>0||5>8,由于5>0为真,相或的结果也就为真
   3.非运算!参与运算量为真时,结果为假;参与运算量为假时,结果为真。例如:!(5>0)的结果为假。
   虽然C++编译在给出逻辑运算值时,以“1”代表“真”,“0 ”代表“假”。 但反过来在判断一个量是为“真”还是为“假”时,以“0”代表“假”,以非“0”的数值作为“真”。例如:由于5和3均为非“0”因此5&&3的值为“真”,即为1。又如:5||0的值为“真”,即为1。四、位运算符   需要说明的是,对于有符号数,在右移时,符号位将随同移动。当操作数为正数时,最高位为0,而为负数时,最高位为1。最高位是补0或补1取决于编译系统的规定。五、运算的简写在C++语言中,有一些运算可以简写,如下表所示。
  算术运算符、关系运算符、逻辑运算符和赋值运算符的优先级如下:
  赋值运算符 逻辑运算符 关系运算符 算术运算符
低 高
  关系运算符的结合性为:自左至右。
  根据以上优先级和结合性,计算出以下表达式的结果(假设a=3,b=2,c=1)
a>b 表达式为真,所以表达式的值为1
(a>b)==c 表达式为真,所以表达式的值为1
b+c d=a>b a>b为真,所以d的值为1
f=a>b>c a>b为真,结果为1,1>c为假,所以f的值为0 六、常用库函数【上机练习2.1】
1.已知某梯形的上底A=13,下底B=18,高H=9,求它的面积S。
2.已知某圆的半径R=139,求该圆的周长C与面积S。
3.输入长方形的边长a,b,计算它的面积和周长,输出。
4.读入摄氏温度c,写程序将它转换成华氏温度f输出。已知f=9c/5+32
5.输入一个三位自然数,把这个数的百位与个位数对调,输出对调后的自然数。第三节 常量和变量常量 一、常量
  常量是指在程序中使用的一些具体的数、字符。在程序运行过程中,其值不能被更改。如123,145.88,'m',TRUE等。
  1、整型常量:如3、-5、0等。
   整型常量是表示整数的常量。有三种表示形式:
   1)十进制形式。如99、-1。
   2)八进制形式。以数字0打头,由0-7构成,如012,表示八进制整数12,即(12)8。
   3)十六进制形式。以0x打头,如0x12A,表示十六进制整数12A,即(12A)16。
  2、实型常量:如3.1、-6.1E+2(科学记数法)。
  3、字符常量:是用单引号括起来的字符,如 'k' 、'5' 、'%'。
  注意:'a'与"a"表示的含义是不同的,'a'表示一个字符常量,"a"表示一个字符串。常量的定义 一个常量可以直接调用(如124,'A'),也可以给常量取个名字用一个标识符代表它,这就是符号常量。其语法格式为:
# define 符号常量 常量字串
     例如:# define PI 3.1415926例2.5 输入半径r,求圆的周长及面积。
#include //调用iostream库,否则使用printf和scanf语句编译出错
#include //使用system( )调用cstdlib库
using namespace std; //这个程序可省略这行
#define PI 3.1415926 //PI是符号常量。代表3.1415926
int main()
{
float r,c,s; //定义实型变量
printf("r="); //显示提示符r=
scanf("%f",&r); //输入r的值,&符号不能漏掉
c=2*PI*r; //计算圆的周长
s=PI*r*r; //计算圆的面积
printf("c=%.2f s=%.2fn",c,s); //显示计算结果,结果保留2位小数
system("pause");
}
程序中定义的PI代表常量3.1415926,在编译源程序时,遇到PI就用常量3.1415926代替,PI可以和常量一样进行运算。C++语言规定,每个符号常量的定义占据一个书写行,而且符号常量不能被再赋值。如果在例2.5中使用以下赋值语句是错误的。
   PI=3.1415926; 习惯上,符号常量名用大写,而变量名用小写,以便于区别。
  使用符号常量的好处:
  1)增加了程序的可读性。如看到例2.5程序中,见到PI就可知道它代表圆周率,定义符号常量名时应该尽量使用见名知意的常量名。
  2)增加了程序的易改性。如例2.5程序中,只需改动一处,程序中的所有PI都会自动全部代换,做到“一改全改”。变量定义  变量代表了一个存储单元,其中的值是可以改变的,因此称为变量。如游戏中玩家命的条数最初为3,当你死了一次,命减少一条,这里命的条数就是一个变量(或者说命的条数存储在一个存储单元中)。
  一个程序中可能要使用到若干个变量,为了区别不同的变量,必须给每个变量(存储单元)取一个名(称为变量名),该变量(存贮单元)存储的值称为变量的值,变量中能够存储值的类型为变量的类型。例如游戏中用于存储“命”的变量,在游戏程序中的存储命的变量名可取为life,它的类型为整型,游戏初始时这个变量的值为3。变量名  用一个合法的标识符代表一个变量。如n,m,rot,total 等都是合法变量名。在程序中用到的变量要“先定义后使用”,变量名应遵循自定义标识符的命名规则,并建议使用“见名知义”的原则,即用一些有意义的单词作为变量名。在C++语言,变量名大小写有区别。   用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符。C++语言规定,标识符只能由字母(包含下划线“_”)开头,后面的字符可以是字母或数字。对于标识符的长度,不同的C++语言编译器有不同的规定,考虑到系统的可移植性,建议变量名的长度不要超过8个字符。例如:month、_age、s2为合法的标识符;m.k.jack、a<=b、9y为不合法的标识符。   定义变量的语法格式为:
     数据类型 变量表
  例如:
   int i=5,j,k; //定义i,j,k为整型变量, //i赋初值为,5j,k的初值未知。
   char a,b,c; //定义a,b,c为字符变量
   float x,y,z; //定义x,y,z为实型变量
  C++语言允许在定义变量的同时为变量赋初值。
变量的类型   常量是有类型的数据,变量在某一固定时刻用来存储一个常量,因此也应有相应的类型。如整型变量用来存储整数,实型变量用来存储实数。变量的类型,可以是标准数据类型int、short、long、float、double和char等,也可以是用户自定义的各种类型。
  变量一经定义系统就在计算机内存中为其分配一个存储空间。在程序中使用到变量时,就在相应的内存中存入数据或取出数据,这种操作称为变量的访问。 第四节 标准数据类型 C++语言提供了丰富的数据类型,本节介绍几种基本的数据类型:整型、实型、字符型。它们都是系统定义的简单数据类型,称为标准数据类型。整型(integer)   在C++语言中,整型类型标识符为int。根据整型变量的取值范围又可将整型变量定义为以下8种整型类型:整型数取值范围 在信息学竞赛中常用的有integer、longint、int64和qword。目前32位的CPU,提供的标准整型是32位,所以用longint的速度比integer快,同时建议Byte不要用,因为不能在监控窗口进行监控其值的变化,不能监控会给调试带来麻烦。
Free Pascal还提供了另一个整型常量表识符MaxLonint,它是长整型数据能表示的最大值, Maxlongint其值为2147483647(231-1)。Maxint和maxlongint的类型分别属于integer 和longint。实型(real)   一个实型数据用来存储实数,实型包括正实数、负实数和零。C++语言中表示实型常量的形式有两种。
  ① 十进制表示法
  这是人们日常使用的带小数点的表示方法。
  如3,0.0, +5.61,-8.0,-6.050等都是实型常量。
  ② 科学记数法
  科学记数法是采用指数形式的表示方法,如1.25×105可表示成1.25E+05。在科学记数法中,字母"E"表示10这个"底数",而E之前为一个十进制表示的小数,称为尾数,E之后必须是一个整数,称为"指数"。 如-1234.56E+26,+0.268E-50,1E5是合法形式,而E5,E,1.2E+0.5都不是合法的实数。
C++语言支持三种实型,它们是float(单精度实型)、double(双精度实型)、long double(长双精度实型)。每一种类型规定了相应的实数取值范围、所使用的存储空间(字节数)以及能达到的精度(有效位数)。   表 2-2 实型数取值范围 字符型(char) 三、字符型
  字符常量有以下两种表示法:
  1、普通表示形式
  字符常量是由单个字符组成,所有字符采用ASCII编码,ASCII编码共有128个字符(表2-4)。在程序中,通常用一对单引号将单个字符括起来表示一个字符常量。如:'a','A','0'等。如字符A的序号是65,字符a的序号是97, 字符0的序号的48。
  2、转义字符表示形式。
  转义字符有三种用法:表示控制字符、表示特殊字符、表示所有字符。常用的转义字符如右表所示。ASCII编码表见下图: 例2.6 字符变量的赋值举例
 #include
 #include
 using namespace std;
 int main()
 {
  int c1,c3;
  char c2,c4;
  c1='A'; //把字符常量赋值给整型变量c1
  c2=65; //把整型常量赋值给字符变量c2
  c3='x41'; //把用十六进制表示的转义字符常量赋值给整型变量c3
  c4='101'; //把用八进制表示的转义字符常量赋值给字符变量c4
  cout<<"c1="< }
  运行结果:
  c1=65 c3=65
  c2=A c4=A    基于char数据的这个特点,它可以和int变量一样做加减运算,例2.7说明了这种用法。
例2.7 大小字母的转换
  #include
  #include
  using namespace std;
  int main()
  { char c1,c2;
   c1='a';
   c2='A';
   cout<   c1=c1-32; //小写字母转换大写字母
   c2=c2+32; //大写字母转换小写字母
   cout<   getchar();
  }
  运行结果:
  a A
  A a
因为所有小写字母的ASCII值要比对应大写字母的ASCII值大32,所以c1减去32后便得到原来字母的大写形式。反之,c2加上32后便得到原来字母的小写形式。四、数据类型转换  C++语言中,不同数据类型的运算对象进行混合运算,或者需要将一个表达式的结果转换成期望的类型时,就需要依据数据类型转换规则进行转换。   1、混合运算时的类型转换规则
整型、实型、字符型数据间可以混合运算。在这种情况下,需要将不一致的数据类型转换成一致的数据类型,然后进行运算。为了保证运算精度,系统在运算时的转换规则是将存储长度较短的运算对象转成存储长度较长的类型,然后再进行处理。这种转换是系统自动进行的,具体见表2-5所示。 混合运算时的类型转换规则 【说明如下】
1)纵向箭头表示必定会进行的转换,如float型数据必先转换为double型数据,然后与其他操作数
进行运算。与此类似,char型或short型数据必先转换为int型数据,然后进行运算。
2)横向箭头表示当运算对象为不同类型数据时的转换方向,如int型数据与unsigned型数据进行运
算,int型转换为unsigned型后方可进行运算。int型与double型进行运算,int型直接转换为double
型后进行运算,不能理解为先转换为unsigned int型,然后转换为long int型,最后再转换为double型。2、赋值时的类型转换规则  当赋值运算符两侧的数据类型不同时,需进行类型转换,这种转换是系统自动进行的,转换规则如下:
  1)float、double型赋值给int型:直接截断小数。
  例如,“int i=f+0.6;”,f的值为4.0,右边算术表达式运算后的结果为4.6的double型数据,根据上述转换原则,直接舍弃小数,所以i的值为4。
  2)int、char型赋值给float、double型:补足有效位以进行数据类型转换。
  例如:“float f=4;”,float为7位有效数字,所以f的值为4.0000000。
  3)char型(1字节)赋给int型(4字节):数值赋给int型的低8位,其它位补0。
  4)long int型赋值给int型:long int型截断低字节给int型。
  5)int型赋值给long int型:赋给long int型的低16位,如果int型的最高位是0,则long int的高16位全为0;如果int型的最高位是1,则long int型的高16位全为1(称为“符号扩展”)。
  6)unsigned int型赋值给int型:直接传送数值。
  7)非unsigned int型赋值给位数相同的unsigned int型:直接传送数值。3、强制类型转换   在C++语言中,还允许强制类型转换,即将某一数据的数据类型转换为指定的另一种数据类型,强制类型转换只是临时转换。强制转换运算符组成的运算表达式的一般形式为: (类型名)(表达式)
例如:已知有变量定义“int b=7;float a=2.5,c=4.7;”,求下面算术表达式的值。
a+(int)(b/3*(int)(a+c)/2.0)%4
  根据运算符的结合性规则,表达式要自左至右执行,b/3为2,2*(int)(a+c)为14,14/2.0为7.0,强制类型转换后为7,7%4为3,a的值2.5与3相加,最终结果为5.5。第五节 数据输入输出  C++语言中没有提供专门的输入输出语句,所有的输入输出都是调用标准库函数中的输入输出函数来实现的。在使用时,应在源程序的开头使用如下语句:
  #include
  #include
  using namespace std;
  
  C++语言标准函数库提供了许多标准输入、输出函数,本节将介绍6个最基本的输入、输出函数:字符输入getchar,字符输出putchar,格式化输入scanf,格式化输出prinf,流输入cin,流输出cout。一、字符输入函数getchar    getchar函数是接收从键盘输入的单个字符数据。它是一个无参函数,其语法格式为:
    getchar();
【说明】
   1)通常把输入的字符赋予一个字符变量,构成赋值语句。例如:
    char ch;
    ch=getchar();
   2) getchar函数只能接受单个字符,输入数字也按字符处理。
   3)输入多于一个字符时,只接收第一个字符。
   4) getchar函数等待用户输入,直到按回车键才结束,可用于暂停程序的运行,直到输入一个回车键。
   5)如果在程序中连续有两个以上getchar()函数,应该一次性输入所需字符,最后再按回车键,否则会把回车作为一个字符传给后面的getchar()函数。 例2.8 利用getchar函数接收键盘输入。
   #include
   #include
   using namespace std;
   int main()
   {
    char ch;
    ch=getchar(); //读入字符
    cout<<"input="<   }二、字符输出函数putchar   putchar函数是字符输出函数,功能是向标准输出设备(如显示器)输出单个字符数据,其语法格式为:
  putchar(ch); //其中,ch为一个字符变量或常量。
例2.9 利用putchar 函数输出字符。
   #include
   #include
   using namespace std;
   int main()
   {
    char c='B'; //定义字符变量c并赋值'B'
    putchar(c); //输出该字符
    putchar('x42'); //用转义字符输出字母'B'
    putchar(0x42); //用16进制ASCII码值输出字母'B'
    putchar(66); //用10进制ASCII码值输出字母'B'
   }
运行结果:BBBB三、通过cout流输出数据  流插入运算符<<和cout结合在一起使用,可向显示器屏幕输出数据。
格式1:
  功能:它把表达式的值输出到屏幕上,该表达式可以是各种基本类型的常量、变量或者由它们组成的表达式。输出时,程序根据表达式的类型和数值大小,采用不同的默认格式输出,大多数情况下可满足要求。
   若要输出多个数据,可以连续使用流插入运算符
格式2:
   功能:将表达式的内容一项接一项的输出到屏幕上。  1.输出字符串和输出变量的区别
  每当我们输出字符串常量的时候,必须用双引号把字符串引起来,以便将它和变量名明显的区分开来。
 例2.10
  下面两个语句是不同的:
cout << "Hello" ; //打印字符串Hello到屏幕上cout << Hello ; //把变量Hello存储的内容打印到屏幕上
 2.如何增强信息的可读性
  为了增强输出信息的可读性,在输出多个数据时可以通过插入空格符,换行符或其他提示信息将数据进行组织,以获得更好的效果。
 例2.11
    x=12;
   cout << "tom is my friend,he is";
   cout << x;
   cout <<"years old";
  输出结果为tom is my friend,he is12year old
【思考】:若希望输出结果是这样的:tom is my friend,he is 12 year old
  该如何写输出语句呢? 3.换行符的使用
必须注意,除非我们明确指定,cout并不会自动在其输出内容的末尾加换行符,因此下面的语句:
  例2.12
cout << "This is a sentence." ;
cout << "This is another sentence." ;
  将会有如下内容输出到屏幕:
    This is a sentence.This is another sentence.
   虽然我们分别调用了两次cout,两个句子还是被输出在同一行。所以,为了在输出中换行,我们必须插入一个换行符来明确表达这一要求,在C++中换行符可以写作n。
cout << "First sentence.n";
cout << "Second sentence.nThird sentence.";
 将会产生如下输出:
First sentence.
Second sentence.
Third sentence.
另外,你也可以用操作符endl来换行,例如:
cout << "First sentence." << endl;
cout << "Second sentence." << endl;
将会输出:
First sentence.
Second sentence. 例2.13
在屏幕上输出
2 3
4
cout<<2<<" "<<3<cout<<4;
或 cout<<"2 3n4";
除了以上两种写法外,还可以有其它的的写法,请试试看。你可以使用n或endl来指定cout输出换行,注意两者的不同用法。 四、通过cin流读入数据
  流读取运算符>>和cin结合在一起使用,可从键盘输入数据。
格式1:
  功能:是从键盘读取一个数据并将其赋给“变量”。
  说明:在使用cin输入的时候必须考虑后面的变量类型。如果你要求输入一个整数,在 >>后面必须跟一个整型变量,如果要求一个字符,后面必须跟一个字符型变量。
 例2.14声明一个整型变量age然后等待用户从键盘输入到cin并将输入值存储在这个变量中。
int age;
cin >> age;
 也可以连续使用>>,实现从键盘对多个变量输入数据。
格式2:
  这要求从键盘输入的数据的个数、类型与变量相一致。从键盘读取数据时,各数据之间要有分隔符,分隔符可以是一个或多个空格键、回车键等。 例2.15用cin 让用户输入多个数据 。
cin >> a >> b;
等同于:
cin >> a;
cin >> b; 例2.16流读取运算符>>和cin的使用
  #include
  #include
  using namespace std;
  int main( )
  { char c;
   int i ;
   float x,y;
   cout<<"enter:n";
   cin >>i>>x>>y;
   c=i;
   cout<<"c="<   cout<<"x="<   system("pause");
   return 0;
  }   程序运行时屏幕先显示:
   enter:
这时从键盘输入一个整数和两个实数,中间用一个或多个空格键作分隔符。 如输入
  65 2.3 3.5
  最后屏幕显示:
  c=A i=65
  x=2.3 y=3.5
程序中"n"和"t"都是转义符。 'n '和"n"效果相同,都表示换行符。't'是制表符,可以理解为连续输出几个空格。字符变量和整型变量i的值都是65,但输出的形式不同。 五、格式化输入函数scanf
  scanf函数的功能是格式化输入任意数据列表,其一般调用格式为:
     scanf(格式控制符,地址列表)
【说明】
   1)地址列表中给出各变量的地址,可以为变量的地址,也可以为字符串的首地址。
2)格式控制符由%和格式符组成,作用是将要输入的字符按指定的格式输入,如%d,%c等。
表2-6 scanf函数的格式符表2-7 scanf函数的附加格式说明符 六、格式化输出函数printf
  printf函数的功能是格式化输出任意数据列表,其一般调用格式为:
     printf(格式控制符,输出列表)
【说明】
  1)格式控制由输入格式说明和普通字符组成,必须用双引号括起来。
   ●格式说明由%和格式字符组成,作用是将要输出的字符转换为指定的格式,如%d,%c等。
   ●普通字符是在输出时原样输出的字符,一般在显示时起提示作用。
2)输出列表是需要输出的一组数据(可以为表达式和变量),各参数之间用“,”分开。要求格式说明和各输出项在数量和类型上要一一对应,否则将会出现意想不到的错误。 表2-8 printf函数的格式符                例如,对如下程序段
int i=1;
long j=123;
printf("%d,%2d,%03d,%1d,%-4ld,%05ld",i,i,i,j,j,j);
输出:1, 1,001,123,123 ,00123  表2-9 d格式符                表2-10 f格式符 表2-11 s格式符   例2.17 某幼儿园里,有5个小朋友编号为1,2,3,4,5,他们按自己的编号顺序围坐在一张圆桌旁。他们身上都有若干个糖果(键盘输入),现在他们做一个分糖果游戏。从1号小朋友开始,将自己的糖果均分三份(如果有多余的糖果,则立即吃掉),自己留一份,其余两份分给他的相邻的两个小朋友。接着2号、3号、4号、5号小朋友同样这么做。问一轮后,每个小朋友手上分别有多少糖果。
 【分析】题目中有5位小朋友,他们初始时糖果的数目不确定,用a,b,c,d,e分别存储5个小朋友的糖果数,初始值由键盘输入。
  程序如下:
  #include
  #include
  using namespace std;
  int main()
  {
   int a,b,c,d,e;
   scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
   a=a/3;b=b+a;e=e+a;   //1号小朋友分糖
   b=b/3;c=c+b;a=a+b;   //2号小朋友分糖
   c=c/3;d=d+c;b=b+c;   //3号小朋友分糖
   d=d/3;e=e+d;c=c+d; //4号小朋友分糖
   e=e/3;a=a+e;d=d+e; //5号小朋友分糖
   printf("%5d%5d%5d%5d%5dn",a,b,c,d,e); //%5d按5位宽度输出
   system("pause");
   return 0;
  }
  运行结果:
  输入:8 9 10 11 12
  输出: 11 7 9 11 6七、几种输入输出格式的几点说明  1、cin和cout在Dev C++中只能调用库,而其他输入输出格式要调用库或库。
  2、cin和cout属于C++的概念,调用时涉及输入输出流,而scanf和printf属于C的概念,是C语言的标准输入/输出库中的函数,所以在时效上,scanf和printf优于cin、cout,对于大数据的输入输出,通常情况下应该用scanf、printf。
3、对于普通数据的输入输出,cin和cout比较方便,而在格式化方面,scanf和printf比较容易。
4、scanf和printf也缺点,cin和cout能够自动识别变量的数据类型,因此,在进行输入输出时,不需要指定数据类型,printf和scanf函数在输入输出时需指定数据类型。第六节 顺序结构实例 我们已经学习了数据输入输出、赋值语句以及基本的数据类型。下面举一些实例,通过阅读和模仿这些程序,让选手逐步熟悉程序的编写和巩固知识点,为以后各章的学习打好基础。   例2.18 输入一个三位数,要求把这个数的百位数与个位数对调,输出对调后的数。
  【分析】先求出自然数的个位、十位、百位,然后个位与百位对调。
  程序如下:
  #include
  using namespace std;
  int main()
  { int a,b,c,m,n;
   cin>>m; //输入一个三位数
   a=m/100; //百位数
   b=(m/10)%10; //十位数
   c=m%10; //个位数
   n=c*100+b*10+a; //重新组合对调后的数
   cout<<"n="<  }
运行结果:
输入:234 输出:n=432   例2.19 已知某班有男同学x位,女同学y位,x位男生平均分是87分,y位女生的平均分是85,问全体同学平均分是多少分?
  【分析】 男女生的人数需要用户输入,然后根据题意(x*87+y*85)/(x+y)求出全体同学的平均分。
   程序如下:
  #include
  using namespace std;
  int main()
  {
   int x,y;
   cin>>x>>y; //输入男女人数
   cout<  }   例2.20 歌手大奖赛上6名评委给一位参赛者打分,6个人打分的平均分为9.6分;如果去掉一个最高分,这名参赛者的平均分为9.4分;如果去掉一个最低分,这名参赛者的平均分为9.8分;如果去掉一个最高分和一个最低分,这名参赛者的平均是多少?
  【分析】 首先求出6名评委的总分,然后根据去掉最高分的总分和最低分的总分,求出最高分的分值和最低分的分值,最后总分减去最高分和最低分除以4即是答案。
  程序如下:
  #include
  int main()
  { float high,low,sc_all,sc_high,sc_low,ans;
   sc_all=6*9.6; //求6名评委的总分
   sc_high=5*9.4; //求去掉最高分后的总分
   sc_low=5*9.8; //求去掉最低分后的总分
   high=sc_all-sc_high; //求最高分
   low=sc_all-sc_low; //求最低分
   ans=(sc_all-high-low)/4; //求平均分
   printf("%5.2fn",ans); //%5.2f按实数格式输出,保留2位小数
  } //运行结果: 9.60   例2.21 传说古代的叙拉古国王海伦二世发现的公式,利用三角形的三条边长来求取三角形面积。已知△ABC中的三边长分别为a,b,c,求△ABC的面积。(提示:海伦公式
  
,其中p=(a+b+c)/2 )
  【分析】 公式中p是三角形周长的一半,求出p后直接代入海伦公式中求得面积。
#include //Dev C++可调用
#include //在Dev C++中可调用数学函数库cmath
int main()
{ float a,b,c,p,s;
scanf("%f%f%f",&a,&b,&c); //输入三角形的三边
p=(a+b+c)/2; //求出p的值
s=sqrt(p*(p-a)*(p-b)*(p-c)); //根据p求面面积,sqrt是开方函数
printf("%0.3fn",s); //输出面积,0.3f按实际位数输出,保留3位小数
}
  运行结果:
   输入:3 4 5 输出:6.000   例2.22 分钱游戏。甲、乙、丙三人共有24元钱,先由甲分钱给乙、丙两人,所分给的数与各人已有数相同;接着由乙分给甲、丙,分法同前;再由丙分钱给甲、乙,分法亦同前。经上述三次分钱之后,每个人的钱数恰好一样多。 求原先各人的钱数分别是多少?
  【分析】 设甲、乙、丙三人的钱数分别为A,B,C。用倒推(逆序)算法, 从最后结果入手,按反相顺序,分步骤推算出每次各人当时的钱数 : (在每个步骤中,各人钱数分别存在A、B、C中)
  #include //Dev C++可调用
  int main() //调用iostream库,使用printf语句编译通不过
  { int a,b,c;
   a=8; b=8; c=8; //对应于步骤①
   a=a/2;b=b/2;c=a+b+c; //对应于步骤②
   a=a/2;c=c/2;b=a+b+c; //对应于步骤③
   b=b/2;c=c/2;a=a+b+c; //对应于步骤④
   printf("a=%-5db=%-5dc=%-5dn",a,b,c); //%-5d按5位宽度输出,左对齐。
  }
  运行结果:
  a=13 b=7 c=4 例2.23 求一元二次方程x2+3x+2=0的两个实数根。
【分析】方程的系数是常量,分别用A,B,C表示,运用数学求方程的根,采取如下方法 :
   ① 先求出d=B2-4AC;(求根公式中需用开方运算的那部分)
   ② 再用求根公式算出x1,x2的值。(x1,x2 = ? )
   ③ 输出x1,x2。
#include //Dev C++可调用
#include //在Dev C++中可调用数学函数库cmath
#define A 1
#define B 3 //常量说明,A,B,C表示方程系数
#define C 2
int main()
{
int d; //d为整型变量
float x1,x2; //x1,x2为实型变量
d=B*B-4*A*C;
x1=(-B+sqrt(d))/(2*A); //求方程的根
x2=(-B-sqrt(d))/(2*A);
printf("x1=%-8.3fx2=%-8.3fn",x1,x2); //%-8.3f按8位宽度,3位小数,左对齐
}//运行结果:
// x1=-1.000 x2=-2.000【上机练习2.2】  1.有三个小朋友甲乙丙。甲有50粒糖果,乙有43粒糖果,丙有13粒糖果。现在他们做一个游戏。从甲开始,将自己的糖分三份,自己留一份,其余两份分别给乙与丙,多余的糖果自己吃掉,然后乙与丙也依次这样做。问最后甲、乙、丙三人各有多少粒糖果?
  2.输入两个正整数A和B,编程交换这两个变量的值。
  3.编写程序把一个三位整数反转,例如358反转成853。
  4.某车棚存有自行车和三轮车共65辆,它们的轮子数合计为150个,求该棚内存有的自行车和三轮车各是多少辆?
  5.五位好朋友相聚。第一位朋友带来了很多糖块赠送给各位朋友,使每人的糖块在各自原有的基础上翻了一倍;接着第二位好友也同样向每人赠送糖块,他同样使每人的糖块在各人已有的数量上翻了一倍;第三、第四、第五位好友都照此办理。经过这样的赠送之后,每人的糖块恰好都为32块。问各位好友原先的糖块数分别是多少?
同课章节目录