程序设计初步873393069_第1页
程序设计初步873393069_第2页
程序设计初步873393069_第3页
程序设计初步873393069_第4页
程序设计初步873393069_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计初步,前提:用计算机解决具体问题;计算机解决问题只需要处理两方面问题:描述:描述:实际生活中的数据具有不同的类型。这些不同类型的数据在计算机中,有不同的描述方法和不同的处理方式。程序设计者在编程时需要指明每一个用到的数据的名称、类型。,程序的操作对象,数据;,操作方式,程序设计语言中的语句;,2.1 基本数据类型,基本数据类型: 包括整型、字符型、浮点型和双精度型;自定义数据类型: 包括数组、结构体、枚举类型和指针类型。描述数据,C/C+中的数据可以分为两大类:,即:指明变量的类型。,由系统定义,由用户根据需要定义,数据的类型决定了这个数据在内存中的存储形式、取值范围和能够对它进行的操作;所以,我们首先应该了解每一种基本数据类型的数据在内存中的存储形式、取值范围和允许对它进行的操作。在学习中,我们从两个方面来了解:在编程序时:根据具体问题,决定应将原始数据定义成何种类型;读程序时:程序中以某种形式定义的变量和用到的常量具有的意义。,整型(int)数据,用于描述一般意义上的整数: int 型数据是有符号整数。数学意义上能对整数进行的操作(、 、 )都可以对int类型的数据进行。除此之外,C语言中又增加了: 用 int 来说明一个数据是整型数据。,-123、35 、0等,求余运算:%,自增:+,自减运算:- -,字符型( char):,用于描述单个字符信息,a、7;字符型数据存储时占用1个字节(8个bit),它实际存储的是字符对应的ASCII码。 例:一个char型数据A,其ASCII码为65,故实际存储在计算机内存中的内容是65。char型数据为有符号字符,取值范围为-128127。字符型数据与整型数据可以通用。,American Standard Code for Information Interchange,单精度浮点型( float ):,用于描述一般意义上的实数概念,-34.5 、3.14、0.98等。,双精度浮点型( double ):,用于描述一般意义上的精度加倍的实数概念,3.14159、0.98、- 34.5 等。,长整型 long int(或long),long 型的数据是有符号整型数据,与 int 型数据的区别在于:long 型的数据的长度要大于等于 int 型数据。通常为int型数据长度的两倍。主要用于处理一些比较长的整数问题。,Unsigned int,无符号整数类型:数据的二进制形式的最高位不表示符号,只表示正数。Unsigned int 类型数据的取值范围: 0 2n-1;n 为 int 类型的位数有符号类型的数据的二进制形式的最高位表示符号: 最高位为0正数; 最高位为1负数;,2.2 常 量,C语言中,将常量分为:整型常量、实型常量、字符型常量、字符串常量和符号常量。,在程序运行过程中其值不能被改变的量称为常量。,强调一点:我们现在讲的是在C语言程序中,各类型常量的表示形式。,整型常量描述整数,三种表示形式:,强制类型转换:,如 123、 - 60、 0,以0开始,如 0123,以0x开始,如0x123,十进制整数:,八进制整数:,十六进制整数:,一般形式的整数,如 123 即为 int 类型,如果希望 123 是长整类型(long),则写成 123L或123l,同理还有, 123u, 123U, 123ul, 123UL。,实型常量实数,小数形式:整数部分.小数部分,指数形式:尾数 + E(e) + 指数,强制类型转换: C语言通常把实数处理成双精度数。 如果希望编译系统将实数处理成浮点数,则在其后添加 F 或 f,例,123.35f,例: 123.、,- .123、,0.0、,12.5。,12.3e2,等价于:12.310 2,2.3E-21,等价于:2.310 -21,例:,单引号括起来的一个字符。如: a 在计算机的存储器中,字符型常量的值为该字符所对应的ASCII码值; 例:A65; a97; 048 整数在计算机存储器中存放的是其值; 例: 00、 5 5、 125 125 区别字符0 和数字 0 : 字符 0 在存储器中的值为: 数字 0 在存储器中的值为:,字符常量,48,0,例: void main () char c1,c2; c1 = a;c2 = b; c1 = c1 - 32; c2 = c2 - 32; printf(“%c,%c”,c1,c2); ,c1,c2,97,98,65,66,A,B,字符常量可以象整数一样参与运算:,转义字符,C 语言中,一些特殊的字符没有字符常量,例单引号、换行符等。转义字符是一组以“”开头的特殊字符序列,用单引号括起来。用来表示任何可以输出的字母字符、专用字符、控制字符、图形字符。,转义字符,a,响铃,BEL,b,回退一格,BS,f,FF,n,换行,走纸换页,NL,r,回车,CR,t,横向跳格,HT,v,纵向跳格,VT,反斜杠,单引号,“,双引号,?,问号,?,ooo,13位8进制数,ooo,xhh,12位16进制数,hh,main() char c1 = 101,c2 = x2C; printf(atbctbABCn); printf(xyzt%c%c,c1,c2); ,本程序的执行结果?,a,xyz,A,I,bc,I,I,ABC,I,双引号括起来的字符序列。如“goodbye,0等字符串以字符数组形式存储在计算机中。存储时串尾被自动加上字符0,以标志字符串的结束。例:,字符串常量,字符常量与只包含一个字符的字符串常量的区别: A与 “A”的区别:,A,“A”,符号常量,用一个标识符代表一个常量,叫符号常量;符号常量的定义语句格式为: #define 符号常量名 常量(宏定义),#include #define PI 3.14159 main() float r , s ; scanf ( “ %f , &r) ; s = PI*r *r ; printf(s = %7.2fn,s); ,2.3 变量与内存,程序运行结果?,a,x,系统为程序中的每一个变量开辟一个存储空间,不同类型的变量具有不同大小的存储空间。如:,void main() int a ; float x ; a = 2 ; x = 2.5; ,程序运行过程中其值可以改变的量,称为变量。,2,2.5,变量名标识符,标识符:用来标识变量名、符号常量名、数组名、函数名、文件名的有效字符序列。,组成:字母和下划线开头,后跟字母、数字和下划线组成。,C 语言区分大小写,C 标识符长度只有前8个字符有效。,一般的命名原则:变量名应见名知义、局部变量用短名字、循环控制变量用短名字、外部变量用长名字。,变量的定义,在程序中出现的所有变量必须先定义后使用。 定义一个变量,即给变量一个名字和数据类型; 一般格式: 类型名称 变量名1,变量名2, ;,变量的定义,例:,int a , b , c;,指定a,b,c为整型变量,unsigned lower,指定lower为无符号整型变量,float x,y;,指定x,y为实型变量,double z;,指定z为双精度实型变量,char c1,c2;,指定c1,c2为字符型变量,定义一个无符号长整变量 L1;,unsigned short S1,unsigned long L1,定义一个无符号短整变量 S1;,定义一个浮点类型变量 F1;,定义一个双精度变量 D1;,float F1,double D1,按要求写语句:,变量的数据类型决定了:变量在内存中所占的空间大小:以字节数作度量单位;以位数作度量单位;对其所能进行的操作:不同的数据类型可能参加的运算类型是不同的。,数据类型,2.4 运算符,计算机实现操作有两种方式:,运算:数学中所规定的各种基本运算,由运算符来实现。函数:对于复杂的运算,需要编制子函数来实现。标准函数(库函数);用户自定义函数;,目录,算术运算符和算术表达式赋值运算符和赋值表达式关系运算符和关系表达式逻辑运算符和逻辑表达式不同类型数据的混合运算,算术运算符和算术表达式,计算机中的算术运算对应于现实世界的算术运算算术运算符:,+ 、 -,自增、自减 运算,+,+,%,求余数,-,/,*,C语言的运算符,现实中的算术运算符,计算机中的算术运算符:,+,-,*,%,加法运算或正号运算符,减法运算或负号运算符,乘法运算符,除法运算符,求余运算符,或称模运算符,完成现实世界的算术运算(加、减、乘、除),+ 、 -,自增、自减运算符,1,说明:,关于 C 语言中的除法运算()(整除和实数除法):,在 C 程序中,两个整数相除(整除),会自动舍去小数部分。,在算术运算中,85 = ?,在 C 程序中,85 结果为,Why?,如果希望结果为1.6,则应写成:,如果参加运算的两个数中有一个数为实数,则结果是实数(实数除法)。,Why?,8.0 5;,1.6,关于求余运算:,求余运算的意义为:被除数除以除数所得的余数求余运算要求%两侧都是整型数据。A % B 意味着求A 除以 B 的余数。 8%5 的运算结果为:,结果?,3,关于求余运算举例:,给定一个三位数,将三个数字分离出来。例,3283,2,8,解答:,用 m 表示一个三位整数;a 表示百位;b 表示十位;c 表示个位。,百位 = m100;,a =,a = 3,十位 =(m10)%10;,b =,b = 2,个位 = m%10;,c =,c = 8,328100;,(32810)%10;,328%10;,算术表达式:,算术表达式:用算术运算符和括号将运算量连接起来的式子称为算术表达式。运算符有优先级和结合性:计算表达式的值时,按照优先级的高低依次计算;如果运算符优先级相同,则按规定的结合方向进行。算术运算符的结合性,从左到右,(1)求三个数的算术平均值代数表达式:ave=算术表达式:ave=(a + b + c)/3.0(2)根据三角形三边计算三角形面积代数表达式:算术表达式:sqrt(s*(s-a)*(s-b)*(s-c)(3)根据半径计算圆的周长代数表达式: C=2r算术表达式:C=2*3.14159*r,算术表达式,算术运算符的优先级,自增( + )和自减运算( - - ),+ 运算符的作用:是使变量的值增 1。,- 运算符的作用:是使变量的值减1。,自增( + )和自减运算( - ),自增和自减运算只能应用于整型变量和指针型变量。例,I + 、P - 等+ 和 - 可以写在变量的左侧或右侧;而且其意义不同。“变量名 + ”和“变量名 - ”:先取值,后做运算“ + 变量名”和“ - 变量名”:先做运算,后取值,自增( + )和自减运算( - - )举例,N = I +,N = + I,11,10,11,11,练习,已知 i = 5j = i + ; j = ? i = ? j = + i; j = ? i = ?,5,6,6,6,关于自增和自减运算符的说明:,自增和自减运算符只能用于整型变量。自增和自减运算符的结合方向是“自右向左”。例: - i + 等价于 - (i + ); * i + 等价于 *(i + );,+,-运算符举例:,设x=5,问:下面各表达式的值?y=x+;y=(x+) + (x+);y=(x+) + (+x);y=(+x) + (x+);y=(+x) + (+x);,+,-运算符举例:,设x=5,问:下面各表达式的值?y=(x+) + (x+) + (x+);y=(x+) + (+x) + (x+);y=(+x) + (x+) + (x+);y=(+x) + (+x) + (x+);y=(+x) + (+x) + (+x);,2. 赋值运算符和赋值表达式,赋值:在计算机程序中,要完成这样一种操作将一个表达式的计算结果送到一个变量当中。赋值运算符:=赋值表达式:变量名 = 表达式赋值运算符的结合性:自右向左即:a = b = c 相当于 a = (b = c),赋值运算符,简单的赋值运算符,复合的赋值运算符,=,+ = - = * = % = =,简单的赋值运算符 =,代表一种操作。 执行结果:将“ = ”右侧的表达式的值送入 “ = ” 的左侧的变量中。 例:a = x + y;,执行过程:计算表达式“x + y”的值;将计算结果送入变量名“a”中结果:x,y值不变;a的值变为x + y的值,赋值运算符 + =,执行结果:将“ = ”左侧的变量与“ = ”右侧的表达式的值的和送入“ = ”左侧的变量中。 例:a + = x + y;执行过程:计算表达式“a + (x + y)”的值;将计算结果送入变量名“a”中;结果:x,y值不变;a的值变为a + (x + y)的值;,赋值运算符 - =,执行结果:将“ = ”左侧的变量与“ = ”右侧的表达式的值的差送入“ = ”左侧的变量中。 例:a - = x + y;执行过程:计算表达式“a -(x + y)”的值;将计算结果送入变量名“a”中;结果:x,y值不变;a的值变为a -(x + y)的值;,赋值运算符 * =,执行结果:将“ = ”左侧的变量与“ = ”右侧的表达式的值的积送入“ = ”左侧的变量中。 例:a * = x + y;执行过程:计算表达式“a *(x + y)”的值;将计算结果送入变量名“a”中;结果:x,y值不变;a的值变为a *(x + y)的值;,赋值运算符 / =,执行结果:将“ = ”左侧的变量与“ = ”右侧的表达式的值的商送入“ = ”左侧的变量中。 例:a / = x + y;执行过程:计算表达式“a /(x + y)”的值;将计算结果送入变量名“a”中;结果:x,y值不变;a的值变为a/(x + y)的值;,赋值运算符 % =,执行结果:将“ = ”左侧的变量除以“ = ”右侧的表达式的值的余数送入“ = ”左侧的变量中。 例:a % = x + y;执行过程:计算表达式“a %(x + y)”的值;将计算结果送入变量名“a”中;结果:x,y值不变;a的值变为a %(x + y)的值;,简单的赋值举例:,就是把一个表达式的值赋给一个变量。如下图示:,5,9,赋值表达式,由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。 格式: 变量赋值运算符表达式对赋值表达式求解的过程:将赋值运算符右侧的表达式的值赋给左侧的变量。,赋值运算符的结合性:,结合性:从右向左例: a = b = c = 8 等价于 a =(b =(c = 8)即:第一步:c = 8第二步:b = 8第三步:a = 8,不同类型数据的混合运算,C语言允许数据值从一种类型转换成另一种类型在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则按图所示。,int char, short,高,低,double,long,unsigned,float,强制类型转换,强制类型转换运算符,将一个类型的变量值强制转换为另一种类型。 一般格式为: (类型标识符)表达式 例: k =(int)(int)x +(float)i) (float)(x = 85),对一个变量进行强制转换后,得到一个新的类型的数据,但原来变量的类型不变。,例:若x原为实型变量且值为2.6,在执行 i = (int)x 后得到一个整数 2,并把它赋给整型变量 i,但 x 仍为实型,值为2.6。,写出下面算术表达式的值:,x+a%3*(int)(x+y)%2/4,设x=2.5,a=10,y = 4.7。x = 2.5; a = 10 ; y = 4.7;,a%3 10%3 1 (int)(x + y) (int)7.2 7 a%3*(int)(x + y) 1*7 7a%3*(int)(x + y)%2 7%2 1a%3*(int)(x + y)%2/4 1/4 0x + a%3*(int)(x + y)%2/4 2.5 + 0最后结果:2.5,练习:计算下列表达式的值,(float)(a+b)/2+(int)x%(int)y设a=2, b=3, x=3.5, y=2.5,二、关系运算符和关系表达式,关系表达式: 用关系运算符将两个表达式(可以是算术表达式、关系表达式、赋值表达式或逻辑表达式)连接起来的式子,称为关系表达式。关系运算符,、=,=、!=,优先级,关系表达式的值为逻辑值“真”或“假”; 以1代表“真”,以0代表“假”。 例如: 关系表达式“8=4”的值为“假”; 表达式的值为:关系表达式“50”的值为“真”; 表达式的值为:,结合性:,从左向右,0,1,三、逻辑运算符和逻辑表达式,逻辑表达式:是由逻辑运算符和运算量所构成的式子,其中运算量主要有关系表达式和逻辑量两种,也可以是C中任意合法表达式。逻辑运算符:,| (逻辑或),& (逻辑与),! (逻辑非),优先级,逻辑运算的真值表,注意:1、 C语言编译系统: 以数值1代表“真”,以0 代表“假”;2、若逻辑运算符左右连接的不是逻辑量或 关系表达式时,C语言编译系统以其值非 0代表“真”,以0代表“假”。例如: 若x = 10, 则 !x的值为_。 若a = 3, b = 2, 则a &b的值为_。 5 & 0 |8的值为_。,0,1,1,逻辑运算符的特点,在逻辑表达式的求解中并不是所有的运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行下一个运算符。例如: 1、a & b & c:只有a的值为逻辑真时,才计算b的值;也只有a与b的值都为逻辑真时,才计算c的值; 2、a | b | c:只有a的值为逻辑假时,才计算b的值;也只有a与b的值都为逻辑假时,才计算c的值;,举例:,1、初始状态 a=1; b=2; c=3; 执行 a+ 执行 a+ & +b & c- 之后,a、b、c的值分别是多少?,举例:,1、初始状态 a=1; b=2; c=3; 执行 a+ | +b | c- 之后,a、b、c的值分别是多少?2、初始状态 a=0; b=2; c=3; 执行 a+ 执行 +a | +b | c- 之后,a、b、c的值分别是多少?,条件运算符和条件表达式,条件运算符: ?:条件表达式的形式为: 表达式1?表达式2:表达式3条件表达式的执行过程:先计算表达式1,若其值为非零,则结果为表达式2的值,否则就是表达式3的值。例:表达式 y=ab?a:b 的执行结果是什么?,逗号运算符:,逗号表达式的形式为: 表达式1,表达式2,表达式3逗号表达式的执行过程:先计算表达式1,然后计算表达式2,表达式3;整个表达式的结果为:最后一个表达式的值。例:y=( a=22, a+12, a+30 );表达式的值为:,,,52,!(非)算 术 运 算 符关系运算符&|赋值运算符,,各种运算符优先级:,例如:xc 等效于(!a) & (bc),要求:,深刻理解在计算机中各类型数据在内存中的存储形式、取值范围和能够对它进行的操作;深刻理解各基本类型作了 short、long、unsigned 扩展之后与原类型之间的区别;深刻理解各种整型常量的形式,字符常量、转义字符和符号常量的意义和作用。熟练掌握每一种变量的定义格式;深刻理解每一个算术运算符的功能、使用格式、计算结果,尤其是 /、%、+、-;深刻理解赋值运算符(=)的意义、注意与数学中的等号相区别;复合赋值运算符的执行过程和执行结果。,练习,一、选择题:,以下叙述中正确的是: (a) C 程序由主函数组成 (b) C 程序由函数组成 (c) C 程序由函数和过程组成 (d) C 程序由子函数组成,一、选择题:,以下符号中不能用作用户标识符的是: (a) _256、 (b) void (c) scanf、 (d) Struct,解答:c 语言中的标识符分为三类:关键字、预定义标识符和用户标识符;规定:关键字不允许用作标识符,一、选择题:,以下不能正确表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论