收藏 分享(赏)

第02章C语言基本数据类型与表达式 全国计算机等级考试二级 C语言程序设计培训.ppt

上传人:dcs1276 文档编号:4836834 上传时间:2019-01-15 格式:PPT 页数:60 大小:883.50KB
下载 相关 举报
第02章C语言基本数据类型与表达式 全国计算机等级考试二级 C语言程序设计培训.ppt_第1页
第1页 / 共60页
第02章C语言基本数据类型与表达式 全国计算机等级考试二级 C语言程序设计培训.ppt_第2页
第2页 / 共60页
第02章C语言基本数据类型与表达式 全国计算机等级考试二级 C语言程序设计培训.ppt_第3页
第3页 / 共60页
第02章C语言基本数据类型与表达式 全国计算机等级考试二级 C语言程序设计培训.ppt_第4页
第4页 / 共60页
第02章C语言基本数据类型与表达式 全国计算机等级考试二级 C语言程序设计培训.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

1、2.1 C程序的构成和格式 2.2 标识符、常量和变量 2.3 整形数据 2.4 实型数据 2.5 算术表达式 2.6 赋值表达式 2.7 自增自减运算符,第二章 C程序设计的初步知识,#include main() double a,b,area;a=1.2; /* 将矩形的两条边分别赋给a,b */b=3.6;area=a*b; printf(“a=%f,b=%f,area=%fn”,a,b,area); ,2.1 简单C程序的构成和格式,/* 计算矩形的面积并存储到变量area中 */,命令行,必须以#开头,行尾不能加分号。 “”之间的stdio.h是系统提供的头文件,包含输入输出函数的

2、说明。,主函数名,其后的括号不能省,C程序有且仅有一个主函数,一个程序总是从主函数开始执行。,定义(说明)部分,执行部分(必须放在定义部分之后,语句数量不限),函数体,注释,C程序的每条执行语句必须以分号“;”结束,2.2.1 标识符,概念:用来标识变量名、符号常量名、函数名、类型名、文件名等的有效字符序列。,(1)标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。,定义规则:,如: _1、 year 、month 、student_name、 sum0 $123 #a 3b ?c a=b(不合法),2.2 常量、变量和标识符,(2)在C语言标识符区分大小写,大小写字

3、母被认为是两个不同的字符。因此,a和A,I和i,Sum和sum,分别是两个不同的标识符。,C语言的标识符分以下三类:,一、关键字,概念:就是具有特定含义的标识符,用户不能用来作自定义标识符。,C语言中的关键字较少,由ANSI标准推荐的关键字有32个。,(1)与数据类型有关的(14): char int float double signed unsigned short long void struct union typedef enum sizeof,(3) 与程序控制结构有关的(12):do while for if else switch case default goto conti

4、nue break return,(2)与存储类别有关的:auto extern register static,二、预定义标识符,概念:C语言中预先定义并具有特殊含义的标识符。(库函数名和头文件中定义的标识符),C语言允许把这类标识符重定义另作他用,但这将使这些标识符失去预先定义的原意。为了避免误解,建议不要把这些预定义标识符另作它用 !例如:define 、printf。,三、用户标识符,概念:用户根据需要定义的标识符称为用户标识符,用户标识符一般用来给变量、函数、数组等命名。,用户标识符除了遵守标识符的命名规则外,还要注意“见名知义”的原则。如果用户标识符与关键字相同,则在程序进行编译时

5、系统会报错。如果与预定义标识符相同,系统不报错,但原有的预定义标识符将失去原意。,国家等级考试练习,1.下列不合法的标识符是 J2_KEY Double 4d _8_2.以下叙述中错误的是_ a.用户所定义的标识符允许使用关键字 b.用户所定义的标识符应尽量做到“见名知义” c.用户所定义的标识符必须以字母或下划线开头 d.用户所定义的标识符中,大、小写字母代表不同的标识,2.2.2 常量,1.直接常量:是在程序中直接引用的数据。,分为:整型常量:4,6、实型:4.6,1.23E+006、字符型:a,B、字符串:“abc”,”hello”,以数据的原形出现!,2.符号常量:,特点:在程序中不能

