Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 编程的艺术 > C/C++
C/C++ The C++ Programming Language.
回复
 
主题工具 显示模式
旧 2012-05-21, 13:09   #1
lili123
普通会员
 
注册日期: 2012-05-21
帖子: 37
声望力: 13
lili123 正向着好的方向发展
默认 回复: c语言入门很简单

2.2.2 数据的表示
在前面描述计算税后工资的例子中,要告诉计算机:工资是3000元、税率5%,计算它的税后工资。该怎么告诉计算机呢?而且,要确定告诉计算机工资是3000而不是2999.99,税率是5%而不是5‰,这就涉及到数据在C语言中的表示了。
为了数据能在C语言中容易表示,数据被分为了好多的类!每一类的数据被叫做属于同一种数据类型。对于每一种运算,不同的数据类型计算出来的结果都是不一样的。这就好比同样的化学纤维做出来的衣服类型不同使用就不同了。男士的西服让女士穿着就显着别扭,女士的裙子要是被男士穿着就要闹出尴尬了,更甚者总不能把裤子穿在头上吧!所以,得分清楚数据的数据类型然后才能正确的使用它们。
2.2.3 数据类型面面观——精度和范围
在了解C语言数据类型之前,先了解两个概念——精度和范围,这是讨论数据类型的重点。
1.精度
精度是用来说明可以表示数据的最小的粒度,也就是可以表示的精细程度。讲个笑话,一个人过收费站,过磅整车重4.29吨。然后司机上了一趟厕所,又过收费站,过磅,整车重4.20吨。一趟厕所下来,减少了0.09吨,共90公斤。电子称只能称到0.1吨,所以司机上不上厕所对于称重没有影响,因为电子称的精度不够。这个故事告诉我们不必憋尿来增加车重,没必要,呵呵…
2.范围
范围是用来说明可以表示的数据的最大尺度,也就是可以表示的广度。不同数据表示的要使用不同的广度,不然就会出现用游标卡尺去量万里长城的笑话了。游标卡尺虽然精度很细,但是范围远远不够,估计把长城量完也至少也得好几年吧。还不如用卫星直接去测呢,瞬间搞定!
2.2.4 C语言基本数据类型
精度和范围(也就是广度)之间得有个权衡,很多时候有精度没有广度的,或者是有广度没精度的。就像游标卡尺和卫星测量一样,需要我们选择合适。在C语言中,有三种基本的数据类型供我们选择,它们有着不同的精度和广度,可以根据自己的需要选择合适的。这三种数据类型分别是整形、浮点型、字符型,它们可谓是C语言数据的三大变形金刚。
1.整型
整型在C语言中是用来表示整数的,主要是用符号int表示。为了满足不同的需要,整型按照可表示的范围分为以下几类:整型(或者叫一般整型)、短整型、长整型。短整型用来表示较小范围的数,长整型用来表示较大范围的数。这就好像你要装水得有瓢、或有水桶、或又有缸一样,都是用来装水,但是分别用于不同的用途。对于不同的整型,在C语言中使用不同的符号表示:
 整型:使用int关键字表示;
 短整型:使用short int关键字表示,简写为short;
 长整型:使用long int关键字表示,简写为long,可以省略int不写。
整数分为正整数、负整数和零。有的时候需要表示整数的既可以是正的也可以是负的,有的时候只需要表示正的整数。就像我们表示人民币的时候用的都是正数或者零元,表示温度的时候既可以是负一度,也可以是正一度。
为了满足上面的需求,C语言中的整型又可以分为有符号的和无符号的。有符号整型可以表示正整数、零和负整数,有符号使用signed符号表示。无符号整型只可以表示正整数和零,无符号使用unsigned符号表示。
因此,三种整型分别和有符号、无符号组合,因此整型总共有六种:
 有符号整型:简称整型,用signed int关键字表示,简写为int;
 有符号短整型:简称短整型,用signed short int关键字表示,简写为short int或者short;
 有符号长整型:简称长整型,用signed long int关键字表示,简写为long int或者long;
 无符号整型:用unsigned int关键字表示;
 无符号短整型:用unsigned short int关键字表示,简写为unsigend short;
 无符号长整型:用unsigned long int关键字表示,简写为unsigned long。
