第1章C程序设计基础.ppt

上传人:本田雅阁 文档编号:3500329 上传时间:2019-09-04 格式:PPT 页数:67 大小:1.89MB
返回 下载 相关 举报
第1章C程序设计基础.ppt_第1页
第1页 / 共67页
第1章C程序设计基础.ppt_第2页
第2页 / 共67页
第1章C程序设计基础.ppt_第3页
第3页 / 共67页
第1章C程序设计基础.ppt_第4页
第4页 / 共67页
第1章C程序设计基础.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《第1章C程序设计基础.ppt》由会员分享,可在线阅读,更多相关《第1章C程序设计基础.ppt(67页珍藏版)》请在三一文库上搜索。

1、第一部分 C+结构化程序设计,第一章 C+程序设计基础,本章内容, C+语言概述 计算机中的数据与编码 C+程序开发过程 C+程序实例 基本数据类型 常量、变量及引用 运算符与表达式 基本输入/输出,1.1 C+语言概述,1. C+语言与程序设计,语言: 人类交流思想的工具 程序设计:就是将解决某个问题的过程用程序设计语言描 述出来,计算机按这个描述去逐步实现。 程序设计语言:编写程序的语言。 与+语言,2. 程序设计语言分为,结构化程序设计语言(第14章) 面向对象程序设计语言(第511章),计算机中的信息可以分为两大类: 控制信息:是控制 计算机完成各种操作的指令和控制字。 数据信息:计算

2、机加工的对。包括数字信息、文字信息 以及各种图形、图像、声音等。,1.2 计算机中的数据,无论是那种数据,在计算机内部都要转换成二进制数后,计算机才能对其进行传送、存储和加工处理。,1.2.1 进位计数制,在计算机中使用的数据有二进制、十进制、八进制和十六进制。 无论哪种数制,它们的共同之处都是进位计数制。 如果数制仅采用R个基本符号,称为R进制。其中R称为基数。 任意一个R进制数N都可以用一个式子展开:,其中:m、n是正整数,m是每个数位上的值, m的取值范围0 R-1 。,进制 基数 进位 使用符号 二进制 2 逢2进位 0、1 八进制 8 逢8进位 0、1、2、3、4、5、6、7 十进制

3、 10 逢10进位 0、1、2、3、4、5、6、7、8、9 十六进制 16 逢16进位 0、1、2、3、4、 5、6、7、8、9、 A、B、C、D、E、F,常用进位计数制,1)R制数到十进制数的转换方法是: 将要转换的数按权展开,各位数字与它的权相乘,最后求的和就是十进制数。 例如: (1101.01)2=123+12202112002 -112-2 =(13.25)10 (205.4)8=28208158 048 1=(133. 5)10 (AF.8)16= 1016 1 15160816 -1 =(175. 5)10,1.2.2 不同数制之间的转换,2)十进制数到R制数的转换方法是:,十进

4、制的整数部份和小数部份分别转换,然后再拼接起来。 整数部份:连续除以R进制的R,直到商为0,将每次除以R的 余数自下而上排列,即构成R进制的整数部分。 小数部份:小数部分连续乘以R进制的R,每次取积的整数, 并将其自上而下排列,直到小数部份为0或规定精 度为止。,例如:将(237.625)10 转换为二进制 整数部分除2取余 余 数 整数 小数部分乘2取整 2 |2 3 7 1 0. 6 2 5 2 |1 1 8 0 取 2 2 |5 9 1 1 1. 2 5 0 2 |2 9 1 值 0. 2 5 2 |1 4 0 2 2 | 7 1 方 0 0. 5 0 2 | 3 1 2 2 | 1 1

5、 向 1 1. 0 0 转换结果为:(237.625)10=(11101101.101)2,例如:将(237.625)10转换为十六进制: 整数部分除16取余 余数 整数 小数部分乘16取整 16 |2 3 7 D (13) 取 0. 6 2 5 16 |1 4 E (14) 值 1 6 0 方 A 10. 0 0 0 向 转换结果为:(237.625)10=(ED.A)16,3)二、八、十六进制之间的转换,二进制与八进制之间转换方法: 以小数点为界,左右分别按3位一划分,两头不够3位时补0, 将划分的3位数按八进制数读出即可。 例如:将二进制10100110101.0111转换成八进制: 0

