c语言从入门到精通第2章.ppt

上传人:za****8 文档编号:13189304 上传时间:2020-06-06 格式:PPT 页数:55 大小:266.96KB
返回 下载 相关 举报
c语言从入门到精通第2章.ppt_第1页
第1页 / 共55页
c语言从入门到精通第2章.ppt_第2页
第2页 / 共55页
c语言从入门到精通第2章.ppt_第3页
第3页 / 共55页
点击查看更多>>
资源描述
第2章不变的和变的箱子常量与变量,标识符和关键字常量变量综合应用计算学生平均成绩跟我上机,第2章不变的和变的箱子常量与变量,标识符和关键字常量变量综合应用计算学生平均成绩跟我上机,第2章不变的和变的箱子常量与变量,标识符和关键字常量变量综合应用计算学生平均成绩跟我上机,第2章不变的和变的箱子常量与变量,标识符和关键字常量变量综合应用计算学生平均成绩跟我上机,第2章不变的和变的箱子常量与变量,标识符和关键字常量变量综合应用计算学生平均成绩跟我上机,第2章不变的和变的箱子常量与变量,标识符和关键字常量变量综合应用计算学生平均成绩跟我上机,不变的和变的箱子常量与变量,在C语言中,根据存储方式和表示形式,数据有常量和变量之分,就像方程有已知数和未知数一样。那么,你知道二者的区别和应用吗?本章就来讨论一下吧。,2.1标识符和关键字,2.1.1标识符2.1.2关键字,2.1.1标识符,C语言中,常量、变量、函数名称都是标识符。标识符,可以看做一个代号,就像日常生活中物品的名称一样。标识符的名称可以由用户来决定,但也不是想怎么命名就怎么命名,它也需要遵循一定的规则。,2.1.1标识符,标识符只能是由英文字母(AZ,az)、数字(09)和下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。如:intMAX_LENGTH;/*由字母和下划线组成*/不能使用C语言中保留的关键字(见2.1.2小节)。C语言对大小写是敏感的,程序中不要出现仅靠大小写区分的标识符,如:intx,X;/*变量x与X容易混淆*/,2.1.1标识符,标识符应当直观且可以拼读,让别人看了就能了解其用途。标识符最好采用英文单词或其组合,不要太复杂,且用词要准确,便于记忆和阅读。切忌使用汉语拼音来命名。如:标识符的长度应当符合“min-length”就是错误的,会导致程序编译。因为double是关键字,不能做变量名。下表列出了C语言中的所有关键字。,2.1.2关键字,2.2常量,2.2.1什么是常量2.2.2数值常量2.2.3字符常量2.2.4字符串常量2.2.5符号常量,2.2常量,其实我们已经使用过常量了,只是我们不知道,在前面的程序中输出过的“HelloWorld!”就是一个常量,是一个字符串常量,从这我们不难看出,常量的值在程序运行中是不能改变的。,2.2.1什么是常量,在程序中,有些数据是不需要改变的,也是不能改变的,因此,我们把这些不能改变的固定值称之为常量。到底常量长什么样呢?我们就来看几条语句吧。01inta=1;02charss=a03printf(“Hellon”);在此,我们看一下“1”,“a”,“Hello”,这些在程序执行中都是不能改变的,它们都是常量。,2.2.1什么是常量,细心一些的读者可能会问:这些常量怎么看上去不一样呢?确实,就像布可以分为丝绸、棉布、麻布各种类型一样,常量也是有种类之分的。,2.2.1什么是常量,【范例2-1】显示不同类型的常量的值01#include02intmain(void)/*程序的入口*/0304printf(+125n);/*输出+125并换行*/05printf(-50n);/*输出-50并换行*/06printf(an);/*输出a并换行*/07printf(Hellon);/*输出Hello并换行*/08return0;/*程序无错误安全退出*/在本例中,有四个常量,分别是数值+125,-50,字符“a”和字符串“Hello”。这些就是常量的不同类型的值。这里,我们可以把常量分为数值常量、字符常量、字符串常量和符号常量(后面我们会具体介绍)。,2.2.2数值常量,上例中的+125,-50都是数值常量,通常表示的是数字,就像数字可以分为整型,实型一样,数值常量也可以分为整型常量和实型常量。数字有正负之分,数值常量的值当然也有正负。在上面的例子中+125带的是“+”,当然也可以不带,而-50前的“-”是必须要带的。,2.2.2数值常量,【范例2-2】在命令行中输出数值常量。01#include02intmain(void)0304printf(123n);/*输出123*/05printf(45.31n);/*输出45.31*/06printf(-78n);/*输出-78*/07printf(-12.8975n);/*输出-12.8975*/08return0;第4行输出一个正整数123,第5行输出正实数45.31,第6行输出负整数-78,第7行输出负实数-12.8975,这些都是数值常量。,2.2.2数值常量,在C语言中,数值常量如果大到一定得程度,程序就会出现错误,无法正常运行,这是为什么?原来,C程序中的量,包括我们现在学的常量,也包括在后面要学到的变量,在计算机中都要放在一个空间里,这个空间就是常说的内存。你可以把它们想成是一个个规格定好了的盒子,这些盒子的大小是有限的,不能放无穷大的数据。那到底能放多大?学到数据类型就会有所认识。在这里只需记住,整数也好,小数也好,不是你想放多大就能放多大的。不过你不用担心,你能碰到的数不管多大都能想办法放进程序中去,具体的办法你慢慢就会学会的。,2.2.3字符常量,在C语言中,字符常量就是指单引号里的单个字符,像上例中的“a”,这是一般情况,还有一种特殊情况,比如:“n”,“a”,像这样的字符常量就是我们所说的转义字符。这种字符是以反斜杠()开头,后面跟一个字符或一个八进制或十六进制数,表示的不是单引号里面的值,而是“转义”,即转化为具体的含义。下面是C语言中常见的转义字符表:,2.2.3字符常量,2.2.3字符常量,注意:在C语言中,3和3的含义是不一样的,一个是数值,可运算,一个是字符,一个符号而已。而a和A同样也是不一样的,字符区分大小写。,2.2.3字符常量,【范例2-3】比较字符常量的含义。01#include02intmain(void)0304printf(a,An);/*输出a,A并换行*/05printf(123x20x20n);/*输出123、空格、单引号、空格和双引号,最后换行*/06return0;范例中不仅用到数值常量,比如123,字符常量,比如a,A等,还用到转义字符,如n,、x20等。第4行首先输出一个小写字母“a”,然后又输出一个大写字母“A”,接着输出一个转义字符“n”,相当于输出一个换行符。第5行先输出一个数值常量123,接着输出一个转义字符“x20”,相当于输出1个空格,接着输出转义字符“”,相当于输出1个单引号,接下来又输出空格,双引号,最后输出换行符。,2.2.4字符串常量,在前面的HelloWorld程序中,程序中输出的“Hello,World”就是字符串常量,用双引号括起来的形式显示的,其值就是双引号里面的字符串。所以字符串常量可以定义为在一对双引号里的字符序列或转义字符序列。比如“”、“”、“a”、“abc”、“abcn”等等。我们把称之为空串,即一个不包含任意字符的字符串,而我们称之为空格串,是包含一个空格字符的字符串。二者不能等同。,2.2.4字符串常量,比较a和a的不同。书写形式不能:字符串常量用双引号,字符常量用单引号。存储空间不同:在内存中,字符常量只占用一个存储空间,而字符串存储时必须有占用一个存储空间的结束标记o,所以,a占用一个,而a占用两个。二者的操作功能也不相同:例如,字符常量可进行加减运算,字符串常量不能。,2.2.5符号常量,当某个常量引用起来比较复杂而又经常要被用到时,可以将该常量定义为符号常量,也就是分配一个符号给这个常量,在以后的引用中,这个符号就代表了实际的常量。这种用一个指定的名字代表一个常量称之为符号常量,即带名字的常量。在C语言中允许将程序中的常量定义为一个标识符,这个标识符称为符号常量。符号常量必须在使用前先定义,定义的格式为:#define其中,通常使用大写字母表示,可以是数值常量,也可以是字符常量。,2.2.5符号常量,一般情况下,符号常量定义命令要放在主函数main()之前。如:#definePI3.14159表示是用符号PI代替3.14159。在编译之前,系统会自动把所有的PI替换成3.14159,也就是说编译运行时系统中只有3.14159而没有符号。,2.2.5符号常量,【范例2-4】使用符号常量计算圆的周长和面积。01#definePI3.14159/*定义符号常量PI的值为3.14159*/02#include03intmain(void)0405floatr;06printf(请输入圆的半径:);/*提示输入圆的半径*/07scanf(%f,11,2.2.5符号常量,由于我们在程序前面定义了符号常量PI的值为3.14159,所以经过系统预处理,程序在编译之前已经将“2*PI*r”变为“2*3.14159*r”,将“PI*r*r”变为“3.14159*r*r”,然后经过计算并输出。代码第1行的#define就是预处理命令。程序在编译之前首先要对这些命令进行一番处理,在这里就是用真正的常量值取代符号。,2.2.5符号常量,有的人可能会问,那既然在编译时都已经处理成常量,为什么还要定义符号常量。原因有两个。易于输入,易于理解。在程序中输入PI,我们可以清楚地与数学公式对应,且每次输入时相应的字符数少一些。便于修改。此处如果想提高计算精度,如把PI的值改为3.14159,我们只需修改预处理中的常量值,那么程序中不管你用到多少次,都会自动跟着修改。,2.2.5符号常量,提示:符号常量不同于变量,它的值在其作用域内不能改变,也不能被赋值。习惯上,符号常量名用大写英文标识符,而变量名用小写英文标识符,以示区别。定义符号常量的目的是为了提高程序的可读性,便于程序的调试和修改。因此在定义符号常量名时,应尽量使其表达它所代表的常量的含义。对程序中用双引号括起来的字符串,即使与符号一样,预处理时也不做替换。,2.3变量,2.3.1什么是变量2.3.2变量的声明2.3.3变量的定义2.3.4变量的赋值和初始化,2.3.1什么是变量,变量用于存储程序中可以改变的数据。其实变量就像一个存放东西的抽屉,知道了抽屉的名字(变量名),也就能找到抽屉的位置(变量的存储单元)以及抽屉里的东西(变量的值)等。当然,抽屉里存放的东西也是可以改变的,也就是说,变量里的值也是可以变化的。我们可以总结出变量的4个基本属性:变量名:一个符合规则的标识符。变量类型:C语言中的数据类型或者是自定义的数据类型。变量位置:数据的存储空间位置。变量值:数据存储空间内存放的值。程序编译时会给每个变量分配存储空间和位置,程序读取数据的过程其实就是根据变量名查找内存中相应的存储空间,从其内取值的过程。,2.3.1什么是变量,【范例2-5】变量的简单输出。01#include02voidmain(void)0304inti=10;/*定义一个变量i并赋初值*/05charppt=a;/*定义一个char类型的变量ppt并赋初值*/06printf(第1次输出i=%dn,i);/*输出变量i的值*/07i=20;/*给变量i赋值*/08printf(第2次输出i=%dn,i);/*输出变量i的值*/09printf(第1次输出ppt=%cn,ppt);/*输出变量ppt的值*/10ppt=b;/*给变量ppt赋值*/11printf(第2次输出ppt=%cn,ppt);/*输出变量ppt的值*/12return0;变量在使用前必须先进行声明或定义,在这个程序中,变量i和ppt就是先进行的定义。而且变量i和ppt都进行了两次赋值,可见,变量在程序运行中是可以改变它的值的。第5行和第7行是给变量赋初值的两种方式,是变量的初始化。,2.3.2变量的声明,在大多数语言中,在使用一个变量之前都要对这个变量进行声明,C语言同样如此。那么,什么是变量的声明呢?有什么作用呢?变量的声明其实就是在程序运行前,告诉编译器程序使用的变量,以及与这些变量相关的属性,包括,变量的名称,类型和长度等。这样,在程序运行前,编辑器就可以知道怎么样给变量分配内存空间,可以优化程序。变量的声明语句的形式如下:变量类型名变量名,2.3.2变量的声明,变量的声明包括变量类型名和变量名两个部分。我们在看下面的例子:01intnum02doublearea03charppt其中,int、double和char是变量类型名,num、area和ppt是变量名。其实,变量类型名也就是数据类型的一种,也就是变量num是int类型,area是double类型,ppt是char类型。变量类型名是C语言自带的数据类型和用户自定义的数据类型。C语言自带的数据类型包括:整型、字符型、浮点型、枚举型和指针类型等。,2.3.2变量的声明,变量名其实就是一个标识符,当然,标识符的命名规则在此处同样适用。除此之外,变量命名的时候还需要注意:变量名区分大小写,变量Num和num是两个不同的变量。变量的命名最好与实际应用有关联,例如:num一般表示数量,area就是表示面积等。变量的命名必须在变量使用之前。,2.3.2变量的声明,【范例2-6】验证未声明的标识符不可用。01#include02intmain(void)0304printf(outputundeclaredvarnum=%dn,num);05return0;在此例子中,没有对标识符num进行声明就直接引用,编译器不知道它是什么,所以,调试时,编译器会报错。,2.3.2变量的声明,【拓展训练】在第3句和第4句之间插入语句:01intnum=10;或者:01intnum;02num=10;检验一下程序能否运行,是否还报错。,2.3.3变量的定义,我们首先来下面的2行代码有什么不同?intiinti;大家应该已经看到,这两个例子的不同之处只在于第二句多了一个分号,这个看似简单的一个分号所带来的变化可是不可忽视的,第一句是变量的声明语句,而第二句则是定义语句。变量的定义比变量的声明多了一个分号,但是声明只是告诉编辑器关于变量的属性,而定义除此之外还给变量分配了所需的内存空间。,2.3.3变量的定义,变量定义的形式与声明基本一致:变量类型名变量名;比较下面语句的不同:inti;inti,j,k;inti,j,k=10;inti=10,j=20,k=20;第1句是定义了一个变量i,是最基本的变量定义语句,第2句是定义了3个变量,都是int类型的,这是定义语句的变形,等价于:inti;intj;intk;第3句是定义了3个int类型的变量,并给k赋了初值,等价于:inti;intj;intk;k=10;第4句是定义了3个int类型的变量,并都给它们赋了初值。,2.3.3变量的定义,形式不同:定义比声明多了一个分号,就是一个完整的语句。其作用的时间不同:声明是在程序的编译期起作用,而定义在程序的编译期起声明作用,在程序的运行期起为变量分配内存的作用。,2.3.4变量的赋值和初始化,既然变量的值可以在程序中随时改变,那么,变量必然可以多次赋值。我们把第一次的赋值行为称为变量的初始化。也可以这么说,变量的初始化是赋值的特殊形式。那么,我们首先来看赋值。,2.3.4变量的赋值和初始化,我们先来看赋值的例子:01inti;02doublef;03chara;04i=10;05f=3.4;06a=b;在上面的语句中,第13行是变量的定义,46行是对变量的赋值。将10赋给了int类型的变量i;3.4赋给了double类型的变量f;字符b赋给了char类型的变量a。46行都是使用的赋值表达式。,2.3.4变量的赋值和初始化,对变量赋值最主要的方式是使用赋值表达式,其形式如下:变量名=值;那么,变量的初始化语句的形式为:变量类型名变量名=初始值;例如:01inti=10;02intj=i;03doublef=3.4+4.3;04chara=b;其中,我们对变量类型名和变量名比较了解,那么就来看“=”和初始值;“=”为赋值操作符,其作用是将赋值操作符右边的值赋给操作符左边的变量。赋值操作符左边是变量,右边是初始值。其中,初始值可以是一个常量,如第1行的10和第4行的字符b;可以是一个变量,如第2行的i,意义是将变量i的值赋给变量j;还可以是一个其他表达式的值,如第3行的3.4+4.3。那么,变量i的值是10,变量j的值也是10,变量f的值是7.7,变量a的值是字符b。,2.3.4变量的赋值和初始化,赋值语句不仅可以给一个变量赋值,也可以给多个变量赋值,形式如下:类型变量名变量名1=初始值,变量名2=初始值;例如:inti=10,j=20,k=30;上面代码分别给变量i赋了10,变量j=20,变量k=30;相当于语句:01inti,j,k;02i=10;03j=20;04k=30;,2.3.4变量的赋值和初始化,注意:只用变量的数据类型名相同时才可以在一个语句里进行初始化。下面的语句相同吗?01inti=10,j=10,k=10;02inti,j,k;i=j=k=1003inti,j,k=10;这几条语句看上去类似,但是却有不同,第1行的作用和第2行相同,都是定义i,j,k三个变量,并给它们初始化。但是第3行的功能则不同,它同样定义了i,j,k三个变量,但只给k赋了初值10。,2.4综合应用计算学生平均成绩,【范例2-7】输入不确定个数的学生的成绩,输入负数时程序结束。根据输入的数据计算全班的平均成绩,并统计90分以上的学生个数,8090分的学生个数,7080分的学生个数,6070分的学生个数,不及格的学生个数。,2.4综合应用计算学生平均成绩,提示:我们在做累加和累乘运算时,运算结果可能会很大,如果定义成整型变量可能会超出范围,所以如果对结果的范围无法保证不超出整型数的范围,最好定义成双精度型或长整型。如本例的sum变量。求平均时,如果是两整型变量相除,商自动为整型,如6/4结果为1。为了保证精度,本例把sum和ave变量都定义成float型。,2.6跟我上机,要求输入两个整数a和b,求二者的和sum和平均数avg(float类型)。提示:求和的公式是:sum=a+b;求平均数的公式是:avg=sum/2,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!