我们列表来表示每一种整型的范围和适合表示的数,如表2.2所示。

从表2.2中可以看出长整型和整型是一样的,其实对于不同的系统,这个范围是不一样的,长整型会比整型的范围大,但是现在一般系统都是把它们定义为一样。
lili123 当前离线   回复时引用此帖
旧 2012-05-21, 13:10   #2
lili123
普通会员
 
注册日期: 2012-05-21
帖子: 37
声望力: 13
lili123 正向着好的方向发展
默认 回复: c语言入门很简单

2.浮点型
浮点型在C语言中主要用来表示小数,分为单精度浮点类型和双精度浮点类型。它们的区别仅仅是表示的精度不一样,双精度的表示精度会更细点,并且表示的范围也会更大。单精度浮点类型使用float关键字表示;双精度浮点类型使用double float表示,简写为double。浮点型没有有符号和无符号的区别,都是有符号的。下面做表加以比较,如表2.3所示。

3.字符型
字符型在C语言来表示各种字符,如英文字母、标点、数字之类。它只是一种符号表示,就像我们用‘A’,一撇、一拉、一横来表示大写英文字母A。像我们用‘1’,一个竖线来表示数字;用‘,’,类似于豆芽的东西表示语文中的逗号分隔符。
所以,从上面几种数据类型的表示,可以使用整数来表示3000元的工资,用浮点型来表示税率5%。
lili123 当前离线   回复时引用此帖
旧 2012-05-21, 13:10   #3
lili123
普通会员
 
注册日期: 2012-05-21
帖子: 37
声望力: 13
lili123 正向着好的方向发展
默认 回复: c语言入门很简单

2.2.5 数据的变与不变——变量、常量
当了解数据后,就会发现身边到处都是数据。万事万物都可以用数据表示。就像黑客帝国酷哥尼奥看待自己所在的虚拟世界一样:神马都是数据。我们老祖宗更超前:“万变不离其宗”、“道生一、一生二、二生三、三生万物”。万物已经变成“一、二、三”了。我们没有那么高深,只能看到数据是变与不变的。
例如,当需要计算圆的面积时,事先,圆的半径是不知道的。半径是变化的,计算出来的圆的面积也是随着圆的半径而不断变化的。然而,计算过程中有一个量是一直不变的,那就是圆周率3.1415926(为了便于大家阅读,本人这里省略后面圆周率的后面无数位。有兴趣的读者,可以自己手工计算)。在C语言中把这些计算中变化的量叫做“变量”,把这些不变的量叫做“常量”。
1.如何区分变量和常量
为了区分常量和变量,再来看看我们那个发工资的例子:工资是3000、税率是5%,问税后可以拿到多少薪水?在计算过程中,工资是不变的(3000),是一个常量。税率5%也是不变的,也是一个常量。计算结果虽然我们还不知道,但是可以肯定它也是不变的,也是一个常量。
有人会问,在这个例子中就看不到变量了吗?我们把这个例子改改,或者说把计算的问题改改,就会出现变量了。
假如,你是公司的会计,老板要发工资了,要你计算出该给每个人发多少薪水。这时,你得考虑了,每个人的税前工资都是不一样的,按照国家规定,处于每个工资段的税率也是不一样的。这样,要计算每个员工的税后工资时,税前工资、税率都是变化的了,如图2.4所示
在图2.4中,我们看到有三个员工,他们的工资分别是3000、2000和3000,税率为5%。我们可以看出税前工资是变化的,要给每个人发工资,就得用一个变量来表示税前工资了。税率不变,我们就用常量表示吧!
这个时候,就出现变量了。同样计算,对于不同的工资和不同的税率,结果也是不同的。所以在C语言编程是,就得用变量来处理。
2.回到C语言
从上面的描述,可以看出这样一条准则:在要进行C语言编程先得确定出,哪些数据是要作为变量处理,哪些数据是要作为常量处理的。判断的依据就是在用C语言处理时,这个数据是一直变化的还是一直不变的,这就是我们区分变量和常量的准则
lili123 当前离线   回复时引用此帖
旧 2012-05-21, 13:11   #4
lili123
普通会员
 