6、 1 0 1 0 0 1 1 0 1 0 1 . 0 1 1 1 0 0 2 4 6 5 . 3 4 因此:(10100110101.01110)2=(2465.34)8,将八进制转换成二进制时,将每位八进制数用3位二进制表示出来即可。,二进制与十六进制之间转换方法: 以小数点为界,左右分别按4位一划分,两头不够4位时补0,将划分的4位数按十六进制数读出即可。 例如将二进制11110110101.101 转换成十六进制: 0 1 1 1 1 0 1 1 0 1 0 1 . 1 0 1 0 7 B 5 . A 因此:(11110110101.101)2=(7B5.A)16,将十六进制转换成二进制

7、时,将每位十六进制数用4位二进制表示出来即可。,1.2.2 二进制信息的存储单位,位(bit):二进制的1位,是计算机中数据处理的最小单位。 字节(Byte):8位二进制位组成一个字节(1Byte=8bit)。 常用来描述容量的单位有: 千字节(KB),1KB=1024bit 兆字节(MB),1MB=1024KB 千兆字节(GB),1GB=1024MB 字(Word):独立的信息处理单位,又称为计算机字。,1.2.3 非数值数据的表示,字符编码: ASCII(American Sandard Code for Information Interchange)码。 ASCII用一个字节中的7位二

8、进制位来表示一个字符,每个 字符唯一对应一个ASCII码,最多可表示27=128个字符。,汉字编码: 汉字在计算机内部也采用二进制的数字化编码。 广泛应用GB2312-80(国家标准信息交换用汉字编码), 简称国标码,采用二字节编码. 3) 国标码共编码了7445个图形字符,其中6763个汉字和682 个非汉字符号。,1.3 C程序开发过程:,1.4 程序实例,例1: 在屏幕输出Hello,you are welcome!,/* Hello program */ #include void main() coutHello,you are welcome!; /你好,欢迎你! ,程序说明: 两

9、种注释 编译预处理行 main( )函数: void、函数体、程序执行处 语句:一行可以写若干条语句,每个语句用“;”作为结束。,例2:编写程序从键盘任意输入2个数,输出这2个数的和。,#include void main() int a,b,n; cout ab; n=a+b; couta+b=nendl; ,程序说明: 第行为变量定义 第4行是输出语句 第行输入 第行是赋值运算 第行中endl也可以用“”代替,表示换行。,例3: 由两个函数组成的+程序,#include int fmax(int a, int b) if(ab) return a; else return b; main(

10、 ) int v1, v2; coutv1v2; cout两个数中较大数是:fmax(v1, v2)endl; return 0; ,1.5 基本数据类型,程序中处理的数据分为不同的类型。类型不同,存储方式 和使用的场合也不同。,数组类型 结构类型(struct) 联合类型(union) 枚举类型(enum) 类类型 (class),基本数据类型:+系统已定义的类型。可以直接利用这些 类型名来定义数据。,类型名 说明 字节 取值范围 bool 布尔型 1 true,false singned char 有符号字符型 1 -128+127 unsigned char 无符号字符型 1 255 s

11、igned short int 有符号短整型 2 -3276832767 unsigned short int 无符号短整型 2 65535 signed int 有符号整型 4 -2147483648+2147483647 unsigned int 无符号整型 4 04294967295 signedlong int 长整型 4 -2147483648+2147483647 unsigned long int 无符号长整型 4 4294967275 float 浮点型 4 3.410-383.410+38 double 双浮点型 8 1.710-383.410+38 long double

12、长双浮点型 10 3.410-49323.410+4932,.6 常量、变量及引用,.6. 常量 程序中可以直接使用的常数称为常量 常量分为: 整型 浮点型 字符型 字符串常量 布尔常量,1)整型常量 十进制整数: 由数字组成的正负整数,如、15、247。 八进制整数: 以数字开头的整数,由数字组成,如015,0238。 十六进制整数: 以0x或0X开头的整数,由数字和字母(或大 写)组成。例如:0x516,0x8AB,0xb2ff。 八进制和十六进制只能表示无符号整数. 任一整型常数后跟字母(或)时,为长整型.如:12345L 任一整型常数后跟字母(或)时,为无符号整型.如:7895,浮点型

