c语言课程设计2_第1页
c语言课程设计2_第2页
c语言课程设计2_第3页
c语言课程设计2_第4页
c语言课程设计2_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

2018/1/12,1,第二章数据类型及其表达式,共 47页 第 2 页,第一节 C语言数据类型简介 第二节 基本数据类型第三节 运算符与表达式第四节 不同类型数据间的转换,第二章 数据类型、运算符与表达式,共 47页 第 3 页,2.1 C语言数据类型简介,二、什么是数据结构,计算机的别名:数据处理机;数据元素:数据的最小单位;数据结构:数据元素的组织形式.,把需要解决的问题用计算机能完全理解的方式描述给计算机。,一、什么是程序设计,程序设计数据结构算法方法工具,程序设计编程,数据结构包括数据的逻辑结构和物理结构,它关系到软件或程序的复杂程度。,数据结构,数据类型,共 47页 第 4 页,数据的描述数据的操作,程序,类型,运算符,算法数据结构,程序的任务是对数据进行处理,数据是程序处理的对象,而运算符是施加给这些数据的操作。数据和运算符是表达式的基本元素。,2.2 数据与数据类型,共 47页 第 5 页,三、C语言数据类型,2.1 C语言数据类型简介,共 47页 第 6 页,关于类型的含义1.不同类型数据在内存中占不同的存储空间,且采取不同的存储形式。2.不同类型数据对应不同的取值范围。3.数据类型确定了允许对其进行的操作。,2.2 基本数据类型,共 47页 第 7 页,按照数据在程序中的取值:值保持不变-常量 x=2 * y值随程序运行变化-变量,2.2 基本数据类型,共 47页 第 8 页,一、常量,1. 在程序运行中,其值保持不变。 2. 表示方法:,整型 100,125,-100实型 3.14 , 0.125字符型 a, b字符串常量 “string”,3.符号常量: #define PI 3.14159,用指定的标识符表示某个常量,2.2.1 常量与变量,2.2 基本数据类型,共 47页 第 9 页,二、变量,3. 变量通过变量名标识,1. 在程序运行中,值发生变化,2. 必须先定义,再使用,int a,b;,类型 变量名表,变量,26,3,变量名和内存中的存储单元相对应。编写程序时通过变量名来存、取存储单元。,2.2 基本数据类型,共 47页 第 10 页,(1)以字母或下划线开头,(2)不能用系统中的关键字作为变量名,规 定,int a,b A123,_b;,int a;.A=5;,4. 有关变量名的规定,(3)变量名中的字母是区分大小写的。sum、stu_name、_age、Lts_1_2、a232c、x.y、start+9、c2.0 NAME name 表示两个不同的标识符。,2.2 基本数据类型,共 47页 第 11 页,一、整型常量,有三种表示形式,十进制 八进制十六进制,1234,加前导0 01234,0125,加前导0x 0x123,0xffff,整型数据包括整型常量和整型变量, 整型数据以二进制补码形式存储,例,100、-8、0;010、024;0x38、0X1F,2.3.2 整型数据,2.2 基本数据类型,共 47页 第 12 页,二、整型变量,掌握要点 1 有几种定义形式 2 每种形式占存储空间的大小 3 取值范围 4 输入输出格式,2.2 基本数据类型,共 47页 第 13 页,1. 定义形式,共七种,基本整型长整型短整型无符号整型无符号短整型无符号长整型双长整型,int long intshort intunsigned int,2. 占存储空间,一个变量,4424,字节,unsigned short unsigned longlong long int,248,2.2 基本数据类型,共 47页 第 14 页,3.整型变量的取值范围,2.2 基本数据类型,共 47页 第 15 页,int型数的表示范围:存储长度16位二进制(2Byte),0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1,0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,上面的数再加1是多少?,例,int型表示数的范围:- 32768 32767,4. 输入输出形式 : %d,%ld,%x,%o,%u,2.2 基本数据类型,共 47页 第 16 页,包括实型常量和实型变量,一、实型常量,有两种表示形式,小数指数,0.1233e-3,实型常量只能用十进制形式表示,不能用八进制和十六进制,1e3、1.8e-3、-123e-6、-.1e-3e5、1e-3.2、e、.e-03,2.2.3 实型数据,用指数表示实型常量的规则: e或E之前之后必须有数字;指数必须为整数,2.2 基本数据类型,共 47页 第 17 页,1. 定义形式,共三种,单精度双精度长双精度,floatdoublelong double,2. 占存储空间,一个变量,488,字节,二、实型变量,实型常量不区分单精度和双精度,2.2 基本数据类型,共 47页 第 18 页,3. 变量的取值范围,4.输入输出形式 %f,2.2 基本数据类型,共 47页 第 19 页,实型数据在计算机中以指数形式存储,单精度实型变量用一个字节存放指数部分, 其余三个字节存数值部分 。,7位二进制,23位二进制,单精度实型,2-23 = |尾数| = 1-2-23,尾数,指数,2.2 基本数据类型,共 47页 第 20 页,包括字符型常量和字符型变量,一、字符常量,1. 用单引号包含的一个字符,2 .只能包含一个字符,例,a, A, 1abc“a”,2.2.4 字符型数据,2.2 基本数据类型,字符常量定义:用单引号括起来的单个普通字符或转义字符.,字符常量的值:该字符的ASCII码值,如 101 -A 012 -n 376 - x61 -a 60 -0 483 -(),例:A-101-x41-65,b) ? a: b,目,关系,不同类型的变量,所允许的操作不同,单目运算符双目运算符三目运算符,2.3 运算符与表达式,共 47页 第 29 页,*优先级: 运算符的执行顺序,*结合性: 优先级相同时的结合方向,*运算结果的类型,X=5+8a100,X=a+b*c,a+b-c572a=b=5,结果?,单目运算符的优先级高于双目运算符单目运算符从右向左结合双目运算符从左向右结合,2.3 运算符与表达式,共 47页 第 30 页,2.4.2 算术运算符和算术表达式,1. 共有5个:+,-,*,/,%,2 “-”作为 负号时为单目,单目: -,双目:*, /, %,双目:+,-,4. 优先级:,5. 结合性: 从左向右,3. %运算只适用于整型数,取模(求余数)a=10%4a的值为2,2.3 运算符与表达式,共 47页 第 31 页,2.4.3 自增、自减运算符,1. 变量自身加(减)1,k =k+1,k + 先使用变量k的值,再加 1,+ k 先加1,再使用变量 k的值,k = k-1,k - - 先使用变量k的值,再减 1,- - k 先减1,再使用变量k 的值,k=3; printf( “%d”, k +); 输出 3 后, k 的值为 4,i=3; printf( “%d”, + i);,输出4,2.3 运算符与表达式,共 47页 第 32 页,2. 只能用于变量,不能用于表达式和常量,3. 优先级:高于双目算术运算符,4. 结合性:从右向左,(i+k) + , - - 3,i=3; k=i+ + i+ + i+;,i=?k=?,i=3; k= (+i) + (+i) + (+i);,2.3 运算符与表达式,共 47页 第 33 页,例:,main( ) int a , b , s ; a = 5 ; b = 5 ; s= a+b ; printf(“%d,%d,%dn”,a,b,s); s= a+ +b; printf(“%d,%d,%dn”,a,b,s); s= +a+b; printf(“%d,%d,%dn”,a,b,s); s= - -a +b; printf(“%d,%d,%dn”,a,b,s); s= a- - +b; printf(“%d,%d,%dn”,a,b,s); s= a + b; printf(“%d,%d,%dn”,a,b,s); ,2.3 运算符与表达式,共 47页 第 34 页,s = a + b ; s = a+ +b ; s = +a +b ; s = - -a +b ; s = a- - +b ; s = a + b ;,a=5, b=5,5+5=105+5=107+5=126+5=116+5=115+5=10,a b s5 5 106 5 107 5 126 5 115 5 115 5 10,题目分析,s,2.3 运算符与表达式,共 47页 第 35 页,2.3.3 关系运算符和表达式关系运算符种类:= !=结合方向:自左向右优先级别:,例 ca+b /c(a+b) ab!=c /(ab)!=c a=bc /a=(bc),关系表达式的值:是逻辑值“真”或“假”,用1和0表示,例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc,/表达式值1,/表达式值1,/表达式值0,/d=1,/f=0,2.3 运算符与表达式,共 47页 第 36 页,关系运算注意:,例 若a=0; b=0.5; x=0.3; 则 a=x278在C中是允许的, 值为,0,例 int i=1, j=7,a; a=i+(j%4!=0); 则a=,2,例 a0 结果为 A100 结果为,1,0,2.3 运算符与表达式,共 47页 第 37 页,关系运算注意:,例 注意区分“=”与“=” int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”);,例 应避免对实数作相等或不等的判断如 1.0/3.0*3.0=1.0 结果为可改写为:fabs(1.0/3.0*3.0-1.0)y a=b|x=y !a|ab,优先级:,结合方向:,/ (a=x) & (xb)&(xy),/(a=b)|(x=y),/(!a)|(ab),2.3 运算符与表达式,共 47页 第 40 页,优先级:,结合方向:,例 a=4;b=5; !a a&b a|b !a|b 4&0|2 53&2|83)&2|(8(4-(!0) 值为1,2.3 运算符与表达式,共 47页 第 41 页,优先级:,结合方向:,短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符,例 a (m=ab)&(n=cd),/结果m=0,n=1,2.3 运算符与表达式,共 47页 第 42 页,2.3.5条件运算符与表达式一般形式: expr1 ? expr2 : expr3执行过程功能:相当于条件语句,但不能取代一般if语句,例 求 a+|b| printf(“a+|b|=%dn”,b0?a+b:a-b);,例 (a=b)?Y:N (x%2=1)?1:0 (x=0)?x:-x (c=a & c0?1:(xb?a:cd?c:d ab?a:(cd?c:d)expr1、expr2、expr3类型可不同,表达式值取较高的类型,例 x?a:b /x=0,表达式值为b; x0,表达式值为a xy?1:1.5 /xy ,值为1.0; xy ,值为1.5,2.3 运算符与表达式,共 47页 第 43 页,2.3.6 赋值运算符赋值表达式,1. 将一个常量或一个表达式的值赋给一个变量称为赋值,x = 5 y = x + 10,2. 可以将一个实型赋给一个整型,或将一个整型赋给一个实型,int x, x=5.3; x的值为 5float y, y=5; y的值为 5.000000,3. 赋值运算的优先级,比算术运算低,4. 赋值运算的结合性,从右向左,X = y = 5,2.3 运算符与表达式,说明:结合方向:自右向左优先级: 14左侧必须是变量,不能是常量或表达式,赋值表达式的值与变量值相等,且可嵌套,赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型,例 3=x-2*y; a+b=3;,例 float f; int i; i=10; f=i;则 f=10.0,例 int i; i=2.56; /结果i=2;,例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2),/表达式值为5,a,b,c值为5,/ b=5;a=5,/表达式值11,c=6,a=11,/表达式值10,a=10,b=4,c=6,/表达式值5,a=5,b=10,c=2,共 47页 第 45 页,复合赋值运算符和复合赋值表达式,x=x+nx=x-nx=x*nx=x/nx=x%n,x + = nx - = nx * = nx / = nx% = n,算术运算与赋值运算相结合,x+=n,2.3 运算符与表达式,共 47页 第 46 页,说明:结合方向:自右向左优先级: 14左侧必须是变量,不能是常量或表达式,赋值表达式的值与变量值相等,且可嵌套,赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型,例: a=12; a+=a-=a*a,例: int a=2; a%=4-1; a+=a*=a-=a*=3;,/a=-264 等价于a=a+(a=a-(a*a),/a=0 等价于a=a+(a=a*(a=a-(a=a*3),复合赋值运算符和复合赋值表达式,共 47页 第 47 页,例,main( ) int a, b, c, d, e; a=2; b=5 ;c= 6;d=10; a + =b; b- =c; c * =d; d / =a; a%=c; printf(“%d,%d,%d,%dn”, a , b , c , d); ,结果?,7,-1,60,1,2.3 运算符与表达式,共 47页 第 48 页,一、逗号运算符,(表达式 1,表达式 2,表达式 3,表达式 n),用于连接几个表达式,二、求解过程,顺序求解几个表达式,三、优先级,逗号运算符的优先级最低,四、结合性,从左向右,五、逗号表达式,逗号表达式的值为最后一个表达式的值(表达式n 的值),X = ( ( a=4*5 , a*2 ) , a+6 ),a为?,20,x为?,26,2.3.7 逗号运算符,2.3 运算符与表达式,共 47页 第 49 页,2.4 不同类型数据间的转换,不同数据类型需先转换成同一类型,然后进行运算,方式,自动进行-隐式转换强制进行-显式转换,一、隐式转换(算术转换),级别低的向级别高的转换,int i; float f; double d; long e;表达式:10+a+i*f-d/e 的结果为: double,共 47页 第 50 页,二、显式转换(强制转换)一般形式:(类型名)(表达式)例 (int)(x+y) (int)x+y (double)(3/2) (int)3.6 说明:强制转换得到所需类型的中间变量,原变量类型不变,例 main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 结果:x=3.600000,i=3,精度损失问题,2.4 不同类型数据间的转换,共 47页 第 51 页,一 、C中的基本数据类型,每一种类型的定义方式(关键字), 在存储空间中所占的字节数,存储形式,取值范围。,二、 C中的运算符的几个要点(功能,与运算分量的关系,优 先级 ,结合性,运算结果的类型)。,三 、算术运算符中的%只使用在int类型。,第二章 总结,四、 自增,自减运算的特点,灵活使用k+,+k。,五 、复合的赋值运算规则。,七、 不同类型数据转换时的优先顺序,八、单目运算,双目运算的优先级和结合性特点,熟记基本概念和规则!,共 47页 第 52 页,二 、 补充习题:1、C语言规定,在源文件中,main()的位置: ( ) A、必须在最开始 B、必须在库函数后 C、可以在任意位置 D、必须在所有函数最后2、一个C程序的执行是从: ( )A、从主函数开始,在主函数中结束; B、从第一个函数开始,到最后一个函数结束;C、从主函数开始,到最后一个函数结束;D、从第一个函数开始,到主函数中结束。3、下面选项中,全为不合法的用户标识符的选项是: ( ),一、课后习题,第三章 习题,共 47页 第 53

温馨提示

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

评论

0/150

提交评论