注册日期: 2012-05-21
帖子: 37
声望力: 13
lili123 正向着好的方向发展
默认 回复: c语言入门很简单

2.3 使用变量和常量
在数据的世界中,数据被分为一成不变的常量和一直变化的变量。这样划分以后,使计算机操作数据也变得方便多了,只要计算机能操作变量和常量,那么它就可以操作任何数据了,这就叫做真正的提纲挈领。这一章就来看看在C语言中如何使用变量和常量!
2.3.1 变量的使用
在C语言中,要使用变量就得先对变量声明和定义。变量的声明是说明变量的类型的,而变量定义是创建要求的变量。通俗地说,声明变量就是告诉计算机“我要的是浮点型的变量,记住,一定是浮点型的!”;变量定义就是告诉计算机“我要的是浮点型的变量,现在我就要了!”,如图2.5所示。两者差别在于,声明变量的时候,只是要求,计算机并没有创建,而只有定义的时候才会创建变量。
在C语言中,变量的声明和定义是一体的。其语法形式如下:
变量类型 变量名;
其中,变量类型是要求计算机给的变量的类型;变量名是我们给问计算机要的变量取一个名字,我们以后就可以用这个名,来“召唤”计算机给我们的变量了。
好了,有人要问了,就像你说的,我要计算圆的面积,半径事先不知道,按照变量来,我也事先确定了半径是小数。我需要一个浮点型的变量来表示半径,在C语言中,浮点型的变量该怎么表示呢?
要计算圆的面积定义的半径可以表示为:
float radius;
其中,float是变量的类型名称,radius是变量的名字。像上面的表示做了两件事情,半径变量的声明和定义。即告诉计算机,“给我一个浮点型的变量,记住一定要浮点型的”,又告诉计算机,“给我一个浮点型的变量,现在就给我”!
lili123 当前离线   回复时引用此帖
旧 2012-05-21, 13:14   #5
lili123
普通会员
 
注册日期: 2012-05-21
帖子: 37
声望力: 13
lili123 正向着好的方向发展
默认 回复: c语言入门很简单

2.3.2 命名的方式
在上一节,进行变量的定义和声明的时候,使用了两个概念:类型名和变量名,其实它们都是C语言中的标识符。标识符就是用来表示C语言中的各种东西的符号,如用来表示类型、变量等等。每一个标识符,是类型名也罢,是变量名也罢,都是一个名字。只要名字都要遵循一定的命名方式。命名方式涉及到两方面的内容:构成元素和构成方式。
构成元素就是C语言标识符的组成符号,构成方式就是C语言标识符的命名规则。
1.构成元素——符号
一门语言是由不同的符号组成。例如,汉语是由不同的汉字和标点符号构成。同样,C语言也是一门语言,组成它的符号有三类:命名符号、分隔计算符号、数值符号。这样表述简洁,如表2.4所示。
 命名符号主要用于组成标识符,如英文字母和阿拉伯数字。给孩子取名字的时候,姓名都是汉字,而且姓得是百家姓。这里的汉字就类似我们的命名符号。
 分隔符是用于C语言分块和计算的。例如,大括号用于主要分块,小括号主要用于数学计算等诸如此类。
 数值符号在C语言中是表示数值。
这节只关注第一类用于命名标识符的符号,其它两类我们暂且不用关注。
lili123 当前离线   回复时引用此帖
旧 2012-05-21, 13:15   #6
lili123
普通会员
 
注册日期: 2012-05-21
帖子: 37
声望力: 13
lili123 正向着好的方向发展
默认 回复: c语言入门很简单

