《第1章C程序设计基础.ppt》由会员分享,可在线阅读,更多相关《第1章C程序设计基础.ppt(100页珍藏版)》请在三一文库上搜索。
1、第一部分 C+结构化程序设计,第一章 C+程序设计基础,授课老师: 张冰怡 13820386019 25楼B1221 课件参考自金志刚 教授,引论-计算机基础,0.1 信息与信息技术基础 0.1.1 信息与数据 1.信息 信息是当今社会经济发展的重要因素, 没有一个严格的定义, 信息既不是物质, 也不是能量,信息是一种宝贵的资源。 信息、材料(物质)、能源(能量)是组成社会物质文明的三大要素。 2.数据 数据是信息的载体。数值、文字、语言、图形、图像等都是不同形式的数据。,3.信息与数据的关系 数据是记录下来可被鉴别的符号,本身没有意义, 只有经过解释才有意义,才能成为信息。信息是经过加工并
2、对客观世界产生影响的数据, 是对数据的解释。 信息按照应用领域可以分为管理信息、社会信息、科技信息和军事信息等; 信息按照反映形式可分为数字信息、图像信息和声音信息等。,0.1.2 信息技术 信息技术指获取、传递、处理、存储、再生和利用信息的专门技术。 包括感测技术、通信技术、计算机技术、 自动控制技术以及由这些技术分解出的其他相关技术. 信息技术是高新技术发展的基本代表和最主要 的技术领域, 正在对全球经济产生着巨大影响。信息技术也是当今技术创新的基础和技术创新的内容。,0.1.3 信息技术与信息产业 信息技术的发展大大促进了信息产业的发展, 信息技术正在成为各国经济增长的新动力. 信息产业
3、的概念有狭义和广义之分。 狭义信息产业主要指以计算机和通信技术为核心的信息处理产业;,0.2 计算机发展简史 1642年,法国数学家帕斯卡(B.Pascal)就发明了齿轮式加减法器, 这是人类历史上第一台机械式计算机。 1673年, 德国数学家莱布尼兹(G.W.Leibniz)设计完成了机械乘除器, 从而使得机械式计算设备能够完成基本的四则运算。 1822年,英国数学家巴贝奇 (C.Babbage) 尝试设计用于航海和天文计算的差分机和分析机, 这是最早采用寄存器来存储数据的计算机. 1884年,美国的霍列瑞斯 (H.Hollerith) 制造出了制表机并获得专利。这是计算机发展史上第一次质变
4、。 制表机的发明是机械计算机向电气技术转化的一个里程碑,标志着计算机作为一个产业开始初具雏形。,2.现代的计算机 现代的计算机是电子计算机。 大家公认为世界上第一台现代计算机是在1946年2月研制成功的.当时为了精确计算弹道轨迹和火力表,美国费城大学“莫尔小组” 的四位科学家和工程师研制出了世界第一台通用数字电子计算机ENIAC(Electronic Numerical Integrator And Calculator),即电子数字积分计算机。 这台计算机共使用了18 800个真空管,重达30 t,占地面积1 500平方英尺, 工作时至少需要200 kW电力, 每秒钟只能进行5 000次加减
5、运算。虽然ENIAC体积庞大,运算速度慢,但它预示着电子计算机时代的到来,具有划时代的意义。 之后美国数学家冯诺依曼(J.Von Neumann)提出的“程序存储方式”理论,即将运算步骤写成程序预先存放在计算机中,然后让计算机执行程序, 以自动完成计算,为现代计算机在体系结构和工作原理上奠定了基础。,0.2.2 计算机的发展历程 从世界上第一台电子计算机诞生至今, 计算机的发展总体上可以划分为五代。 第一代电子计算机为电子管计算机,时间大至在1946年到1953年。 第二代电子计算机为晶体管计算机,时间大至在1954年到1964年。 第三代电子计算机为集成电路计算机,时间大至在1964年到19
6、74年。 第四代电子计算机是采用大规模和超大规模集成电路和半导体存储器的计算机,时间大至在1974年到1991年。 第五代电子计算机仍采用超大规模集成电路,其主要特点是大规模并行数据处理及系统结构的可扩展性。第五代计算机的时间大至可以认为是1991年至今。,将主要介绍 以下内容: 冯诺伊曼结构 计算机的组成 微型计算机系统 计算机中的数据与编码,引论-计算机系统组成与工作原理,主 机,外部设备,1. 冯诺伊曼理论,运算器,控制器,内存储器,外存储器,存储器,输出设备,硬件系统,CPU,输入设备,计算机硬件系统由 运算器、存储器、控制器、输入设备、输出设备五大部件组成,计算机内部采用二进制形式表
7、示数据和指令,如:存储器,0 1 1 0 1 0 0 0,软盘,内存,打印机,CPU(由运算器和控制器组成),输 入,程序 原始数据,输出,运算结果,指令数据线,控制信号线,存储程序并自动执行,键盘,0,输入设备,外部存储器,输出设备,0,0,0,1,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1,2.计算机的组成,一台完整的计算机系统是由硬件系统和软件系统组成。,硬 件系统,计算机硬件系统,软件系统,软件系统,计算机硬件结构关系图,输入设备,输出设备,外存储器,外部设备接口,内存储器,运算器,控制器,指令数据线,计算程序,原始数据,计算结果,取数,存数,指令,控制
8、信号线,各部件主要功能,运算器:是对数据进行算术和逻辑运算的部件; 控制器:是整个计算机硬件系统的指挥控制中心,主要任务是不断从存储器取出指令、分析指令并执行指令。 运算器和控制器合称中央处理器,简称。,各部件主要功能,存储器:是计算机中存放程序和数据的部件。 通常分为: 内存储器(简称内存) 外存储器(简称外存或辅存) 内存又分为: 高速缓冲存储器(Cache) 只读存储器(ROM-Read Only Memory) 随机存储器(RAM-Random Access Memory),各部件主要功能,外存储器(也称辅助存储器): 与内存储器相比,它的特点是存储容量大、成本低,可以永久脱机保存信息
9、,但存取速度慢。常用的外存储器有: 磁带、 软磁盘、 硬磁盘、 光盘,各部件主要功能,输入设备 其作用是将程序和数据输入到计算机中,并转换成二进制代码,送入计算机主存。 常用的输入设备有: 键盘、鼠标器、扫描仪、光笔等。 输出设备: 其作用是将计算机的执行结果输出。输出的形式是人们容易识别的形式,可以是数字、字符、图形、图像、声音等。 常用的输出设备有: 显示器、打印机、绘图仪、语音输出装置等。,3. 微型计算机系统,目前广泛使用的微型计算机(Microcomputer,简称微机)。它以体积小、重量轻、功能强、价格低等优点深受用户青睐。,微型计算机的主要部件,微机硬件系统的具体部件,包括总线、
10、主板、CPU、存储器、显示系统、键盘、鼠标等。,总线,在微机系统的复杂结构中,各部件之间需要有一个能够有效高速传输各种信息的通道,这就是总线。微机基本结构是由总线将CPU、主存储器和输入输出接口电路连接起来,并与外界实现信息传送。 微机采用总线结构不仅提高了系统工作效率和处理速度,简化了微机的系统结构,而且大大简化系统硬件的设计过程,减轻了软件设计和调试工作量,缩短了硬、软件的研制周期,从而降低了系统成本。,微机的基本结构,微机系统的总线由地址总线AB、数据总线DB及控制总线CB组成。(地址总线是单向的),主板,各种型号的主板,CPU,CPU是“中央处理器”或“中央处理单元”的简称,对微型机来
11、说也称为“微处理器”。由于它将运算器和控制器集成在一块芯片中,所以又称为“运算控制器”,CPU的性能在很大程度上决定了计算机系统的整体性能。,存储器,存储器主要用于存放计算机的程序和数据,对存储器的基本要求是容量大、速度高、价格低。单一的存储器硬件(主存储器)难以满足要求。所以就提出了多层次的存储体系结构: Cache主存外存。,计算机系统的基本工作原理,5+4=? 计算程序基本工作步骤:,(用表示),计算机系统的工作过程,4、计算机中的数据与编码,计算机中的数据 在现代计算机系统中,任何信息都是以二进制来表示的,无论其外在形式是文字、数值、图形图像、声音,还是其他形式,在计算机内部都是以0、
12、1代码的形式处理的。,数制,数制: 称为进位计数制,简称“进制”. 计算机中几种常用的进制 : 十进制: “逢十进一” 二进制:有两个不同的数码符号和, 按“逢二进一” 八进制:有八个不同的数码符号, 按“逢八进一” 十六进制:有16个不同的数码符号和A、B、C、D、E、F,按“逢十六进一”,数值转换,任意进制数N 可以表示为: N=an-1kn-1+ an-2kn-2 + + a1k1 + a0k0 + a-1k-1 + a- 2k-2 + 其中ai 表示各数位上的数码,取值范围为0r-1 r称为基数, Ki 称为权。 对各种非十进制数,可利用此式转换为十进制数。,非十进制数转换为十进制数,
13、【例】 (1101.11)2 123+122+021+120+12-1+12-2 84010.50.25 (13.75)10,非十进制数转换为十进制数,【例】 (456.124)8 48258168018-128-248-3 256400.1250.031250.0078125 (302.1640625)10,非十进制数转换为十进制数,【例】 (2A4E)16 2 163A1624161E160 819225606414 (10830)10,十进制数转换成进制数,十进制数转换成进制数: (r可以是任意进制) 十进制数转换成进制数,要对整数和小数部分分别转换,最后再将两部分合成一个数。 方法:
14、整数部分的转换用除以取余数的方法,直至商为,余数依从右到左排列即为所求; 小数部分的转换用乘以取整数,直至取走整数后余下的数为止,所取整数从左至右排列即为所求。,为了对计算机中非数值的文字和符号进行处理,需用二进制数表示这些文字和符号。字符编码就是规定用怎样的二进制数编码来表示文字和符号。 主要包括: BCD码 ASCII码 汉字编码,字符编码,BCD码又称二十进制编码 (Binary Coded Decimal) 这种编码是把十进制数的每一位分别表示成四位二进制数形式的编码。 【例】 十进制数2的BCD码为:0001 0010 十进制数825的BCD码为:1000 0010 0101,BCD
15、码,文本字符普遍采用ASCII码(American Standard Code for Information Interchange) 即美国信息交换用标准代码。 ASCII码有位版本和位版本,国际上通用的是位版本。 位版本的ASCII码有128个元素,每个元素用个二进制位27128)编码。其中通用控制字符33个,阿拉伯数字10个,大小写英文字母52个,标点符号和运算符号33个。,ASCII码,每个字符使用位二进制数进行编码; 当最高位为0时,称为基本ASCII码(编码与7位ASCII码相同); 当最高位为时,形成扩充ASCII码,表示数的范围为128255,也可表示128种字符。通常各个国
16、家都把扩充的ASCII码作为自己国家语言文字的代码。,位版本的ASCII码,解决汉字的输入、输出、存储以及汉字处理等所使用的编码。 汉字编码包括: 汉字输入码 汉字内部码 汉字交换码 汉字字形码等。,汉字编码,在计算机中只能用数字表示数的正、负,并规定用“0”表示正号、“1”表示负号。这种表示数的形式称为 机器数。 例如:一个字存储一个数,形式为:,0 101011 .,符号位,数值部分,计算机中数据的表示,二进制数的表示:原码、反码、补码。 原码 高位为符号位,数值部分即为原数。 如:八位的原码 X1= + 0001001 X1原 = 00001001 X2= 1001001 X2原 = 1
17、0001001 在原码表示中,0有两种不同的表示形式: + 0原 =00000000 0原 =10000000, 反码 正数的反码=原码; 负数的反码=原码尾数部分按位取反。 如:八位的反码: X1= + 0001001B X1反=00001001 X2= 1001001B X2反=11110110 在反码表示中,0也有两种不同的表示形式: +0反=00000000 -0反=11111111,(3)补码: 正数的补码:同原码 负数的补码:按位求反,末位加1 例: x=-00101110 00101110 -原码 11010001 -按位求反 x补码 : 11010010 -末位加1 +0补码
18、= 00000000 11111111 00000000 = - 0补码 0 的表示唯一,使用补码,可以将减法用加法来实现。,定点数和浮点数,为了正确的表示小数点的位置,一般采用两种方式: 定点数: 约定小数点的位置固定不变 浮点数: 小数点的位置浮动,定点数: 以下是两种定点数示意:,符号位 数值部分,约定小数点位置,符号位 数值部分,约定小数点位置,浮点数:一个数N用浮点形式表示,可以写成:,浮点数的具体格式随机器不同而不同。 例如:某机器字长32位,用左边的8位作为阶码,右边的24 位作为尾数,符号位都在最高位,其格式为:,F1 阶码 F2 尾数,阶码符号位,尾数符号位,N = + M
19、R + E,【例】假定阶码和尾数均采用补码表示,0.252-3的浮点表示是:11111101001000000000000000000000 11111101=-3的补码,001000000000000000000000=0.25的补码,数的表示范围,设机器的位数为N位(包括1位符号位) 定点数表示的范围有: 整数:原码和反码能表示的最大数为:2N-11 最小数为: (2N-11) 补码能表示的最大数为:2N-11 最小数为:2N-1 小数:原码和反码所表示的数的范围是:(12-N) (12-N) 补码表示数的范围是:1 (12-N),浮点数表示的数的范围由阶码的位数和尾数的位数决定。 例如:
20、用32位表示一个浮点数,阶码占8位,尾数占24位:,为解决某一问题而设计的一系列指令称为程序。 程序和相关数据存放在存储器中,计算的工作就是执行存放在存储器中的程序。 程序的执行又自动地控制着整个计算机的全部操作。 这就是50年前美国数学家冯诺依曼提出的程序存储和程序控制的思想。这也是目前计算机的基本工作方式。,1.1 C+语言概述,1. C+语言与程序设计,计算机程序: 程序设计:就是将解决某个问题的过程用程序设计语言描 述出来,计算机按这个描述去逐步实现。 程序设计语言:编写程序的语言。,2. 程序设计语言分为,面向过程的程序设计语言,如 C、FORTRAN等 面向对象程序设计语言,如C+
21、、JAVA等,1.2 C程序开发过程:,1.3 程序实例,例1:在屏幕输出“你好,欢迎你!”,/* Hello program */ #include void main() cout你好,欢迎你!; /你好,欢迎你! ,程序说明: 两种注释 编译预处理行 main( )函数: void、函数体、程序执行的起点 语句:一行可以写若干条语句,每个语句用“;”作为结束。,例2:编写程序从键盘任意输入2个数,输出这2个数的和。,#include void main() int a,b,n; cout ab; n=a+b; cout“a+b=”nendl; ,程序说明: 第行为变量定义 第4行是输出语
22、句 第行输入 第行是赋值运算 第行中endl也可以用“n”或n代替,表示换行。,例3: 由两个函数组成的+程序。,#include int fmax(int a, int b) if(ab) return a; else return b; int main( ) int v1, v2; coutv1v2; cout两个数中较大数是:fmax(v1, v2)endl; return 0; ,常用的基本数据类型, 变量占用空间的大小与使用的编译系统有关。,1.6 变量、常量及引用,1. 常量,常量,2. 直接常量,程序中直接使用的常数值。,1.6 变量、常量及引用,每个常量与一定的内存单元相对应
23、。程序执行时其值不可以改变。,3. 常量的类型,整型、浮点型、字符型、字符串常量、布尔型。,十进制整数: 由09数字组成的正负整数,如、15、-247。 八进制整数: 以数字0开头的整数,由数字07组成,如015, 0238。 十六进制整数: 以0x或0X开头的整数,由数字09和字母af (或大写)组成。例如:0x516, 0x8AB,0xb2ff。,1)整型直接常量 用于表示一个整数。,注意:八进制和十六进制只能表示无符号整数. 任一整型常数后跟字母(或)时,为长整型. 如:12345L 任一整型常数后跟字母(或)时,为无符号整型. 如:7895,1.6 变量、常量及引用,2)浮点型直接常量
24、 用于表示一个带小数的数。, 浮点型常数有两种表示形式: 小数形式:3.14159,0.55,123.0。 指数形式:+5.25e-8 表示 +5.2510-8 0.5678e+05 表示 0.5678105,1. 指数形式表示浮点型数时e(或E)前可以是整数或小数,但后的指数部分必须是整型数。 2. 浮点型数总是按double类型存储的,只有在数的后面加上才按float类型存储,如1.234E-6f。 3. 长双精度(long double)型常量通常在双精度数后面加上l或L表示,如:1.2345e-12L。,说明:,1.6 变量、常量及引用,3)字符型直接常量 用单引号括起来的单个字符。,
25、1.字符型常量中的单引号作为定界符,不是字符型常量内容。 2.字符型常量具有数值,其值就是该字符的ASCII码值。而且值可以作 为整数参与运算,例如: +5 结果为102,是字符的ASCII码值 9-6 结果为51,是数字字符的ASCII码值 A+32 结果为97 ,是字符的ASCII码值 - 结果为整数2。 3. 对不可打印的字符和特殊字符要使用以反斜杠开始的转义序列。,说明:,1.6 变量、常量及引用,例:可打印字符:A、S、*、a 不可打印字符:n(回车符)、0(空字符) 特殊字符:、”、 、 ?,4)字符串直接常量 用双引号括起来的若干个字符。,1. 字符串中可以包含空格、转义字符、中
26、文字符等。 2. 双引号作为字符串的定界符,不是字符串中的内容。 3. 一个字符占一个字节,一个汉字占两个字节。 4. 编译程序在存储字符串常量时自动在字符串最后加一个0作为一 个字符串的结束标志,0占一个字节位置。 5. 字符串长度是指字符串中包含的字符个数(一个汉字算两个字符), 字符串存储长度=字符串长度+1。,说明:,1.6 变量、常量及引用,例: “This is a stringn” “a” “ABCnxyz” “1234” “中国_天津”,) 布尔直接常量 仅有两个值,即 true(真)和 false(假)。, C+没有提供独立于整型的基本布尔类型,布尔类型数据是占一个字节, t
27、rue 用1表示, false用0表示。,6)符号常量 为常量起一个名字,称为符号常量。,1. 符号常量在说明时一定要赋初值,其值程序中不能修改。 2. 符号常量名不要和一般变量名重名。 3. 使用符号常量可以提高程序的可读性,增强程序的可维护性。,说明:, 符号常量的说明形式为:,const 常量名常量值; 或 const 常量名常量值;,例: const int CLASSSIZE=30; const double pi=3.14159;,返回,变量 程序执行中其值可以改变的量。每个变量与一个 或多个内存单元相对应。,2. 变量名 变量的标识名(内存单元的标号)。变量名属 于C+的标识符,
28、取名规则见书。,例:,1.6 变量、常量及引用,变量,变量的值,可以改变。,3. 变量的定义,变量,一般形式为: ,4. 变量的类型,告诉计算机应为变量分配多少内存空间、取值范围以及可以对变量进行的合法操作。, C+系统已定义的基本数据类型见下页。,1.6 变量、常量及引用,char a,b,c; /定义、c为字符型变量 int x,y; /定义、为整型变量 long int s1,s2; /定义s1、s2为长整型变量 float data_1; /定义data1_1为浮点型变量 double w1,w2 /定义w1、w2为双浮点型变量 unsigned m, n; /定义、n为无符号整型变量
29、,例:变量定义举例。,1.6 变量、常量及引用,5. 变量的初始化 在定义变量的同时可以给其赋值。,char a=A; int x=0, y=12 ; double w1=12.3456, w2= -0.4567e-4; char ch(B); long int x1(1), y1(100); double data1(12.056), data2( -0.12345e-4);,例:变量的初始化。,1.6 变量、常量及引用, 对已定义变量可以用多种方式改变它的值。,int x, y=12 ; double w1=12.3456, w2; x=18; y=25; cinw1w2;,例:改变变量的
30、值。,1.6 变量、常量及引用,关于变量的讨论:, 函数体内定义的非静态变量,若没有赋初值,则在刚定义 后其值不确定。, 赋给变量的值不应超过它的取值范围。, 改变变量的值(为变量赋值)是一个“覆盖”过程,即无论 变量原来的值是什么,变量赋值后,新值将取代原有的值。,例: int x=15; x=23;,例:int x; coutx+5endl;,例:int x; x=5000000000;,1.6 变量、常量及引用,#include void main( ) int d1=5, d2=20; double x1=12.5, x2=-5.0; char ch1(*), ch2(A); cout
31、d1+d2endl; coutx1-x2endl; coutch1“ “ch2+3endl; ,25 17.5 * D,运行结果:,例:程序中的变量。,返回,1. 什么是引用,引用,为程序中已经定义过的变量取一个别名,这个别名称为引用。,2. 说明引用, 变量名是已经定义过的一个变量名;与被引用 变量的类型相一致。,1.6 变量、常量及引用,一般形式为: & = & (变量名),#include void main() int a(5); int ,例:引用举例。, 5 10 10,输出结果:, rea 是 a 的引用(别名),所以它们对应的是相同的存 储空间。,返回,1. 枚举数据类型,枚举
32、类型,用户自己定义的数据类型,将一些可能取值的量逐个列举出来 。,2. 枚举类型的定义,一般形式为:enum 枚举元素;,例:枚举类型的定义。,enum weeksun,mon,tue,wed,the,fri,sat; week a,b; enum dxeast,west,south,north x,y;,枚举型使用说明(1):, 枚举元素在说明后都自动有一个整数值。,例:enum weeksun,mon,tue,wed,the,fri,sat; 其中,sun的值为,mon的值为,sat的值为6, 可以为枚举元素另指定一个整数值,指定元素后边的 各元素值按增的顺序重新排列。,例:enum we
33、ekmon=1,tue,wed,the,fri,sat,sun; 其中,mon的值为,sat的值为6, sun的值为7,枚举型使用说明(2):, 仅能给枚举变量赋枚举元素值。,例:enum weeksun,mon,tue,wed,the,fri,satw1,w2; w1=mon; w2=fri; /正确 w1=1; w2=5; /错误 w1=(week)1; /正确, 对两个同类型的枚举变量可进行比较,实际比较的是它们 所取的枚举元素的值。,例:w1w2 结果为 false,枚举型使用说明(3):,返回,例:enum weeksun,mon,tue,wed,the,fri,sat w1,w2;
34、 cinw1w2; /错误 w1=mon; w2=fri; coutw1“ ”w2endl; /输出结果:1 5, 枚举变量不能用于输入,输出时仅输出枚举值的顺序号。,1.7 运算符与表达式,1. C+的表达式,表达式是指能计算出值的式子。,2. C+表达式的组成,表达式由操作数(包括:常量、变量及函数调用)、运算符和括号()组成。,3. 运算符,运算符是一个表示对操作数进行特定运算和处理的符号。,算术运算符与算术表达式, 算术运算符包括: (加)、(减)、* (乘)、 (除)、 (取余数) 、可作一元运算符使用,表示正和负。 两个整型数相除,结果仍为整型数。 用于求两个整型数相除的余数。,例
35、: int a=21,b=4; a/b; a%b;,简单赋值运算符与赋值表达式, 简单赋值表达式的形式为: 变量表达式 赋值表达式完成的运算是把表达式的值存入左侧的变量。 赋值表达式的值为赋值后左边变量的值。,例:int a=21,b=4,c; c=a+b; a=b=1;,为变量赋值具有“覆盖”的性质。在对变量初始化时使用的“=”不是赋值运算符,它只是一个初始化符号。,复合赋值运算符与赋值表达式, 将其他运算符和简单赋值运算符放在一起的缩写形式,例 如: +=、-=、*=、/=、%= 等。 复合赋值表达式的形式为:变量表达式,例: int a=21,b=4,c; c/=a+b; /等价于 c=
36、c/(a+b);,右侧的表达式应视为一个整体。,自增和自减运算符, 自增运算符(+)和自减运算符(-)的两种使用方式: 前缀使用方式: 变量 后缀使用方式:变量 ,例:,应避免在一个表达式中对同一个变量多次进行自增或自减。,关系运算符与关系表达式, 关系运算符用于比较两个操作数的大小,包括: (大于)、=(大于等于)、=(等于)!=(不等于) 关系表达式的值是整数值,当关系式成立时为1;否则为0 。 不能用关系运算符比较两个字符串的大小。,例: int a=0,b,c,d; b=(a=0); /注意区别=和=。 c=(a=0); d=m=x; / 比较字符的ACSII码 d=“abc”“efg
37、” / 错误,逻辑运算符与逻辑表达式(1), 逻辑运算符用于对操作数进行逻辑运算,包括: &(逻辑与)、|(逻辑或)、!(逻辑非) C+中可以用非0数表示逻辑真,用0表示逻辑假。 逻辑表达式的值取值为1或0。 逻辑运算符的使用形式是: 操作数1 & 操作数2 操作数1 | 操作数2 !操作数,逻辑运算符与逻辑表达式(2),例1:如果要判断多个条件是否成立一定要用逻辑运算符。 int a=-5,x,y; x=-1=-1 /表达式的值为 0,逻辑运算符与逻辑表达式(3),例2:多个 / l2、x、y、z的值分别为:,1,2,1,1,0,0,2,0,条件运算符与条件表达式, 条件表达式的一般形式为:
38、 ? : ,例:条件表达式举例。,#include void main() int a,b,c; cinab; c=ab?a:b; coutcendl; ,逗号运算符与逗号表达式, 逗号表达式的一般形式为: 表达式1,表达式2, ,表达式n 逗号表达式的功能是:从左到右计算各表达式,并以最后 一个表达式的值作为逗号表达式的值。,例:逗号表达式举例。 int a,b,x; x=(a=1,b=3,+b,a+b);,求字节运算符, 求字节运算符的使用形式为: sizeof(e) e可以是可以是任意类型的变量、常量、类型名或表达式。 求字节运算符的功能是:求 e 在内存中占用的字节数。,例:求字节运算
39、符举例。 int s1,s2,a=2; double x=4.5; s1=sizeof ( int ); /求int类型数据所占的字节数 s2=sizeof (a+x); /求a+x的值所占的字节数,类型转换运算符(1), 类型转换运算符的使用形式为: (类型名)表达式 或 类型名(表达式) 功能是:将“表达式”的值转换成“类型名”所指定的类型。,1. 整数转换为字符型,则去掉多出的高位; 2. 长整型转换为一般整型时,去掉多出高位; 3. 浮点型转换成整型时,去掉小数部分; 4. 双浮点型转换成单浮点型时,按单浮点型位数舍入。,转换原则:,类型转换运算符(2),例:类型转换运算符使用举例。
40、int s1=24,s2=5; double x, y; x=(double)(s1/s2); y=(double)s1/s2;,x 的值是:4.0 y 的值是:4.8,结果:,运算符的优先级和结合性,2. 结合性:,优先级,几种不同的运算符出现在一个表达式中时,优先级别高的先计算,优先级别低的后计算。,当在一个表达式中连续出现多个同优先级运算符时,对它们的运算是按由左到右顺序,还是按由右到左顺序。, 运算符的优先级及结合性见教材表1.4(p25)。,混合数据类型表达式的计算(1), 如果两个操作数的类型不同,把取值范围较窄的那个值的类型转换为取值范围较宽的那个值的类型,然后进行计算。, 对赋
41、值运算符 “=” ,采用隐式强制类型转换。,例:int a; double b=3.65; a=b; /赋值后变量 a 的值为 3,例:int x=5,y=2; double a=3.4,b=3.3,r1,r2; r1=x/y*(a-b); r2=x*(a-b)/y;,r1 的值是:0.2 r2 的值是:0.25,结果:, 转换是逐步进行,而不是一次完成。,混合数据类型表达式的计算(2), 表达式中的char和bool型数据一定会转换成int型,而float型一定会转换成double型。,A B 66,程序运行结果:,1.9 基本输入/输出,1. 输入,指在程序运行时由输入设备(常指键盘)向程
42、序提供数据。,2. 输出,指将程序的运行结果在输出设备(常指显示器)上输出。, cin 的使用形式: cin变量1 变量2变量n; 输入时,用空格、制表符或回车作为输入的两个数据之间 的分隔。所以,不能用cin输入空格、制表符或回车。 使用cin时,在程序开始处要写入预编译命令: #include ,输入流对象 cin,例:输入举例。 int a,b,c; cinabc;, cout 的使用形式: cout 默认输出格式:整型数、字符和字符串原样输出;float 型和double型数的有效数字是6位。,输出流对象 cout,#include void main( ) int a=123; lo
43、ng int b=1234567; float x1=12.34, x2=23.456789; double y=12.34567890123; cout“a=”an“b=”bendl; cout“x1=”x1“ ”“x2=”x2endl; cout“y=”yendl; ,例:默认格式输出举例。,a=123 b=1234567 x1=12.34 x2=23.4568 y=12.3457,输出结果:,控制输入输出格式, 使用控制符可以控制输出数据的格式,常用的控制符有: dec 转换为十进制数输入输出 hex 转换为十六进制数输入输出 oct 转换为八进制数输入输出 setw (int) 设置输出的宽度 setprecision (int) 设置浮点数输出的有效数字位数 setfill (char) 设置填充字符 endl 插入换行符 除 endl 外,使用以上格式控制符时,要加上头文件: #include ,输出结果:,24 18 30 24, 24 *24 12.346,例:使用控制符控制输出格式举例。,
链接地址:https://www.31doc.com/p-2597301.html