13、数由整数部分和小数部分组成。 浮点型常数有两种形式: 小数形式:3.14159,0.55,123.0。 指数形式:+5.25e-8 0.567805、 其中:+5.25e-8 表示 +5.2510-8 0.5678+05 表示 0.5678105,)浮点型常量(又称实型),指数形式表示浮点型数时e(或E)前可以是整数或小数,但后的指数部 分必须是整型数。 浮点型数总是按double类型存储的,只有在数的后面加上才按float类 型存储,如1.234E-6f。 长双精度(long double)型常量通常在双精度数后面加上l或L表示,如 1.2345e-12L。,说明:,) 字符型常量,字符型常

14、量是用单引号括起来的单个字符 例如: A、S、*、 、 n,说明:,字符型常量中的单引号作为定界符,不是字符型常量内容。 字符型常量具有数值,其值就是该字符的ASCII码值。而且值可以作为 整数参与运算: 如 +5 结果为字符 如 9 - 6 结果为数字字符 如 A+32 结果为 结果为整数。 可以是ASCII字符集中任意可打印字符,包括空格. 转义字符(见表-3 ),) 字符串常量,用双引号括起来的一串字符。 例如:This is a string ABC xyzn 1234 中国_天津,说明:,字符串中可以包含空格、转义字符、中文字符等。 双引号作为字符串的定界符,计算字符串长度时双引号不

15、计算在内。 编译程序在存储字符串常量时自动在字符串最后加一个0作为一个字 符串的结束标志,0占一个字节位置。 一个字符占一个字节,一个汉字占两个字节。 在程序设计中字符串通常用字符数组或字符指针存放。,) 布尔常量 布尔常量仅有两个值,即true(真)和false(假)。,6) 符号常量,为常量起一个名字,称为符号常量。 符号常量在使用前必须进行说明。符号常量的说明形式为: const 数据类型名 常量名常量值; 或数据类型名 const 常量名常量值; 例如: const int m=100; const float pi=3.14159;,说明:,符号常量在说明时一定要赋初值,其值程序中不

16、能修改。 符号常量名不要和一般变量名重名。 使用符号常量可以提高程序的可读性,增强程序的可维护性。,1.6. 变量,1) 标识符 用来为变量、符号常量、数组、函数、类型等命名。 命名标识符有以下规则: 必须由字母、下画线和数字组成 第个字符应是字母或下画线字符 例如:a、x1、data_5、count等为合法的标识符 标识符的长度视具体的编译系统而定。 不能使用+的关键字作为标识符,例如:int、for等 +中变量名区分大小写,因此ex1和 EX是两个不同 的变量名,2)变量 在程序中可以改变值的量称为变量。,每个变量在内存中占有一定的存储单元,该存储单元中存 放变量的值。在程序设计中可以根据

17、需要改变变量的值。 每个存储单元都有一个地址。,12.345,变量名,X1,变量值,存储单元,3) 定义变量 程序中的变量名在使用之前必须定义。,例如: char a,b,c; /定义、为字符型变量 int ,y; /定义、为整型变量 long int s1,s2; /定义s1、s2为长整型变量 float data_1, data_2; /定义data1_1、 data_2为浮点型变量 double w1,w2 /定义w1、w2为双精度型变量 unsigned , n; /定义、n为无符号整型变量,4)变量的初始化 变量在定义的同时可以给其赋值。,例如: char A; int =0,=12

18、 ; 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);,程序举例:,#include void main( ) int d1=5, d2=20; double x1=12.5, x2=-5.0; char ch1(*), ch2(A); coutd1+d2endl; coutx1-x2endl; coutch1“ “ch2+3endl; ,25 17.5 * D,运行结果:,.6.3 引用 程序中定义过的变量名再给它另

19、一个名字,这个名字称为引用(reference)。,说明引用的形式为: 数据类型 引用名变量名; 或 数据类型 引用名(变量名); 其中:变量名是已经定义过的一个变量名; “”是说明引用的符号; 数据类型是被引用变量名的类型。 例如: int a; int ,变量名和引用名是对同一个存储单元的操作,注意:,程序举例:,#include void main() int a(5); int ,输出结果: 5 10 10,存储单元示意:,1.6.4 枚举类型,将一些可能取值的量一一列举出来,称为枚举类型。,说明枚举类型的形式为: enum 枚举类型名枚举元素; 其中:enum是用于说明枚举类型的关键

