常量、变量、运算符和表达式.ppt_第1页
常量、变量、运算符和表达式.ppt_第2页
常量、变量、运算符和表达式.ppt_第3页
常量、变量、运算符和表达式.ppt_第4页
常量、变量、运算符和表达式.ppt_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1,第二章 常量、变量、运算符和表达式,知识回顾,C语言有什么特点 如何书写编译并运行C程序 printf()函数,3,内容摘要,C语言的数据类型 常量介绍 如何使用变量来存储信息 如何声明和初始化变量 运算符与表达式 类型转换,4,C语言的数据类型,数据类型是我们对数据的描述 例如 数字 整数:5,123,-9 实数:23.56,6.78,-0.12 字符 a,f等等,5,C语言的数据类型,6,数据类型描述,7,数据类型说明,windows为32位计算机环境 上表给出的是以此为例的各数据类型占用的内存空间字节数和表示的数值范围 可以利用sizeof()函数获得内存空间字节数 #include “stdio.h” void main() int a; /char a; short a; printf(“%d”,sizeof(a); ,8,常量介绍,不同类型的数据需要采用不同的方式来存储 C语言中有两种存储数值的方式 变量 常量 值不能被改变的量被称为常量 字面常量 符号常量,9,常量介绍,字面常量 字面常量是指在源代码中直接输入的值 例如: int age=25; /整型常量 float score=85.5; /浮点数常量 char sex=f; /字符常量 char name10=”lucy”; /字符串常量 其中25、85.5、f、 ”lucy”是字面常量,10,常量介绍,整型常量的表示方式 首位不为0的常量被视为10进制整数 十进制常量可以包含数字09,并可以在最前面加上正号或负号(正号可省略) 以0打头的常量被视为八进制整数 八进制常量可以包含数字07,并可以在前面加上正号或负号 以0x或OX打头的常量被视为十六进制整数 十六进制常量可以包含数字09和字母AF,并可以在前面加上正号或负号,11,常量介绍,符号常量 在程序中用一个符号来表示一个常量 这个符号就被称为符号常量 例如: 圆周率的值(3.14) C语言中使用预编译处理命令#define来定义符号常量 #define PI 3.14 /注意:#define语句不以分号结尾 则可以这样计算圆的面积:area=PI*r*r 常量不能修改,程序中写 PI=3.1415 这样会引发错误,12,变量介绍,变量的概念 程序运行中,其值可以被改变的量是变量 变量是计算机内存中一个被命名的数据存储位置 使用变量名时实际上用的是存储在这里的数据的值,13,变量介绍,变量的类型与数据类型是对应的 不同数值需要内存空间不同,需要不同变量类型 例如: 小型整数(如6、250和-18)需要的内存较少 计算机整数运算速度非常快 大型整数和浮点数(如5000000000、或0.000000871256)需要较多存储空间,执行数学运算所需时间更长 使用合适的变量类型,可确保程序运行效率提高,14,变量示例,#include void main() int a,b,c,sum; /声明四个整型变量,分别存放三个数及它们的和 printf(“Enter three numbersn“); /提示用户的信息 scanf(“%d%d%d“, /打印输出结果 ,15,变量的定义及初始化,变量定义 任何变量都必须遵守先定义后使用的原则 变量定义的一般形式 存储类别 数据类型 变量名1,变量名2; 存储类别不是必须要求声明的部分,后面章节中将讲到这个概念 int num1,num2; /定义num1,num2为整型变量 float avg; /定义avg为实型变量 char ch1,ch2; /定义ch1,ch2为字符型变量,16,变量的定义及初始化,变量定义的位置 定义在哪里是至关重要的 在哪里定义决定着这个变量在哪些范围内有效 现学习阶段,可将所有变量声明放在一起,并放置于main()函数的主体语句中的前面,17,变量的定义及初始化,变量的初始化 定义变量时指示计算机为变量留出存储空间 变量值并没有指定,可能为随机值 使用变量前,一定要将其初始化为一个确定的值,18,变量的定义及初始化,变量初始化方法 定义变量的同时进行赋初值的操作 定义变量后,使用赋值语句来初始化变量 int num1=34,num2; num2=67; 定义了num1和num2两个整型变量 定义的同时初始化num1为34 使用了等号“=” 赋值运算符将67赋给变量num2,19,变量的定义及初始化,初始化注意事项 不要将变量初始化为该变量数据类型所表达的值域允许范围之外的值 short int weight=100000;/错误 C编译器也许不会发现这种错误,因此程序将被编译和链接,但当程序运行时,结果将可能与预期的不同,20,变量的定义及初始化,初始化原则 了解不同类型变量占用的字节数,不要试图将超出变量取值范围的值赋给变量 声明变量时,应尽可能对它进行初始化 存储整型数据时,尽量不要使用float或double变量,会降低效率 不要将负值赋给unsigned变量,21,变量的定义及初始化,特殊的char数据类型 C语言使用char数据类型来存储字符。 例如5,*,#, 都是字符 计算机内存中,所有数据都以数值方式存储 人们为每个字符进行了相对应的数值编码 称为ASCII字符集(ASCII表示美国信息交换标准码) 例如:字母a的ASCII码为97。那么,当在char变量中存储字符a时,实际存储的是97,22,变量的定义及初始化,char变量处理 使用char变量之前必须声明;也可以在声明的同时对它进行初始化 char ch,ch1,b=f; char code=3; 函数printf()可用于打印字符和数字 格式字符串%c指示printf()打印一个字符,而%d指示它打印一个十进制整数,23,变量的定义及初始化,#include “stdio.h“ void main() char ch1=a; char ch2=90; printf(“作为一个字符ch1=%c“, ch1); printf(“n作为一个数字ch1=%d“, ch1); printf(“n作为一个字符ch2=%c“, ch2); printf(“n作为一个数字ch2=%dn“, ch2); ,24,问题,上半讲结束,提出问题: 如何编写程序定义并输出我们的班号与拼音姓名?,25,运算符与表达式,什么是运算符? 运算符是一个命令编译器对一个或多个操作数执行某种运算的符号 类似于“+”、“-”等 操作数是运算符对其执行操作的东西 类似于“1”、“a”等 例如:a+1中,“+”为运算符, “a”、“1”为操作数,26,运算符与表达式,什么是表达式? 表达式可以是任何计算结果为数值的东西 有各种复杂程度不同的表达式 最简单的表达式只包含一项:一个简单变量、字面常量或符号常量 例如:PI:程序中定义的符号常量 复杂表达式由多个简单的表达式组成 表达式之间用运算符连接 例如:3*9、a=4+9等赋值语句,27,运算符与表达式,赋值运算符 赋值运算符是一个等号() 编程中的用途与数学中的“相等”是不同的 例如下面的语句: int a =3,b; b = a; 指的是将a的值“3” 赋给b,而不是说a等于b,28,运算符与表达式,赋值运算符的格式 变量=表达式 赋值语句的右边可以是任何表达式(expression) 但左边必须是一个变量名 例如: int a=2,b=3,c; c=a*2+b; 该句被执行时,将计算表达式a*2+b的值,并将结果7赋给变量c,29,运算符与表达式,算术运算符 算术运算符是执行诸如加、减等数学运算的 2种单目算术运算符 5种双目算术运算符 注:“目”就是代表参与运算的操作成员数量,30,运算符与表达式,单目算术运算符 单目数学运算符是指完成此类运算只需要一个操作数,31,运算符与表达式,递增与递减运算符 只能用于变量,而不能用于常量 分别将操作数加1和减1 +a; 等价于 a=a+1; -b; 等价于 b=b-1; 这两个运算符放在操作数的前面(前缀模式),和放在操作数的后面(后缀模式)时,效果却不等价 采用前缀模式时,先执行递增或递减运算,再计算表达式的值 采用后缀模式时,先计算表达式的值,然后再执行递增或递减操作,32,运算符与表达式,#include “stdio.h“ void main() int a=8,b; b=a+; /先取a的值做赋值给b,再执行a=a+1 printf(“a=%d,b=%dn“,a,b); ,33,运算符与表达式,#include “stdio.h“ void main() int a=8,b; b= +a; /先执行a=a+1,再取a的值做赋值给b printf(“a=%d,b=%dn“,a,b); ,34,运算符与表达式,双目算术运算符 双目运算符需要两个操作数,35,运算符与表达式,“+”、“-”、“*”、“/”大家都很熟悉 求模(取余)运算 返回第一个操作数除以第二个操作数后得到的余数 该运算符要求两边的操作数都是整型 例如: 10%3=1 (商为3,余数为1) 25%5=0 (商为5,余数为0) 2%7=2 (商为0,余数为2),36,运算符与表达式,求模运算符应用广泛 要求用户输入一个三位数的整数,倒序输出,478变874 #include “stdio.h“ void main() int a,b,c,d; printf(“请输入三位数的整数“); scanf(“%d”, ,37,运算符与表达式,运算符优先级和圆括号 在包含多个运算符的表达式中,运算的执行顺序是什么样的呢? 例如: x=10-5*3+2;,38,运算符与表达式,运算符优先级 有关运算执行顺序的规则 每个运算符都有一个优先级 计算表达式时,先执行优先级高的运算符 下表中的“1” 表示优先级最高,39,运算符与表达式,表达式计算顺序 表达式中包含多个优先级相同的运算符,则按从左到右的顺序依次计算 例如:15/3*4%3 表达式的结果为2(15/3=5 ,5*4=20,20%3=2) 如果我们希望先计算乘法再执行其它运算呢? 改写为:15/(3*4)%3 结果变成1(3*4=12 ,15/12=1,1%3=1) 使用圆括号可以改变计算顺序 在表达式中,可以使用多个圆括号,并且可以嵌套 当圆括号被嵌套时,从内向外计算表达式,40,运算符与表达式,表达式:num=10*(22/(6-4)-7); 表达式的计算顺序如下: 1.计算最里面括号内的表达式6-4,结果为2。表达式变为: 10*(22/2-7) 2.接着计算表达式22/2,结果为11,表达式变为: 10*(11-7) 3.计算括号内的表达式11-7,结果为4,表达式变为: 10*4 4.最后结果为num=40 。 通常会在书写表达式时,为清晰思路,即使不改变运算符优先级,也会使用圆括号 注意:圆括号必须成对出现,否则编译器将产生错误消息,41,运算符与表达式,关系运算符 关系运算符用于比较表达式 例如比较两个数字大小时等问题 关系运算符所组成的表达式的结果为真true(1)或假false(0),42,运算符与表达式,关系运算符项目表,43,运算符与表达式,#include “stdio.h“ void main() int a=3,b=4,c=3; printf(“%dn“,a=b); printf(“%dn“,a!=b); printf(“%dn“,a=c); printf(“%dn“,a!=c); printf(“%dn“,ab); printf(“%dn“,a=b); printf(“%dn“,ab); printf(“%dn“,a=b); ,44,运算符与表达式,关系运算符注意事项: C语言将真(true)解释为1,假(false)解释为0。 不要将描述相等关系的关系运算符“=”和赋值运算符“=”混淆 用户输入的数据被用于表达式或结果为逻辑值的语句中时,数据将被解释为true或false,解释的规则如下:0表示false,所有的非0值表示true 关系运算符的正确理解对于我们后面学习条件语句的使用非常重要,45,运算符与表达式,关系运算符的优先级 使用关系运算符的表达式中,也可用圆括号来改变优先级,46,运算符与表达式,关系运算符的优先级低于算术运算符 例子: int a=3,b=4,c=4,d=2; num=a+bc*d 将先计算c*d=8 再计算a+b=7 然后比较两个值的大小78? 结果为0赋给num,47,运算符与表达式,逻辑运算符 现实中,评价一个问题时通常要多方参考 例如: 评选优秀学员的条件 出勤率达到95%以上 各门课程的平均分在90分以上 要用到逻辑运算符把两个条件表达式进行组合,48,运算符与表达式,三种逻辑运算符,49,运算符与表达式,逻辑运算符的运算规则 exp1 & exp2 当且仅当exp1和exp2表达式的值都为真时,整个表达式的结果为真。 exp1 | exp2 当且仅当exp1和exp2表达式的值都为假时,整个表达式的结果为假。 !exp1 当exp1本来为真时,结果为假;本来为假时,结果为真。,50,运算符与表达式,#include “stdio.h“ void main() float a; /代表学生的出勤率 float c,ja; /c 代表c语言的成绩,ja代表java课程的成绩 float s; / 代表学生的平均分数 printf(“请输入该学生的出勤率“); scanf(“%f“, /两个条件有任何一个不满足时,将执行该语句 ,51,运算符与表达式,逻辑运算符的优先级 “!”是单目运算符 优先级高于“&”和“|”和所有的关系运算符及所有的双目数学运算符 运算符“&” 的优先级高于“|” 它们的优先级低于所有的数学运算符和关系运算符 同样也可以使用圆括号来改变计算顺序,52,其他运算符,复合赋值运算符 复合赋值运算符是指将双目算术运算符和赋值运算符组合在一起, 提供了一种简单的方式 a+=3; 等价于a=a+3; a*=3; 等价于a=a*3; a/=3; 等价于a=a/3; a-=3; 等价于a=a-3; a%=3; 等价于a=a%3;,53,其他运算符,条件运算符 C语言中唯一一个三目运算符(即需要三个操作数) 语法如下: a=exp1?exp2:exp3; 如果exp1的结果为真(即非0),则a=exp2的值;否则a=exp3的值 例如,我们比较变量a,b的大小,并将较大值存放于变量big中: big=(a=b)?a:b; /a=b为真,则big=a,否则big=b,54,其他运算符,逗号运算符 “,”在C语言中经常被用作一个简单的分隔符号 在一些情况下逗号是运算符,而不是分隔符 例如: int a=10,

温馨提示

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

评论

0/150

提交评论