6、给它赋值。,概念:用标识符来表示一个数据。,定义形式:,#define 标识符 常量数据,例如: #define PI 3.14159,在程序预处理时,凡是出现标识符PI的地方都将用数据3.14159来替换。,如:2*2.3*PI 就等价于 2*2.3*3.14159。,2.2.3 变量,变量是指在程序运行中, 其值可以被改变的量。,基本概念:,变量代表计算机内存中的某一存储空间,该存储空间中存 放的数据就是变量的值(见下图)。,在同一程序块中,每个变量都有唯一的名字,不能被重复定义。,使用变量时必须“先定义,后使用”。,3,a,变量名,变量值(存储在内存中),存储单元,int a,b,c ;

7、 float x,y;char c1,c2;,自己设定,满足标识符的规定。,如:int, float,char,;不可省,1.定义形式:,类型标识符 变量名1 ,变量名2,变量名3,.;,例如:,在说明变量的同时给变量一个初始值。,变量定义,分配存储空间,变量初始化,分配存储空间的同时存入数据,int a,b;,int a=1,b=2;,不确定,格式:数据类型 变量名=初值, 变量名2=初值2;,2. 变量的初始化:,例:看一看,下列的定义哪些是正确的?,int a=5, b=3;,int a=b=c=3;,int a,b,c; a=b=c=3;,int x=2; int a=1,b=2,c

8、; float x=2.1,y; char c1=a,c2;,例如:,/*定义了三个整形变量a,b,c 并给a赋初值1,b赋初值2*/,相当于,int x; x=2;,注意变量不能连续赋初值:int a=b=c=3;(错误)int a=3,b=3,c=3;(正确),2.3 整形数据,三种表现形式:,十进制形式:与数学上的整数表示相同。 例如: 12, -100, 0,八进制形式:以0(数字0)开头由数字(17)组成。 例如:,十六进制形式:以0X(数字0和字母X,大小写均可)由a(A)f(F)组成。例如:,2.3.1 整型常量,十六进制的数码除了数字0-9外,还使用英文字母a-f (或A-F)

9、表示10-15。 如:0x1e、0Xabcdef、0x1000但:0X2defg、0x100L都是错误的。,注意事项:,八进制的数码范围为0-7;则:018、091、0A2 都是错误的数据表示方法。,2.3.2.整型变量的分类,整型变量的有以下四种类型:,基本型,以int表示。,短整型,以short int表示,或以short表示。,长整型,以long int表示,或以long表示。,无符号型,其中无符号型又分为无符号整型,无符号短整型和无符号长整型,分别以 unsigned int unsigned short unsigned long表示。,-21474836482147483647,0

10、4294967295,在表示长整形的常量时,应该在后面加字母后缀l(小写L)或L例如:1231 , 432L, 0L等等。,在表示无符号的整形常量时,应该在后面加字母 后缀u或U 如:23u,45U等-4u(错误),思考:89777LU表示什么含义?,2.3.4 整数在内存中存储形式,计算机最小的存储单位是“位(bit)”,由于只能存放0或1,所以称为二进制位,8个二进制位组成一个“字节”,若干个字节组成一个“字”。通常把一个字节中的最右边的一位称为最低位,最左边的称为最高位,用来存放整数的符号,因此称为符号位。若是正整数则最高位是0,负整数最高位为1.,1,1,0,0,0,0,0,0,0,0

11、,0,0,0,0,0,0,符号位(正数),一、正整数如:短整形5在内存中的存放方式,转化为二进制数 存放“原码”(00000101)由于短整型占两个字节,存放方式如下。,2.3.4 整数在内存中存储形式,二、负整数 负整数在内存中以补码的形式存放,求某个二进制补码的步骤如下:以-5为例:-5的原码(10000101) (1)求原码的反码,除符号位之外的二进制码按位 取反(11111010) (2)把所得的反码加1,即得到补码(11111011),1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,符号位(负数),2.4 实型数据,小数形式:由数字和小数点组成;,指数形式:由“十进制