20、字。 每个枚举元素就是枚举常量值。 例如: enum colourred,yellow,blue,white,black;,定义枚举型变量形式: enum colourred,yellow,blue,white,blackc1,c2; 或 enum colour m1,m2;,枚举型使用说明:,1)枚举元素在说明后都自动有一个整数值。 例如:colour中,red的值为,yellow的值为, black的值为。 可以在说明枚举类型时另指定一个整数值,指定元素后边的 各元素值按增的顺序重新排列,而没有指定的元素值仍按 系统自动给定的值。 例如:enum d east,west,south10,n

21、orth; south的值10,north的值为11,east的值为,west值为。 2)仅能给枚举变量赋枚举元素值。 3)枚举变量进行增或减,比较运算。 4)枚举变量不能用于输入,输出时仅输出枚举值的顺序号。,.7 运算符与表达式,表达式由操作数和运算符组成 操作数: 常量、变量及函数调用。 运算符: 对操作数进行的运算和处理。,+的表达式既可以单独作为语句使用,也可 以在其他语句中作为测试的条件以及调用函数 的参数使用。 +提供了丰富的运算符。以下分别介绍。,1.7.1 算术运算符与算术表达式,算术运算符包括: (加) (减) * (乘) (除) (取余),使用规则:,、*、与一般数学运算

22、相同,其中“”可作一元运算符使用, 表示取负。 优先级为: 先 *、,后、 。 两个整型数相除,取商的整数部分。例如:8/5 结果为,5/8结果为。 两实型数相除,结果为实型数,例如: 8.05.0结果为1.6。 用于求两个整数相除的余数,例如:5 为,而105 为0 。 参加运算的两个操作数的类型不同时,按由低到高规则转换后计算。,int a=10, b=4; double x=1.5; char c1=A; long w=12345; 表达式 1: (a+b)*x-w/c1 表达式 2: a*x-b*x+w/15+(c1+4),算术表达式举例:, 表达式1和表达式2的计算过程及最后类型。,

23、讨论:,1.7.2 位操作运算符 用于对二进制数值的位进行运算,位操作运算符分为逻辑位操作运算符和移位运算符: 逻辑位操作运算符: 按位“与”,两操作数逐位求“与” 按位“或”,两操作数逐位求“或” 按位“异或”,两操作数逐位相加不进位 求反,一元运算符,将操作数逐位取反 移位运算符: 二进制左移,将操作数左移指定位数 二进制右移,将操作数右移指定位数,使用规则:,参加位操作的操作数必须是整型常数或整型变量。 逻辑位操作运算符的使用形式为: 操作数 操作数 操作数 操作数 操作数 操作数 操作数 移位运算符的使用形式为: 操作数操作数 将操作数左移操作数指定的位数 操作数操作数 将操作数右移操

24、作数指定的位数,例如: int a=15, b=125 ; a /b左移2位,1.7. 赋值运算符与赋值表达式,1)简单赋值运算符,形式为: 变量操作数 其中:操作数可以是常量、变量和C+任意合法的表达式. 例如: int a(15) ; double data,s; data=-8.1245; /将-8.1245存入data变量 s=a*50+data/3; /将表达式a*50+data/3结果存入,赋值号“” 左边必须是变量。 赋值表达式的值和类型为“”号左边变量的值和类型。,说明:,2)复合赋值运算符,将算术运算和赋值放在一起的缩写形式,包括: * 例如: a; 相当于 a=a+b; a

25、b ; 相当于 a=a+b; a* ; 相当于 a=a*b; a; 相当于 a=a/b; a; 相当于 a=a%b;,使用说明:,由于有存储功能,复合赋值运算符左边必须是变量名。以下是错误的: a+=b+=c+d=12; 当复合赋值运算的右边是表达式时,将表达式视为一个整体,例如 -=x+y ;相当于:=-(+y),1.7.4 自增和自减运算符,自增自减运算符有如下4种形式: +i 前置自增,将的值先加,再使用的值。 i+ 后置自增,先使用的值, 然后的值加。 -i 前置自减,将的值先减,再使用的值。 i- 后置自减,先使用的值, 然后的值减。,使用说明:,因为有加减和赋值的功能,运算对象必须

