




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第02章编程初步,现在读者一定很渴望编写程序,让计算机与外界进行实际的交互。我们不希望程序只能做打字员的工作,显示包含在程序代码中的固定信息。的确,编程的内涵远不止此。理想情况下,我们应能从键盘上输入数据,让程序把它们存储在某个地方,这会让程序更具多样性。程序可以访问和处理这些数据,而且每次执行时,都可以处理不同的数据值。每次运行程序时输入不同的信息正是整个编程业的关键。在程序中存储数据项的地方是可以变化的,所以叫做变量(variable),而这正是本章的主题,2.1计算机的内存,首先看看计算机如何存储程序要处理的数据。为此,就要了解计算机的内存,在开始编写第一个程序之前,先简要介绍计算机的内存。计算机执行程序时,组成程序的指令和程序所操作的数据都必须存储到某个地方。这个地方就是机器的内存,也称为主内存(mainmemory),或随机访问存储器(RandomAccessMemory,RAM)。,2.2什么是变量,变量是计算机里一块特定的内存,它是由一个或多个连续的字节所组成。每个变量都有一个名称,可以用该名称表示内存的这个位置,以提取它包含的数据或存储一个新数值。,2.3计算机绘图系统的硬件组成,变量有几种不同的类型,每种变量都用于存储特定类型的数据。首先看看用于存储数值的变量。在程序里存放数字的方法很多,下面从最简单的方法开始。整数变量变量的命名变量的使用变量的初始化算术语句,2.3.1整数变量,首先是存储整数的变量。整数是没有小数点的数字。例如:110,999,000,000-1这些数值是整数,但这对程序而言并不完全正确。整数是不能包含逗号的,所以第二个值在程序里应该写成10999000000。,2.3.2变量的命名,给变量指定的名称一般称为变量名。变量的命名是很有弹性的。它可以是一个或多个大写或小写字母、数字和下划线(_)(有时下划线也算做字母)。下面是一些正确的变量名:RadiusdiameterAuntie_MayKnotted_WoolD678,2.3.3变量的使用,前面介绍了如何声明及命名变量,但这和在第一章学到的知识相比并没有太多用处。下面编写另一个程序,在产生输出前使用变量的值。,2.3.4变量的初始化,在上面的例子,用下面的语句声明每个变量:intCats;/*Thenumberofcatsaspets*/用下面的语句设定变量Cats的值:Cats=2;将变量Cats的值设为2。,2.3.5算术语句,上面的程序是第一个真正做了些事情的程序。它非常简单,仅仅相加了几个数字,但这是非常重要的一步。它是运用算术语句进行运算的一个基本例子。下面介绍一些更复杂的计算。,2.4变量与内存,前面介绍了整数变量,但未考虑过它们占用多少内存空间。每次声明变量时,计算机都会给它分配一块足够大的内存空间,来保存该类型的变量。相同类型的不同变量总是占据相同大小的内存(字节数)。但不同类型的变量需要分配的内存空间就不一样了。,2.5整数变量类型,有5种基本的变量类型可以声明为存储带符号的整数值(无符号的整数值参见下一节)。每种类型都用不同的关键字或关键字组合来指定。无符号的整数类型使用整数类型指定整数常量,2.5.1无符号的整数类型,对于每个存储带符号整数的类型,都有一个对应的类型来存储无符号的整数,它们占用的内存空间与无符号类型相同。每个无符号的类型名称都与带符号的类型名称相同,但要在前面加上关键字unsigned。,2.5.2使用整数类型,在大多数情况下,int或long类型的变量就能满足我们的需求,偶尔需要unsignedint或unsignedlong。下面是声明这些类型的例子:unsignedintcount=10;unsignedlonginchesPerMile=63360UL;intbalance=-500;,2.5.3指定整数常量,整数变量有不同的类型,整数常量也有不同的类型。例如,如果将整数写成100,它的类型就是int。如果要确保它是long类型,就必须在这个数值的后面加上一个大写L或小写l。所以,long类型的整数100应写为100L。虽然写为100l也是合法的,但应尽量避免,因为小写字母l与数字1很难辨别。,2.6浮点数,浮点变量用来存储浮点数。浮点数包含的值带小数点,也可以表示分数和整数。下面是浮点数的例子:1.60.000087655.899由于浮点数的表示方式,它的位数是固定的。然而它的取值范围要比整数大得多。浮点数通常表示为一个小数值乘以10的次方。,2.7浮点数变量,浮点数变量的声明方式和整数变量类似。只需给浮点数类型使用对应的关键字即可:floatRadius;doubleBiggest;如果需要存储至多有7位精确值的数(范围从10-38到10+38),就应需要使用float类型的变量。类型float的值称为单精度浮点数。从表2-6中得知,它占用4个字节。使用类型double的变量可以存储双精度浮点数。类型double的变量占用8个字节,有15位精确值,范围从10-308到10+308。它足以满足大多数的需求。但某些特殊的应用程序需要更精确、更大的范围,此时可以使用longdouble。,2.8使用浮点数完成除法运算,如前所见,除法运算使用的是整数操作数时,通常会得到整数结果。除非除法运算的左操作数刚好是右操作数的整数倍,否则其结果是不正确的。当然,在将饼干分给孩子们的例子中,整数除法运算的方式是没问题的,但将10尺长的厚板均分成4块时,就有问题了。这时就需要用到浮点数了。控制小数位数控制输出字段宽度,2.8.1控制小数位数,在上个例子的输出中有太多不必要的0。擅长使用量尺和锯子,并不说明能用长度为2.500000量尺切割木板,更不用说用2.500001长度的量尺了。可以用格式指定符指定小数点后面的位数。例如,要使输出的小数点后有两位数,就可以使用格式指定符%.2f。如果小数点后需要有3位数,则可以使用%.3f。,2.8.2控制输出字段宽度,输出的字段宽度是输出值所使用的总字符数(包括空格),它一般是默认的。printf()函数确定了输出值需要占用多少个字符位置,小数点后的位数由我们指定,并将它用作字段宽度。但我们可以自己确定字段宽度。如果要求输出一列排列整齐的数值,就应确定其字段宽度。如果让printf()函数指定字段宽度,输出的数字列就不整齐。,2.9较复杂的表达式,算术要比两个数相除复杂得多。事实上,如果要进行复杂的算术运算,也可以使用笔和纸。有了加减乘除的工具,就可以开始进行一些真正复杂的计算了。对于较复杂的的计算,需要更多地控制表达式的计算顺序。括号可以提供这方面的能力。当遇到错综复杂的情况时,括号还有助于使表达式更清晰。,2.10定义常量,前面的例子将Pi定义为变量,但它是一个不会改变的常量,的值是一个不循环的无限小数,其值总是固定不变。唯一的问题是,在指定它时精确到几位数。最好确保它的值在程序里保持不变,使之不会因错误而改变。极限值sizeof运算符,2.10.1极限值,当然,一定要确定程序中给定的整数类型可以存储的极限值。头文件定义的符号表示每种类型的极限值。,2.10.2sizeof运算符,使用sizeof运算符可以确定给定的类型占据多少字节。当然,在C语言中sizeof是一个关键字。表达式sizeof(int)会得到int类型的变量所占的字节数,所得的值是一个size_t类型的整数。size_t类型在标准头文件(和其他头文件如)中定义,对应于一个基本整数类型。但是,与size_t类型对应的类型可能在不同的C库中有所不同,所以最好使用size_t变量存储sizeof运算符生成的值,即使知道它对应的基本类型,也应如此。,2.11选择正确的类型,必须仔细选择在计算过程中使用的变量类型,使之能包含我们期望的值。如果使用了错误的类型,程序就可能出现很难检测出来的错误。,2.12定义常量,在程序2.14计算季度收入的表达式中,可以控制操作的执行,得到正确的结果:RevQuarter=QuarterSold/150*Revenue_Per_150;要使结果正确,必须修改这个语句,以浮点数的方式计算表达式。如果可以把QuarterSold的值转换为float类型,该表达式就会以浮点数的方式计算,问题就解决了。要把变量从一种类型转换为另一种类型,应把目标类型放在变量前面的括号中。自动转换类型隐式类型转换的规则赋值语句中的隐式类型转换,2.12.1自动转换类型,该程序的第二个版本的输出如下:Salesrevenuethisquarteris:$1930.50即使表达式中没有显式转换类型,结果也是浮点数形式,但它仍是错误的。这是因为编译器在处理涉及不同类型的值操作时,会自动把其中一个操作数的类型转换为另一个操作数的类型,2.12.2隐式类型转换的规则,确定二元运算中的哪个操作数要转换为另一个操作数的类型时,其机制相当简单。其基本规则是,将值域较小的操作数类型转换为另一个操作数类型,但在一些情况下,两个操作数都要转换类型。,2.13再谈数值数据类型,为了完整论述数值数据类型,下面讨论一些前面未提及的内容。第一个未涉及的类型是char。char类型的变量可以存储单个字符的代码。它只能存储一个字符代码(即一个整数),所以被看作整数类型。可以像其他整数类型那样处理char类型存储的值,因此可以在算术运算中使用它。字符类型字符的输入输出宽字符类型枚举存储布尔值的变量复数类型,2.13.1字符类型,在所有数据的类型中,char类型占用的内存空间最少。它一般只需一个字节。存储在char类型变量的整数可以表示为带符号或无符号的值,这取决于编译器。,2.13.2字符的输入输出,使用scanf()函数和格式指定符%c,可以从键盘上读取单个字符,将它存储在char类型的变量中。,2.13.3宽字符类型,wchar_t类型的变量存储多字节字符码,一般占用两个字节。在处理Unicode字符时,就需要使用wchar_t类型。wchar_t类型在标准头文件中定义,所以需要在使用该类型的源文件中包含该头文件。在char类型的字符常量前面加上修饰符L,就可以定义一个宽字符常量。,2.13.4枚举,在编程时,常常希望变量存储一组可能值中的一个。例如一个变量存储表示当前月份的值。这个变量应只存储12个可能值中的一个,分别对应于112月。C语言中的枚举(enumeration)就用于这种情形。,2.13.5存储布尔值的变量,_Bool类型存储布尔值。布尔值一般是比较的结果true或false;第3章将学习比较操作,并使用其结果做出判断。_Bool类型的变量值可以是0或1,对应于布尔值false和true。由于值0和1是整数,所以_Bool类型也被看作整数类型。,2.13.6复数类型,本节假定读者学过复数。如果读者未学过这个内容,可以跳过本节。如果对复数的概念比较模糊,这里将介绍它的基本特性。复数的形式是a+bi(在电子学中是a+bj),其中i是1的平方根,a和b是实数。A是实数部分,bi是复数的虚数部分。复数可以看作实数(a,b)的有序对,2.14赋值操作的op=形式,C语言是一种非常简洁的语言,提供了一些操作的缩写形式。考虑下面的代码:number=number+10;这类赋值操作是给一个变量递增或递减一个数字,它非常常见,所以有一个缩写形式:number+=10;,2.15数学函数,math.h头文件包含各种数学函数的声明。为了了解这些数学函数,下面介绍最常用的函数。所有的函数都返回一个double类型的值。,2.16设计一个程序,下面设计本章末的一个真实例子。在一个新程序中试用一些数值类型是一个很不错的想法。这里将从头开始编写一个程序,涉及编程的所有基本要素,包括问题的初始描述、问题的分析、解决方案的准备、编写程序、运行程序,以及测试它,确保它正常工作。该过程的每一步都会引入新问题,而不仅仅是纸上谈兵。问题分析解决方案,2.16.1问题,许多人都对树的高度很感兴趣。如果将树砍倒,量出它的高度,就可以确定离树多远才是安全的。这对于患有神经衰弱的人来说非常重要。问题是如何不使用非常长的梯子,就可以确定树的高度,因为长梯也会对人和树枝带来危险。为了确定树的高度,可以向朋友求助,最好找一个个子比较矮的朋友。假定要测量的树比自己和朋友都高。比自己还矮的树很容易测量出其高度,除非这棵树长满了刺。,2.16.2分析,现实问题很少能用适合于编程的方式来表达。在编写代码之前,需要确保完全理解了问题及其解决方式。只有这样,才能估计出创建解决方案所需的时间和精力。分析阶段应增强对问题的理解,确定解决它的逻辑过程。一般这需要大量的工作,这包括找出问题阐述中模糊或遗漏的细节。只有全面理解了问题,才能开始以适合编程的形式表达解
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年市场调研与分析能力考试试卷及答案
- 农村数字金融生态-洞察及研究
- 2025年美术教育基础与创新实践的考试试卷及答案
- 2025年计算机程序设计考试试卷及答案
- 2025年城市环境管理与保护专业能力测评试题及答案
- 2025年电子信息工程师资格考试试卷及答案
- 讲故事比赛演讲稿
- 2024年度浙江省二级造价工程师之建设工程造价管理基础知识综合检测试卷A卷含答案
- 2024年度浙江省二级造价工程师之建设工程造价管理基础知识题库练习试卷B卷附答案
- 早期矫治培训课件
- 2025-2030年中国成人纸尿裤行业市场深度分析及发展前景与投资机会研究报告
- 2025-2030中国动物狂犬病疫苗行业发展现状及趋势前景分析报告
- 2025年云南省中考语文试卷真题
- 2025春季学期国开电大专科《机械制图》一平台在线形考(形成性任务1至4)试题及答案
- 文具店创业计划书文具店创业准备计划书范文
- 银川永宁县社区工作者招聘笔试真题2024
- 浙江省强基联盟2024-2025学年高二下学期5月联考试题 物理 PDF版含解析
- 企业政策宣讲活动方案
- 自来水考试试题大题及答案
- (2025)发展对象考试题库与答案
- 北京师范大学《微积分(2)》2023-2024学年第二学期期末试卷
评论
0/150
提交评论