12、小数” + “ e(或E)” + “十进制数整数” 三部分组成。,例如: 3.4 4. .3 0.34 合法,例如: 12.5e-6 表示12.510-6,十进制小数,e(或E),十进制数整数,2.4.1 实型常量(实数或浮点数),注:必须要有小数点,注:e(或E)之前必须有一个数字,之后的指数必须为整数,注意事项:,小数点不能单独出现;,e或E的两边必须有数,且其后面必须为整数;,如:0. = .0 = 0.0 合法,如: 6E0.2 e5 6E,.,不合法,不合法,2.4.2 实型变量的分类,单精度(float)型,双精度(double)型,注意:在程序中实数可以用小数或者指数形式表示,

13、但在内存中一律按指数形式存放。计算机可以精确的存 放一个整数但对于实数往往存在误差。,2.5.1 字符常量,用单引号括起来的一个字符;,用单引号括起来的由反斜杠()引导的转义字符。,如:A、 1、? 等。,如: n 101 x41,在统计字符个数时,只能记为一个字符,只能是英文的单引号,2.5 字符和字符串,二种表现形式:,转义字符表,字符形式,功能,n,换行,t 、V,横向跳格、,b 、r,竖向跳格,退格、,f,回车,、“,8进制数表示的ASCII码对应的字符,反斜杠、单引号、双引号,ddd,换页,xhh,16进制数表示的ASCII码对应的字符,一个字符的多种表示方法:,65D(十进制)=4

14、1H(十六进制)=101O(八进制) 字符A可以表示为A、x41、101、65、0x41、0101。,要避免的错误:,表示单引号: 表示双引号:“ 表示斜线: ,例如: char c;c= a; c= 034; c= n;c= x65; c=65;c=0101;c=0x41;,2.5.2 字符变量,字符变量用来存放字符常量,注意一个字符变量只能存放一个字符。,一般以一个字节来存放一个字符,或者说一个字符变量在内存中占一个字节。,2.5.3 字符串常量,字符串常量在机器内存储时,系统会自动在字符串的未尾加一个“字符串结束标志”,它是转义字符0。该结束标志在内存中占用一个字节,但不记入字符串长度

15、,比如a在内存中占用一个字节,“a”在内存中占两个字节,在C语言中,用一对双引号括起来的零个或多个字符序列称为字符串。例如:”LiMing”、”Hello”。,字符串的长度是指该字符串的字符个数,不包括双引号。例如以上两个字符串的长度分别为6和5。,a,a,0,字符a,字符串a,例2-4:#define PI 3.14159 main( ) float s, r;scanf(“%f“, /* 输出变量s 的值(面积) */ ,1s=3.14 (共输出6个字符且有2位小数)2s=12.5664 (共输出8个字符且有4位小数),运 行 结 果,2.5 算术运算符和算术表达式,2.5.1 算术运算符

16、,+:加法,-:减法,*:乘法,/:除法,%:取余或模,3+51+1+3,3-51-1-3,3*5aba.b,3/5=03./5=0.63/5.=0.6,3%5=3 注意两边的操作数都必须为整型,说明: (1)如果双目运算符两边的运算数类型一致,则所得结果的数据类型与运算数的类型一致。如1.0/2.0=0.5,=0; (2)如果双目运算符两边的运算数类型不一致,系统首先将进行自动类型的转换,使两边的数据类型一致再进行运算,2.5.2 算术运算符的优先级和结合性和算术表达式,一、算术运算符的优先级 ()、 +、-、 *、/、%、 +,-,高,低,单目,双目,同级,同级,同级,二、算术表达式,用算

17、术运算符和括符将操作数连接起来的式子。,优先级:,( ),* / %,+ -,结合性,自左向右,与数学上一致。,表达式的值:,数值型: int、long、unsigned、double,结合性是指同级运算时运算符的结合方向。 如 a#b#c (#代表某一运算符) 若先运算a#b,再将其结果与c运算, 称为左结合性;从左至右运算规则 若先运算b#c,再将a与其结果运算, 则称右结合性。从右至左运算规则,例2-5: 已知: float a=2.0; int b =6,c =3; 求解: a*b/c-1.5+ A +abs(-5)=?,12.0/3,4.0 - 1.5,2.5,+65(int),67