26、是变量,不能是常数或表达式。 单独作为一个语句使用时,前置增(减)或后置增(减)是一样的, 但若和其他运算符组合使用,采用前置或后置就会产生不同的结果。 运算符+(或- -)是一个整体,使用时两个+(或)之间不要有空。 +(或- -)运算符是单目运算符.,自增自减运算符举例:,#include void main( ) int a(2), b(2), d1, d2; a+; b-; cout“a=“a“b=“bendl; d1=+a; cout“a=”a“d1=“d1endl; d2=b-; cout“b=“b“d2=“d2endl; ,a=3 b=1 a=4 d1=4 b=0 d2=1,输出

27、结果:,1.7.5 关系运算符与关系表达式,关系运算符用于比较两个数的大小,共有个运算符: 小于 小于等于 大于 大于等于 等于 ! 不等于,使用说明:,关系表达式的值是整数值0和1,当关系式成立时为1;否则为0 。 关系运算符两边操作数可以是整型、浮点型、字符型、指针及枚举型 。 关系运算符可以在一个关系式中连续使用,但若用 -1=式判断 是否在-,1区间,则是错误的。 注意区别“”和“”。 注意=和!=运算符的优先级比其它关系运算符低。,关系运算符使用举例:,输出结果为:,#include void main() int a5, b6; coutb:“b)n; cout“a=b:“(a=b

28、)n; cout“a= =b:“(a=b)n; cout“a!=b:“(a!=b)n; ,: : : !:,1.7.6 逻辑运算符与逻辑表达式,逻辑运算符用于对操作数进行逻辑操作。逻辑运算符是: & 逻辑“与” | 逻辑“或” ! 逻辑“非” (一元运算符) 逻辑运算符的使用形式是: 操作数1 & 操作数2 操作数1 | 操作数2 !操作数,使用说明:,逻辑表达式的值取值为1或0。 逻辑运算符两边的操作数可以是任意基本数据类型,只要是或非值 即可。任何非0值的数据都作为1参与逻辑运算。 注意多个 & 或 | 符使用时的“短路操作”。,逻辑运算符使用举例:,#include void main(

29、) int a,b,c,x,y; a=1; b=2; c=0; couta+-1endl; cout(a , 0 -1 -1 ,输出结果为:,1.7.7 其它运算符,1) 条件运算符与条件表达式 条件运算符是三元运算符,形式为: 1?2:3 其中: 1一般为关系或逻辑式; 2和3为任意表达式。,?+:x-y;,功能:,条件表达式举例:,2) 逗号运算符与逗号表达式,逗号表达式: 用逗号“,”将几个表达式隔开的式子。 逗号表达式的形式为: e1,e2,en 作用:从左到右计算各表达式值,并以最后一个表 达式的值作为逗号表达式的值。 ,=(a=1,=3,+,a+b);,逗号表达式举例:,3) 求字

30、节运算符,求字节运算符是个一元运算符,形式为: sizeof() 其中:可以是任意类型的变量、类型名或表达式。 作用:求在内存中占用的字节数。 例如:,int a,b,i ; double ; =sizeof(); =sizeof(float); =sizeof(*x)+ 100;,4) 类型转换符,利用类型转换符强制转换成所需要的类型。使用格式是: (类型名)表达式 或 类型名 (表达式) 作用: 将“表达式”的值转换成“类型名”所指定的类型。 例如:int a,b; double x(10.5),y(3.8); a=int(+)-10; b=(int)x+y-10;,整数转换为字符型,则去

31、掉多余的高位; 长整型转换为一般整型时,去掉多余高位; 浮点型转换成整型时,去掉小数部分; 双精度型转换成单精度时,按单精度型位数舍入。 转换后数据的精度受到影响。,转换原则:,1.7.8 运算符的优先级和结合性,优先级: 不同操作符之间进行操作的先后顺序。 几种不同的运算符出现在一个表达式中时,优先级别 高的先计算,优先级别低的后计算。 结合性: 当连续几个相同级别的运算符进行计算时,有的是由左到右逐个运算,有的是由右到左逐个运算。,单击见表 4,1.8 基本输入/输出,输入输出又称I/O(Input/Output)操作。 输入: 指在程序运行时由输入设备(常指键盘)向程序提 供数据; 输出