2.构成方式
就像我们的姓名一样,C语言的标识符构成也有规范标准。在C语言中,标识符由首部和其他部分构成,如图2.6所示。首部就相当于我们的姓,其他就相当于我们的名。

 首部(姓)就是变量名的第一个组成元素。C语言要求首部只能使用大写或者小写的英文字母和下划线。
 其他(名)是变量名中除过首部以外的部分。C语言对此没有要求,只要是大小写的英文字母、数字和下划线就可以。
为了理解标识符各个部分的差异。我们举个例子,在给孩子取名字的时候,姓名都是必须是汉字,姓还必须是百家姓里的一个。标识符也是如此,首部和其他都是命名符号,首部还一定不能是数字。
按照C语言对标识符名称的规范,像我们之前见到的,浮点数据类型“float”和变量名“radius”都是合格的标识符。
lili123 当前离线   回复时引用此帖
旧 2012-05-21, 13:20   #7
lili123
普通会员
 
注册日期: 2012-05-21
帖子: 37
声望力: 13
lili123 正向着好的方向发展
默认 回复: c语言入门很简单

2.3.3 关键字
关键字就是C语言系统自己保留的标识符。就像我们生活中的“警察”、“医生”之类的词语,一旦有人冒用,就会受到严厉的惩罚。C语言中的关键字如表2.2所示。
http://www.tu265.com/di-4d1c0096516b...1c85b01e5a.png
2.3.4 常量的使用
常量用来表示各种不变的东西。在C语言中,提供了好些常量的表示方法,先来学习其中最简单的两种。
1.直接表示
这种方法最简单,就是直接用数字、字母来表示就可以了。
像发工资的那个例子,税前工资3000,税率为5%,要求计算税后应该拿多少的薪水?其中数字常量有工资3000和税率5%,我们就可以直接使用整型常量3000和浮点型常量0.05来表示。C语言不能直接使用百分数,没有这样的分数类型,所以用浮点型0.05来表示5%。
2.const变量表示
const变量也是一个变量,只不过是一个很特殊的变量。它的特殊之处在于不用来表示变量,而只用来表示常量。
const变量就是告诉计算机,“我要一个变量,而且我往变量里放了东西以后就不准拿出来再放其它东西了,这个变量被我这个东西永久性独占!”是不是太霸道了?!因此,const变量拥有了常量的一切特性,用来表示常量,人们也不把它叫变量了,干脆直接叫常量。
C语言中const常量使用const关键字+变量定定义的形式,具体如下:
const 变量类型名 变量名=变量要赋的值;
工资3000和税率5%的const常量表示形式如下所示:
const int salary = 3000;
const float tax_rate = 0.5;
通过这两种方式,就可以告诉计算机一个在程序中保留一个一直不变的常量了。
2.4 小结
在这一章中主要了解了几个计算机中的概念:数据、变量和常量,以及进行计算机编程的作用。本章的重点就是理解这几个概念的含义,难点是如何进行变量的命名、定义,还有就是常量的使用形式。在下一章中将继续深入,看看C语言中的简单数学运算,看看这些运算是如何使用变量和常量来操作数据的。
2.5 习题
【题目1】“地球”是不是一个数据?
【分析】要成为一个数据的话,必须满足三个条件:首先,数据是事物元素;其次,数据必须包含有用信息;最后,数据应该是个符号。“地球”要想成为一个数据,就得满足这三个条件,在描述银河系的时候,“地球”算得上是一个事物元素。地球是银河系的一员,具有一定有用的信息。我们可以在计算机中使用汉字符号“地球”来表示。所以,对于描述银河系这件事情上来说,“地球”是一个数据。但是,对于其他事物上,地球就不见得是数据了!