18、.5,5,72.5,国家等级考试练习,1.以下关于long,int,和short类型数据占用内存大小的叙述中正确的是(07.09) A.均占四个字节 B.根据数据的大小来决定所占内存的大小 C.由用户自己定义 D.由C语言编译系统决定2.设有定义:float a=2,b=4,h=3; 以下C语言表达式中与代数式 计算结果不相符的是_(04.04) A.(a+b)*h/2 B.(1/2)*(a+b)*h C.(a+b)*h*1/2 D.h/2*(a+b),D,B,2.6、赋值运算符和赋值表达式,1、赋值运算符,= (数学上的等号)注意区别,功能:将一个表达式的值赋给一个变量。,2、赋值表达式,用

19、赋值运算符将变量和表达式连接起来的式子,形式: 变量=表达式,只能是变量不能为为表达式或常量,求值规则: 将“=”右边表达式的值赋给左边的变量。,结合性:自右至左,例如:合法的赋值表达式:x=5 z=srqt(3)+ 2*c b=a i=i+1错误的赋值表达式:x+10=2 x+n=i,注意: (1)赋值表达式的优先级比算术运算符低如: x=2+7/3,(2)等号右边也可以是一个赋值表达式,如a=b=7+1等价于 a=(b=7+1),(3)赋值表达式的值即最左边的变量所得到的新值 如: a=b=7+1中,a=8,b=8 ,整个表达式的值也为8,例2-9:,(1) x=(y=12)/4,y值为1