32、:是指将程序的运行结果在输出设备(常指显示器) 上显示。,输入,输出,1)cin的使用形式: cin变量1 变量2变量n ; 使用cin一次可以输入多个值。 可以输入任何基本类型的数据。 用空格、制表符或回车作为输入的两个数据之间的分隔。 例如: int a,b,c; double x1,y1; cinabc; cinx1x2;,输入、输出流对象:cin cout,2)cout的使用形式: coute1e2en ; 其中:每个ei可以是: 常量、变量、表达式、字符串、函数调用等。 当是表达式时,输出表达式结果的值; 若是函数调用,则输出函数调用后的结果; 当是字符串时,将字符串原样输出。 例如

33、: int 10; cout3.14159 ; coutn= endl;,使用cin和cout在程序开始处要写入预编译命令: #include ,注 意:,输入输出格式: 默认格式输出: 输出一个整型数或字符时,原样输出值; 输出一个float型数时,默认7位有效数字; 输出double型数时,默认15位有效数字。,#include void main( ) int a=123; long int b=1234567; float x1=12.34, x2=23.456789; double y=12.34567890123; cout”a=”an”b=”bendl; cout”x1=”x1”

34、 “”x2=”x2endl; cout”y=yendl; ,默认格式输出举例:,a=123 b=1234567 x1=12.34000 x2=23.45679 y=12.3456789012300,输出结果:,在输入输出流中使用控制符,+提供控制符控制输出数据的格式。常用的几个控制符: dec 转换为十进制数输入输出 hex 转换为十六进制数输入输出 oct 转换为八进制数输入输出 setw (int) 设置输出的宽度 setprecision (int) 设置浮点数输出的有效数字位数 setfill (char) 设置填充字符 endl 插入换行符,使用以上格式控制符时,要加上头文件: #i

35、nclude ,注意:,输出结果:,使用格式控制符举例:,#include #include void main( ) int x=24; double y=12.3456789; coutdecx“ “; couthexx“ “; coutoctxn; coutdec; /以下仍按十进制输出 coutsetw(8)x“,“xendl; coutsetw(8)setfill(*)xendl; coutsetprecision(5)yendl; ,24 18 30 24,24 *24 12.346,#include void main() int a=-5,b=10; float x=1.75,

36、 y=2.34e-03; couta=a” “b=bendl; couta+b=a+bendl; couta= +a” “b= -bendl; couta= a+” “b= b-endl; couta*b=a*bendl; couta%b=a%bendl; coutx+y=x+yendl; ,综合例1: 算术运算符和增量、减量运算符使用,运行结果为:,综合例2:从键盘输入一个半径值,求该半径圆的周长和面积。,#include const double pi(3.14159); void main( ) double r,a,c; coutr; c=2*pi*r; a=pi*r*r; cout周

37、长=cendl; cout面积=aendl; ,运行结果为:,输入半径值: 2.5 周长=15.708 面积=19.6349,综合例3:使用条件运算符,求任意3个整数的最大值。,#include void main() int a,b,c,m; coutabc; m=ab?a:b; coutc)?m:c)endl; ,运行结果:,输入3个整数: 12 79 36 最大值是:79,#include void main( ) int a=4,b=3,c=2,d=1; int x, y=10; char ch1=A,ch2=*; x=ab?a+1:cd?c+1:d+1; cout“x=“xendl; cout(a+b,b+c,c+d)endl; y+=a+=b+=c+d; cout“y=“yendl; coutch1ch2ch2ch1endl; ,综合例4:运算符混合使用。,运行结果:,x=2 3 y=20 A*A,第一章小结,教学进程,重点掌握: C+程序格式 计算机中的数据与编码 开发一个+程序过程 基本数据类型 (各类型的表示) 各种常量的表示、 变量的含义,各种变量的定义形式 引用的含义及说明形式 各种运算符的形式 主要:算术、关系、赋值、逻辑、 条件、逗号,运算符优先级、结合性 表达式的类型 基本输入/输出,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1