【题目2】从精度上来说,浮点型的精度比整型精确,从表示范围上来说,浮点型表示的范围比整型表示的范围大。那么,为什么还需要整型呢?
【分析】“尺有所长,寸有所短!”,使用雕刻刀去森林里砍木材,不是不可以,但是总觉得很别扭,有的整数浮点型是表示不出来的!每种数据类型都有优缺的,有的时候可以互相代替,但是有的时候就非得某种类型不可了。至于这些特殊时候,深入理解了各种数据类型之后,自然就会发现的。

【题目3】假设,要在程序中表示一个班学生的身高信息,你是打算使用常量还是变量呢?
【分析】判断该使用常量还是该使用变量的依据是在计算过程中,要表示的数据是一直变化还是一成不变的。我们要表示一个班学生的身高信息,从整个班级来看,这是一个变化的数据,得使用变量来表示。从具体某个学生上来看,这个数据是一成不变的,得使用常量来表示!所以,要使用变量还是要使用常量看你针对的是什么具体的事物了。就像身高这个数据,如果你想一下把全班的身高在程序中都表示了,就使用变量吧,如果你只是表示某个学生的身高,常量就够了!

【题目4】在C语言中,能不能使用5%、1/4、6‰这样的数字表示作为常量呢?
【分析】C语言有三种基本数据类型:整型、浮点型和字符型。整型是用来表示整数的,浮点型是用来表示小数的,字符型是用来表示字母或者符号的。5%、1/4、6‰准确的来说都是分数,虽然分数可以化成小数,但是它们毕竟不是小数,所以不可以使用浮点型来表示,更不用说是整型和字符型了。所以,既然5%、1/4、6‰不属于任何类型,那么,它们就不可以作为常量出现在C语言的代码中。

【题目5】声明定义一个变量,表示6月8号,街道上的人数。
【分析】街道上的人数,是一个整数,而且数目估计会比较大,因为这天天气不错,风和日丽!另外,人数总不可能是负的吧?!因此,就可以使用unsigned long int类型来表示人数了,这个类型可以表示的整数确实大的可以,绝对超过64亿了,不会全世界的人都集中在这条街吧?!
C语言中,要给变量命名得用英文字母和数字,6月8号的人数,翻译一下,有这些单词和数字6、8、month、day、person和number。另外,C语言规定数字不能作为变量名的首部,我们可以写出这样的名字person_number_6_month_8_day,这个变量名是符合C语言要求的,就是太长了,再压缩一下,会比较好看点,persons_6_8。
【核心代码】
unsigned long int persons_6_8;

【题目6】要定义一个类型为char型,名字为案例的变量,该怎么给它取名字呢?
【分析】要给变量取名字,就得遵循C语言变量命名规范了!首先组成必须是字母、数字和下划线,案例的单词是case,完全符合C语言命名规范,而且首部不是数字,是不是我们就可以使用它来给这个变量命名了?不行,case是C语言中的一个关键字,C语言规定关键字是不能作为变量名的!那该怎么办呢?很简单,只要和关键字case不一样就可以了,如Case、CASE、case_、_case、_case_、case1都是可以的。
【核心代码】
char Case;
lili123 当前离线   回复时引用此帖
旧 2012-10-19, 12:34   #8
未注册
游客
 
帖子: n/a
箭头 回复: c语言入门很简单

爱好C语言的加Q1543877597或群141783677,大家一起讨论讨论~
  回复时引用此帖
旧 2013-03-10, 08:03   #9
wayne1757
初级会员
 
wayne1757 的头像
 
注册日期: 2012-12-12
年龄: 37
帖子: 6
声望力: 0
wayne1757 正向着好的方向发展
默认 回复: c语言入门很简单

学习中!!!很有用!!!
wayne1757 当前离线   回复时引用此帖
旧 2017-09-06, 17:55   #10
哗哗哗哗
初级会员
 
注册日期: 2017-09-06
年龄: 29
帖子: 1
声望力: 0
哗哗哗哗 正向着好的方向发展
微笑 回复: c语言入门很简单

写的很清楚,过两天考二级了,蹭点幸运值
哗哗哗哗 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 03:15


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.