20、2,x值为3,表达式的值为3,(2) x=y=12/4,y值为3,x值为3,表达式的值为3,(3) x=(y=12/4),(y值为3,x值为3,表达式的值为3,(4) (x=y)=12/4,该赋值运算符左边不是变量,而是一个表达式,2、复合赋值运算符和表达式,*=、/=、%=、+=、-=、=、&=、=、|=,共10个 由赋值运算符与算术、位移、位逻辑运算符组成。,复合运算符是一个运算符,但功能上,是两个运算符功能的组合。,例2-10:,a+=b 相当于 a=a+b,a*=b+c 相当于 a=a*(b+c),在赋值运算符之前加上其他运算符构成复合赋值运算符,那a-=b*c+a相当于?,算术运算符

21、比复合 赋值运算符优先级要高,例题: 已有变量a其值为2,计算表达式a+=a*=a的值,a+=a*=a,1.复合运算符的结合性 2.变量值的变化,已有变量a ,其值为9,计算表达式a+=a-=a+a的值, a=a*a 当a为2时,计算a=2*2后,a的值为4,表达式值也为4, a=a+a 此时a的值为4,二表达式值a也是4,所以最终结果a=4+4=8,2.6.3、赋值运算中的类型转换,在赋值时,将赋值符右边值的类型转换成与其左边变量类型一致的类型。,几种情况:,(1) 实型,整型(字符型),取整数部分,去掉小数部分,(2) 整型、字符型,实型,补足有效位,int a=2.9 2 float f

22、=23; 23.00000 (7位) double f=A; 65.00 000 000 000 000 (16位),(不进行四舍五入),整型为2个字节,故将字符的ASCII值放到整型变量的低八位中,高位为0如字符A的ASCII码为65,内存中存放情况如下,将整型赋给字符型时,只把低八位赋给字符型变量,001000001,int a=A;,00000000,A,整型常量65,char c;,00000000,001000001,c=65;,字符型,整型,(3),整型,字符型,(4),对char、int、short、long、unsigned型数据,赋值符右边数据(a位),赋值符左边变量(b位)

23、,a=b 原样照赋,ab 截断高a-b位,送低b 位,ab,无符号数据或正数,有符号数据,高a-b位全补0,有符号变量,符号扩展,符号扩展,符号位为0,剩余的高位补0,符号位为1,剩余的高位补1,2.7.自增与自减运算符 (重点和难点),+i:i值先增加1后再参与其他运算 i+:先参与其他运算后再使i值增加1 -i:i值先减少1后在参与其他运算 i-:先参与其他运算后再使i值减少1,关键区分自增自减后变量的值和表达式的值的不同,(1) 单独使用时,+i;,等 价,i+;,等 价,i=i+1;,(2) j=+i;,(3) j=i+;,若i的初始值为3,i=4; j=4;,i=4; j=3;,结合

24、性:,自右向左,例:,i = 2; j = -i+;,分析: (1)+、-、+(正号)、-(取负)是同级运算符,结合方向:自右向左。,(2) -i+等价于-(i+),(3) 对于括号内的自增运算,又要先使用i,再使i增加1。,运算结果: i的值为3,j的值为-2。,补充 一.其它运算符,形式:,功能:,求得变量或某种数据类型所需的字节数。,运算结果:,整型数,例2-13:,int a;float x;,sizeof(int),sizeof(float) 结果是多少?,1求字节运算符:sizeof,sizeof 变量名 或 sizeof(变量名) 或 sizeof(类型名),二、数据类型转换,C

25、语言允许整型、实型、字符型数据进行混合运算。,不同类型的数据进行混合运算时,要考虑的问题有:,(1)运算符的优先级别;,(2)运算符的结合方向;,(3)数据类型转换。,int,unsigned int,long int,double,float,char, short,转换规则,存储长度较短,存储长度较长,总趋势:,算术表达式中的运算转换,向左的箭头表示必然转换,例2-14:,int x=2;float y=1.6;char c=A;,c+x*y=?,65(int),2(int),1.6 (double),3.2(double),68.2(double),作业,1、什么是常量和变量?,2、阐述

26、C语言中标识符的定义规则和分类,3、C基本的数据类型(整形,实型,字符型) 分类、范围、以及其具体标识。,第二章 小结,1、变量的定义,整型 intlongunsigned (0 +65535),实型 float,字符型 char,2、算术运算符和算术表达式 3、赋值运算符和赋值表达式 4、复合赋值运算符和表达式,算术运算符,赋值运算符,高低,国家等级考试练习,1.以下4组用户定义的标识符中,合法的一组是:A) Main ,txt,_8_ B) If ,int ,US$C) _float,4d,REAL C) k_2,_001,-max 2.以下定义语句正确的是: A)char a=a,b=“

27、b” ; B) float a=b=10.0; int a=1,b=2; D) double int; 3.合法的一组C语言数值常量是: A) 028,.5e3,0xf B)12.,4.5e0,0xa23 C) .177,4E1.5,0abc D)45L,-34U,10.000,国家等级考试习题,2.设有定义:“int k=0”,以下四个表达式中与其他 三个表达式的值不相同的是 k+ b.k+=1 c.+k d.k+1,1.若变量均已正确的定义并赋值,以下合法的 C语言赋值语句是 A)x=y=5; B)x=n%2.5; C)x+n=I D)x=5=4+1;,A,a,4.有以下程序 main()

28、 int m=12,n=34; printf(“%d%d”,m+,+n); printf(“%d%dn”,n+,+m); 程序运行后的输出结果是 a.12353514 b.12353513 c.12343514 d.12343513,3.数字字符0的ASCII值为48,若有以下程序 main() char a=1,b=2; printf(“%c”,b+); printf(“%dn”,b-a); 程序运行后的结果是 a.3,2 b.50,2 c.2,2 d.2,50,C,A,6.有以下程序 main() char a=a,b;printf(“%c”,+a); printf(“%cn”,b=a+); 程序运行后的输出结果是 a). b,b b).a,b c).b,c d).a,c,5.以下程序 main() int m=3,n=4,x; x=-m+; x=x+8/+n; printf(“%dn”,x); 程序运行后输出的结果是 a.3 b.5 c.-1 d.-2,D,A,

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

当前位置:首页 > 教育教学 > 计算机等级考试

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报