ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:45.18KB ,
资源ID:27751906      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27751906.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言第02次课.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言第02次课.docx

1、C语言第02次课1.5 标识符、变量和常量1.5.1 常量与变量1. 常量符号常量在使用之前必须先定义,其一般形式为:#define 标识符 常量其中#define也是一条预处理命令(预处理命令都以“#”开头),称为宏定义命令,其功能是把该标识符定义为其后的常量值。一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。【例1.5】符号常量的使用。程序代码如下:#define PI 3.14main() float area, r; r = 10; area = r * r * PI; printf(area=%fn, area);运行结果:area=314.000000程序说明:2.

2、变量变量名是一种标识符,它必须遵守标识符的命名规则。1.5.2 整型数据1.5.2.1 整型常量整型常量就是整常数。在C语言中,使用的整常数有八进制、十六进制和十进制3种,使用不同的前缀来相互区分。除了前缀外,C语言中还使用后缀来区分不同长度的整数。1. 八进制整常数八进制整常数必须以0开头,即以0作为八进制数的前缀。数码取值为07。如0123表示八进制数123,即(123)8,等于十进制数83,即182+281+380=83;-011表示八进制数-11,即(-11)8,等于十进制数-9。(1) 以下各数是合法的八进制数: 015(十进制为13) 0101(十进制为65) 0177777(十进

3、制为65535)(2) 以下各数是不合法的八进制数: 256(无前缀0) 0382(包含了非八进制数码8) 2. 十六进制整常数十六进制整常数的前缀为0X或0x。其数码取值为09、AF或af。如0x123表示十六进制数123,即(123)16,等于十进制数291,即1162+2161+3160=291;-011表示十六进制数-11,即(-11)16,等于十进制数-17。(1) 以下各数是合法的十六进制整常数: 0X2A(十进制为42)0XA0(十进制为160)0XFFFF(十进制为65535)(2) 以下各数是不合法的十六进制整常数: 5A(无前缀0X) 0X3H(含有非十六进制数码)3. 十

4、进制整常数十进制整常数没有前缀,数码取值为09。(1) 以下各数是合法的十进制整常数: 237 -568 1627(2) 以下各数是不合法的十进制整常数: 023(不能有前导0) 23D(含有非十进制数码)4. 整型常数的后缀下面给出一些例子。(1) 十进制长整常数: 158L(十进制为158) 358000L(十进制为358000)(2) 八进制长整常数: 012L(十进制为10) 0200000L(十进制为65536) (3) 十六进制长整常数: 0X15L(十进制为21) 0XA5L(十进制为165) 0X10000L(十进制为65536)1.5.2.2 整型变量1. 整型变量的分类整型

5、变量可分为基本型、短整型、长整型、和无符号型4种。(1) 基本型(2) 短整型(3) 长整型(4) 无符号型类型声明符为unsigned,存储单元中全部二进位(bit)用作存放数本身,而不包括符号。无符号型又可与前面的3种类型匹配而构成另外几种类型。 无符号基本型:类型声明符为unsigned int或unsigned。 无符号短整型:类型声明符为unsigned short。 无符号长整型:类型声明符为unsigned long。表1.4 整型变量的字节数及表示范围类型声明符分配字节数数的范围int2-3276832767 即 -215(215-1)short int2-3276832767

6、 即 -215(215-1)long int4-21474836482147483647 即 -231(231-1)unsigned int2065535 即 0 (216-1)unsigned short2065535 即 0 (216-1)unsigned long404294967295 即 0 (232-1)2. 整型变量的定义变量定义的一般形式为: 类型声明符 变量名标识符1, 变量名标识符2, .;例如:int a, b, c; /* a、b、c为整型变量*/unsigned p, q; /* p、q为无符号整型变量*/【例1.6】整型变量的定义与初始化。程序代码如下:main(

7、) int a = 3, b = 5; printf(a+b=%dn, a + b);运行结果:a+b=81.5.3 实型数据1.5.3.1 实型常量实型也称为浮点型。实型常量也称为实数或者浮点数。在C语言中,实数只采用十进制。它有两种形式, 十进制数形式和指数形式。1. 十进制数形式由数码09和小数点组成。例如0.0、.25、5.789、5.0、300.、-267.8230等均为合法的实数。2. 指数形式由十进制数加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为a E n (a为十进制数,n为十进制整数),其值为a*10n。(1) 以下是合法的实数: 2.1E5(

8、等于2.1105) 3.7E-2(等于3.710-2) -2.8E-2(等于-2.810-2)(2) 以下是不合法的实数: 345(无小数点) E7(阶码标志E之前无数字) -5(无阶码标志) 53.-E3(负号位置不对) 2.7E(无阶码)标准C允许浮点数使用后缀。后缀为“f”或“F”即表示该数为浮点数。如356f和356.是等价的。1.5.3.2 实型变量实型变量分为两类。1. 单精度型单精度型变量的类型声明符为float,在Turbo C中,单精度型占4个字节(32位)内存空间,其数值范围为3.4E-383.4E+38,只能提供7位有效数字。2. 双精度型双精度型变量的类型声明符为dou

9、ble,在Turbo C中,双精度型占8个字节(64位)内存空间,其数值范围为1.7E-3081.7E+308,可提供16位有效数字。实型变量声明的格式和书写规则与整型相同。例如: float x, y; /* x、y为单精度实型变量*/double a, b, c; /* a、b、c为双精度实型变量*/也可在声明变量为实型的同时,给出变量的初值。例如:float x = 3.2, y = 5.3; /* x、y为单精度实型变量,且有初值 */double a = 0.2, b = 1.3, c = 5.1; /* a、b、c为双精度实型变量,且有初值*/【例1.7】单精度实型变量对有效位数字

10、的限制。程序代码如下:main() float a; a = 0.123456789; printf(a=%f, a);运行结果:a=0.123457下面的例子说明了float和double的不同。【例1.8】演示float和double的区别。程序代码如下:main() float a; double b; a = 33333.333333; b = 33333.333333333; printf(a=%fnb=%fn, a, b); /* 用格式化输出函数输出a和b的值 */运行结果:a=33333.332031b=33333.3333331.5.4 字符型数据字符型数据包括字符常量、字符

11、变量和字符串常量。1.5.4.1 字符常量字符常量是用单引号括起来的一个字符。例如a、b、A、?都是合法的字符常量。表1.5 常用转义字符表转义字符转义字符的意义转义字符转义字符的意义n回车换行反斜线符( )t横向跳到下一制表位置单引号符v竖向跳格双引号符b退格a鸣铃r回车ddd13位八进制数所代表的字符f走纸换页xhh12位十六进制数所代表的字符【例1.9】转义字符的使用。程序代码如下:main() int a, b, c; /* 定义 a、b、c为整数 */a = 5; b = 6; c = 7;printf(%dnt%d %dn %d %dtb%dn, a, b, c, a, b, c)

12、; /* 按要求格式输出a、b、c的值 */运行结果:5 6 7 5 67程序说明:1.5.4.2 字符变量字符变量用来存放字符常量,即单个字符。每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。字符变量的类型声明符为char。字符变量类型声明的格式和书写规则都与整型变量相同。例如:char a, b; /* 定义字符变量 a和b */a = x, b = y; /* 给字符变量a和b分别赋值x和y */整型数据为2字节量,字符数据为1字节量,当整型数据按字符型量处理时,只有低8位字节参与处理。【例1.10】字符变量的使用。程序代码如下:main() char a, b; a = 1

13、20; b = 121; printf(%c,%cn%d,%dn, a, b, a, b); 运行结果:x,y120,121程序说明:本程序中,定义a、b为字符型变量,但在赋值语句中赋以整型值。从结果看,a、b值的输出形式取决于printf函数格式串中的格式符,当格式符为“%c”时,对应输出的变量值为字符形式,当格式符为“%d”时,对应输出的变量值为整数形式。【例1.11】将小写字母转换成大写字母。程序代码如下:main() char a, b; a = x; b = y; a = a-32; /* 把小写字母转换成大写字母 */ b = b-32; printf(%c,%cn%d,%dn,

14、a, b, a, b); /* 以字符型和整型输出 */运行结果:X,Y88,89程序说明:由于每个小写字母比它相应的大写字母的ASCII码大32,如a=A+32、b=B+32,因此,语句a=a-32;即可将字符变量a中原有的小写字母转换成大写字母。1.5.4.3 字符串常量前面已经提到,字符常量是由一对单引号括起来的单个字符。C语言除了允许使用字符常量外,还允许使用字符串常量。字符串常量是由一对双引号括起来的字符序列。如:“CHINA”、“C program”、“$12.5”等都是合法的字符串常量。如字符串“WORLD”在内存中的实际存放形式为:WORLD0可以看出,字符串“WORLD”在内

15、存中需要6个字节的存贮空间,最后一个字节存贮的是字符串结束标记0。注意,0是系统自动加上的。因此,“a”实际包含了两个字符:a和0,因此,把“a”赋值给一个字符变量显然是错误的。在C语言中,没有专门的字符串变量,字符串如果需要存放在变量中,则需要用字符数组来存放。1.5.5 不同类型数据的混合运算整型、实型(包括精度和双精度)、字符型数据间可以混合运算。例如,下面的语句是合法的:int x = 10+a+1.5-12.34*b;在进行混合运算时,不同类型的数据要转换成同一类型。转换的方法有两种,一是自动转换,二是强制转换。 1.5.5.1 类型的自动转换图1.21表示了类型自动转换的规则。图1

16、.21 类型转换方向1.5.5.2 类型的强制转换强制类型转换是通过类型转换运算来实现的。其一般形式为: (类型声明符) (表达式)其功能是把表达式的运算结果强制转换成类型声明符所表示的类型。例如:(float)a把a转换为实型,(int)(x+y)把x+y的结果转换为整型。【例1.12】类型的强制转换。程序代码如下:main() float f = 5.75; printf(int)f=%d,f=%fn, (int)f, f); 运行结果: (int)f=5,f=5.75本例表明,f虽强制转为int型,但只在运算中起作用,这种转换是临时的,而f本身的类型并不改变。在学习了上述相关知识之后,通

17、过下例来完成本章提出的任务之一。【例1.13】变量的定义及赋值。已知a=6,b=2.5,求表达式(a+b)/3的值。main()int a = 6; float b = 2.5, y; y = (a+b)/3; printf(a+b)/3=%f, y);运行结果: (a+b)/3=2.8333331.6基本运算符、表达式及运算的优先级1.6.1 运算符简介运算是对数据进行加工的过程,用来表示各种不同运算的符号称为运算符。C语言提供了相当丰富的一组运算符。除了一般高级语言所具有的算术运算符、关系运算符、逻辑运算符外,还提供了赋值运算符、位运算符和自增自减运算符等。运算符分类如表1.6所示。表1.

18、6 C语言的运算符运算符种类运 算 符算术运算符+、-、*、/、%自增、自减运算符+、-关系运算符、=、=、!=逻辑运算符!、&、|位运算符、-、|、&赋值运算符=及其扩展赋值运算符条件运算符? :逗号运算符,指针运算符*、&求字节数运算符Sizeof强制类型转转换运算符(类型)分量运算符. 、-下标运算符 其他如函数调用运算符()1.6.2 算术运算符和算术表达式1. 算术运算符算术运算符除了负值运算符外都是双目运算符,即指两个运算对象之间的运算。取负值运算符是单目运算符。表1.7给出了基本算术运算符的种类和功能。表1.7 算术运算符运 算 符名 称举 例运算功能-取负值-x取x的负值+加x

19、+y求x与y的和-减x-y求x与y的差*乘x*y求x与y的积/除x/y求x与y的商%求余(或模)x%y求x除以y的余数使用算术运算符应注意以下几点: 减法运算符“-”可作取负值运算符,这时为单目运算符。例如-(x+y)、-10等。 使用除法运算符“/”时,若参与运算的变量均为整数时,其结果也为整数(舍去小数);若除数或被除数中有一个为负数,则结果值随机器而定。例如:-7/4,在有的机器上得到结果为-1,而有的机器上得到结果-2。多数机器上采取“向零取整”原则,例如:7/4=1,-7/4=-1,取整后向零靠拢。 使用求余运算符(模运算符)“%”时,要求参与运算的变量必须均为整型,其结果值为两数相

20、除所得的余数。一般情况下,所得的余数与被除数符号相同。例如:7%4=3,10%5=0,-8%5=-3,8%-5=3。2. 算术表达式用算术运算符、圆括号将运算对象(或称操作数)连接起来的符合C语法规则的式子,称为C算术表达式。其中运算对象可以是常量、变量、函数等。例如:a*b/c-1.5+aC算术表达式的书写形式与数学中表达式的书写形式是有区别的,在使用时要注意以下几点: C表达式中的乘号不能省略。例如: 数学式b2-4ac,相应的C表达式应写成b*b-4*a*c。 C表达式中只能使用系统允许的标识符。例如: 数学式r2相应的C表达式应写成3.1415926*r*r。 C表达式中的内容必须书写

21、在同一行,不允许有分子分母形式,必要时要利用圆括号保证运算的顺序。例如: 数学式相应的C表达式应写(a+b)/(c+d)。 C表达式不允许使用方括号和花括号,只能使用圆括号帮助限定运算顺序。可以使用多层圆括号,但左右括号必须配对,运算时从内层圆括号开始,由内向外依次计算表达式的值。3. 算术运算符的优先级和结合性C语言规定了在表达式求值过程中各运算符的优先级和结合性。 优先级:是指当一个表达式中如果有多个运算符时,则计算是有先后次序的,这种计算的先后次序称为相应运算符的优先级。 结合性:是指当一个运算对象两侧的运算符的优先级别相同时,进行运算(处理)的结合方向。按“从右向左”的顺序运算,称为右

22、结合性;按“从左向右”的顺序运算,称为左结合性。表1.8中给出了算术运算符的优先级和结合性。表1.8 算术运算符的优先级和结合性运算种类结 合 性优 先 级*、/、%从左向右高低+、-从左向右在算术表达式中,若包含不同优先级的运算符,则按运算符的优先级别由高到低进行运算;若表达式中运算符的优先级别相同时,则按运算符的结合方向(结合性)进行运算。在书写包含多种运算符的表达式时,应注意各个运算符的优先级,从而确保表达式中的运算符能以正确的顺序执行,如果对复杂表达式中运算符的计算顺序没有把握确定,可用圆括号来强制实现所希望的计算顺序。1.6.3 赋值运算符和赋值表达式1. 赋值运算赋值符号“=”就是

23、赋值运算符,由赋值运算符组成的表达式称为赋值表达式。其一般形式为:变量名 = 表达式;赋值的含义是指将赋值运算符右边的表达式的值存放到以左边变量名为标识的存储单元中。说明: 赋值运算符的左边必须是变量,右边的表达式可以是单一的常量、变量、表达式和函数调用语句。例如,下面都是合法的赋值表达式:x = 10; y = x+10; y = func(); 赋值符号“=”不同于数学中使用的等号,它没有相等的含义。例如x=x+1;的含义是取出变量x中的值加1后,再存入变量x中去。 在一个赋值表达式中,可以出现多个赋值运算符,其运算顺序是从右向左结合。例如,下面是合法的赋值表达式:x = y = z =

24、0; /* 相当于x = (y = (z = 0); */上面的表达式在运算时,先执行z=0,再把其结果赋予y,最后再把y的赋值表达式结果值0赋予x。又如:a = b = 3 + 5; /* 相当于a = (b = 3 + 5); */运算时,先执行b=3+5,再把它的结果赋予a,最后使a、b的值均为8。 进行赋值运算时,当赋值运算符两边的数据类型不同时,将由系统自动进行类型转换。转换的原则是,赋值运算符右边的数据类型转换成左边的变量类型。转换规则如表1.9所示。表1.9 赋值运算中数据类型的转换规则运算符左运算符右转换说明floatint将整型数据转换成实型数据后再赋值intfloat将实型

25、数据的小数部分截去后再赋值long int int、short 值不变int、short int long int右侧的值不能超过左侧数据值的范围,否则将导致意外的结果unsignedsigned按原样赋值。但是如果数据范围超过相应整型的范围,将导致意外的结果signedunsigned2. 复合赋值运算符其一般形式为:变量 双目运算符 = 表达式;C语言规定,所有双目运算符都可以与赋值运算符一起组合成复合赋值运算符。共存在10种复合赋值运算符,即+=、-=、*=、/=、%=、=、&=、=、|=。3. 赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。一般形式为:变

26、量 = 表达式;赋值表达式的求解过程如下。1.6.4 逗号运算符和逗号表达式在C语言中,逗号运算符即“,”,可以用于将若干个表达式连接起来构成一个逗号表达式。其一般形式为:表达式1, 表达式2, ., 表达式n;求解过程为:自左至右,先求解表达式1,再求解表达式2,最后求解表达式n。表达式n的值即为整个逗号表达式的值。例如:a = 3 * 4, a * 5, a + 10;求解过程为:先计算3*4,将值12赋给a,然后计算a*5的值为60,最后计算a+10的值为12+10=22,所以整个表达式的值为22。注意变量a的值为12。1.6.5 其他常用运算符自增、自减运算符是单目运算符,即仅对一个运

27、算对象施加运算,运算结果仍赋予该运算对象。参加运算的运算对象只能是变量而不能是表达式或常量,其功能是使变量值自增1和自减1。表1.10列出了自增、自减运算符的种类和功能。表1.10 自增、自减运算符运算符名 称举 例等价运算+加1i+或+ii=i+1-减1i-或-ii=i-1对一个变量i实行前置运算(+i)或后置运算(i+),其运算结果是一样的,即都使变量i值加1(i=i+1)。但+i和i+的不同之处在于+i是先执行i=i+1后,再使用i的值;而i+是先使用i的值后,再执行i=i+1。例如:架设i的初值等于3,则:j = +i; /* i的值先变成4,再赋给j,j的值为4 */j = i+;

28、/* 先将i的值赋给j,j的值为3,然后i变为4 */1.6.6 运算符的优先级与结合性C语言规定了运算符的“优先级”和“结合性”。在表达式求值时,先按运算符的“优先级别”高低次序执行。例如表达式a-b*c等价于a-(b*c),“*”运算符的优先级高于“-”运算符。如果在一个运算对象两侧的运算符优先级别相同,则按规定的“结合方向”处理。左结合性(自左向右结合方向)是指运算对象先与左面的运算符结合。右结合性(自右向左结合方向)是指运算对象先与右面的运算符结合。【例1.14】把数学算式转换成C语言表达式。输入变量x、y、z的值,根据以下算式求n的值。该算式转换成C语言表达式应为:x*x+y*z/2

29、。源程序如下:main() int x, y, z; float n; scanf(%d%d%d, &x, &y, &z); n = x * x + y * z /(float)2; printf(n=%f, n);运行结果:3 15 9 n=76.500000【例1.15】已知整型变量a、b、c的值,根据以下算式求y的值。程序代码如下:main() int a, b, c; float y; a = 9;b = 4;c = 7; y = (3.8 * (b * b + a * c) / (6 * a); printf(y=%f, y);运行结果:y=5.5592591.6.7 常用数学函数与表达式作为初学者,记住表1-11中数学函数是必要的。程序中要使用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1