《C语言程序设计》基本知识点解答_第1页
《C语言程序设计》基本知识点解答_第2页
《C语言程序设计》基本知识点解答_第3页
《C语言程序设计》基本知识点解答_第4页
《C语言程序设计》基本知识点解答_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程序设计基本知识点解答C语言程序设计基本知识点解答52/52C语言程序设计基本知识点解答语言程序设计基本知识点解答(一)第章计算机基础知识Q001计算机的基根源理是什么?(计算机的基根源理)A001计算机的基根源理有两个:二进制:是指计算机中全部的信息都是以二进制形式的数据来表示、储藏、传达和运算的。储藏程序控制:是指在利用计算机解决问题时,第一需要人找出解决方法,尔后将这个方法用某种计算机语言变换成计算机程序(包括了原始数据和办理指令),再送入计算机中储藏,最后由人发出命令,计算机开始依照程序中的指令和流程执行这个程序(即对数据进行加工办理)。Q002为什么计算机内部使用二进制?(二进

2、制)A002使用二进制的主要原因是:物理上很简单实现两种相对峙的牢固的能量状态(如晶体管的导通与不导通、高电平与低电平、磁性资料中剩磁的顺时针或逆时针方向等)二进制数据的运算规则数量少而且简单,操作实现简略Q003计算机硬件的基本构造是什么?(硬件)A003运算器中央办理器CPU控制器主机硬件内储藏器储藏器系统外储藏器外设输入输出设备(I/O)Q004计算机硬件系统的核心部件有哪些?它们的作用是什么?(硬件)A004计算机硬件系统的四大核心部件是控制器、运算器、储藏器和输入输出设备。其中:控制器是计算机的指挥控制中心。其主要功能是鉴识翻译指令代码并向计算机各部发散出合适的控制信号,以便执行机器

3、指令。运算器是对数据进行加工、运算的部件。其主要功能是对二进制数据进行算术运算和逻辑运算。储藏器是存放数据和程序的部件。其主要功能是依照要求向指定的地址存进或取出信息。输入设备的功能是将数据和程序送入到计算机的储藏器中。常有的输入设备有键盘、鼠标等。输出设备的功能是将计算机产生的结果送出计算机外。常有的输出设备有显示器、打印机等。Q005计算机的基本工作过程是怎样的?(硬件)(工作过程)A005I/O控制器运算计算程序命令指存取命令原始数据令命令输入输入取数储藏器运算器输出设备输出存数计算结果控制流数据流Q006内储藏器和外储藏器有哪些差异?(储藏器)(内存)A006主要差异以下表所示:内储藏

4、器(主储藏器)外储藏器(辅助储藏器)属于硬件系统的主机部分,位于主机板的属于硬件系统的外设部分,与运算器和控构造插槽上,与运算器和控制器直接联系进行制器必定经过必然的硬件接口相联系进数据交换行数据交换物理组成电介质:半导体集成电路磁介质:磁盘或磁带计算机断电会使内存数据扔掉磁介质伤害或消磁会使数据扔掉作用存放计算机系统运行时期正在执行的各存放系统程序、各样应用程序和数据文件种程序和数据等当前不参加运行的大量信息Q007什么叫储藏单元的“位”和“字节”?(内存)(字节)(位)A007“位”(bit):是最小的电子线路单元,只能保留一位二进制数即一个0或一个1。因此一个“位”单元能够保留的最大的十

5、进制数是1。“字节”(byte):是由若干个“位”组成的逻辑单元。微机中,1字节8位。字节是最基本的数据储藏单元,即数据在内存中的储藏是以“字节”为基本单位的。任何数据总是据有整数个“字节”单元。Q008什么叫储藏单元的地址和内容?(内存)A008储藏器从第一个字节开始到最后一个字节为止,每一个字节单元在了逻辑上依次有一个“编号”,这个编号就叫内存单元的地址。而有这个地址所指向的内存单元中存放的数据就叫该内存单元的内容。Q009计算机是怎样在内存单元中找到需要的数据的?(内存)A009计算机总是第一找到所需数据所在字节单元的地址(编号),再到该地址所指向的内存单元去读取内存单元的内容(数据的值

6、)。Q010什么是“机器语言”?(语言)A010计算机能直接执行的用于表示机器指令的二进制数字代码称为“机器语言”,也就是机器指令会集。典型的机器语言程序以下:101011110011011101110110等等几百个指令很显然,这样的语言写的程序不易记忆和理解,使用、更正和保护都很费时费力,而且不易实行。Q011什么是“汇编语言”?(语言)A011使用一些符号来代表指令、存放器、储藏单元等机器指令中的要素,尔后用这些符号来写程序。使用这些助记符代码的语言,叫做“汇编语言”。典型的汇编语言源程序以下:MOVA,47翻译此后就是10101111ADDA,B00110111HALT01110110

7、等等几百个指令优点:比机器语言易理解、记忆和使用,速度与机器语言相仿。大量用于实时控制。不能够独立于机器。汇编语言源程序必定经过“汇编程序”的汇编后才能执行。Q012什么是“高级语言”?(语言)A012使用与人类的自然语言和数学语言周边的符号和运算符组成的语言,叫做“高级语言”。典型的C语言源程序以下:voidmain()inta=1,b=2,c;c=a+b;printf(c=%dn,c);优点:独立于机器,通用性和可移植性强;简单理解、记忆和学习,使用方便,源程序较短。缺点:不能够够直接执行,源程序必定经过“编译程序”的编译或“解说程序”的解说后形成目标程序才行。执行速度慢,系统开销大。Q0

8、13计算机中表示数据的基根源则是什么?(数据)A013计算机中表示数据的基根源则是:一个数据总要据有必然数量的字节单元(整数个字节、有限个字节)。不一样种类的数据据有不一样数量的字节单元(比方,PC机DOS环境下一个整数占2个字节,一个实数占4个字节)。全部数据都是以二进制数的补码形式表示的。当要表示一个数据的正负号时,总是用该数据所占字节单元的全部位中最高一位表示数的符号(0表示正,1表示负)。Q014什么叫“定点数”和“浮点数”?(数据)(定点数)(浮点数)A014在计算机中,小数点地址固定的数被称为定点数。定点数有定点整数和定点小数两种。定点整数:小数点默认为在一个二进制数最低位的后边。

9、以以下图:Ns1010101符号位数值部分小数点定点小数:小数点默认为在一个二进制数最高位(符号位)的后边。Ns1010101符号位小数点数值部分在计算机中,既有整数部分又有小数部分的数被称为浮点数。第一章C语言基础知识Q015什么是“C”?(C)A015在现代社会中,组织办理信息的能力是成功的重点。设计计算机的目的就是为了快速而有效地办理大量信息。但是除非有人告诉计算机该干什么和怎么干,否则它什么事情也不能够做。这就是计算机编程语言出生的原因,而C语言就属于一种计算机编程语言。它是一种能够让软件工程师与计算机之间进行有效对话的介于汇编语言和高级语言之间的编程语言。C语言特别灵便而且适应性强。

10、自1970年出生之日起,它素来被用来开发各样各样的程序,包括用于微控制器的固化软件、操作系统、应用程序和图形程序。Q016什么是“C+”?(C+)A016C+是C语言改进此后的产物。这种语言最初被称为“带类的C”(Cwithclass)。它增加了一些特点,其中最重要的特点就是引入了“类”。“类”是依照面向对象的程序设计(OOD)思想来创办的,它能使代码便于重复使用。C+语言完满兼容C语言,学好C有助于C+的学习。Q017怎样学习“C”?(C)A017学习和掌握一门编程语言的最后路子是用这门语言编写程序。事实上,在编写程序从前和此后也有很多很重要的工作要做。总的来说,依照这样一个过程是必有收获的

11、,即:读别人写的程序自己着手写程序调试这个程序直到成功。这就仿佛下围棋:打棋谱亲自下棋复盘。Q018什么是计算机程序?(程序)A018计算机程序主要由两部分组成:数据与指令。在一个计算机程序中间,数据和指令总是在满足语法规则的前提下,由程序员依照某种组织形式安排好它们,从而来描述对某个详尽问题的已经起初拟定出来的解决方法和步骤。程序员使用数据来描述他要操作的信息,使用指令来描述操作的方法、过程和步骤。称之为“翻译程序”的程序,把“源程序”翻译成二进制形式的“目标程序”这些“翻译程序”中间的一种。C语言就是一种“编译”语言,即是说,用必定经过“C编译器”的编译才能变成二进制的代码。Q019什么叫

12、“源程序”?(程序)A019源程序特指用汇编语言或高级语言编写出来的,计算机不能够够直接鉴识并执行的数据和代码的会集。源程序必定经过某种“翻译”过程才能变成计算机能够识其他指令。这个“翻译”过程关于汇编语言源程序叫做“汇编”,关于高级语言源程序有“编译”或“解说”两种翻译方法。C语言源程序采用是“编译”的方法。Q020什么是“编译器”?(编译器)A020从根本上说,计算机不能够直接鉴识和执行有高级语言编写的“源程序”,因此必定使用一种。而“编译器”就是C语言写出的源程序Q021我怎么能获取C的“编译器”?(编译器)A021世界上有很多厂商和集体开发了很多的“C编译器”,有商业版本的,也有完满免

13、费的。比较有名的C编译器有MicrosoftC,TurboC,BorlandC,WatcomC,GNUC等等。商业版本的编译器常常性能更好,所附加的函数库也更丰富,但是需要花销购买。因此,若是主要目的是为了学习C语言,那么完满能够使用免费的C编译器。比方TurboC和GNUC。你能够在相关公司的网站上也许很多相关C语言的个人网站上下载这些免费的编译器。其他一点,由于C+是完满兼容C的,因此你也能够使用C+编译器来编译你的C源程序。同样,你也能够在互联网上下载到免费的C+编译器,比方Inprise公司(原Borland公司)的C+Builder编译器。Q022程序的基本构造和特点是什么?(C程序

14、)(程序构造)A0221.一个程序是由函数组成的。语言又被称作“函数式语言”。函数可能是系统库函数或用户自定义函数。使用函数组成程序能够简单实现构造化程序设计方法。一个程序中必定有一个main函数,而且只能有一个。无论主函数位于程序的哪处,程序都由它开始执行。一个函数由两部分组成:函数原型和函数体。函数原型确定函数名,形参数量和种类,函数的返回值及其种类;而函数体包括在一对中,由若干语句组成以实现函数功能。每个语句必定以分号结束。能够用/*/(块说明符)在程序中任何地方作说明。说明的内容不会被编译。程序的书写格式很自由。Q023什么是“函数”?(函数)A023函数是依照必然语法规则被封装好了的

15、,能够达成特定功能的一段代码模块。使用函数组成程序能够简单实现构造化程序设计方法。Q024什么是“系统库函数”和“用户自定义函数”?(函数)A024系统库函数是指随同某个版本的C编译器一起宣布的已经实现了的函数会集。用户常常不能够获取这些函数的源代码,但是能够在自己的程序里调用这些函数从而实现相应的功能。不一样公司、不一样版本的C编译器所附加的库函数不尽同样,但是全部的C编译器都会附加一个被称之为“标准库函数”的函数库。因此,在使用标准库函数编程时,能够不考虑编译器的版本问题,由于全部的编译器都支持它们。其他也有一些独立软件供应商会供应第三方的需要单独购买的拥有特定功能的函数库。而用户自定义函

16、数是指用程序员自己编写的达成所需功能的函数。比方,每个C程序中都包括的main函数就是一个用户自定义函数。Q025C语言有哪些“系统库函数”?(函数)A025每个版本的编译器都会发送对所附加的库函数的分类列表和字母序次列表以及详尽说明手册。其他,也能够查找编译器所附加的在线帮助系统来追求信息。还可以够购买相关专家编写的函数使用手册。若是是标准库函数的话,你能够在互联网上找到它们的使用说明。Q026什么是main函数?(main函数)(主函数)A026在C程序中间,main函数是一个拥有特命名称和特别地位的用户自定义函数。无论主函数位于源程序的哪处,程序都从它的第一个语句开始执行,到执行完最后一

17、个语句结束。在main函数的函数体中,经过调用系统库函数或其他的用户自定义函数来达成整体的功能。而其他的自定义函数是不能够调用main函数的。Q027C程序中,怎样定义一个函数?(函数)A027定义一个函数包括定义函数头和定义函数体。格式以下:函数值种类函数名(函数形参列表)函数体函数头指示了该函数与其他函数不一样的唯一的函数名,执行该函数时所必定供应的输入信息,以及函数执行结束后获取的值的种类。函数体包括若干个语句来详尽实现该函数的功能。Q028C程序中,函数体为什么要包括在大括号而不是其他的括号中间?(函数)A028函数体总要包括在一对特定的符号中以形成封装的模块。其他的高级语言可能使用的

18、是其他的符号,而C语言中就是使用的大括号。这是规定。Q029什么叫“语句”和“语句结束符”?(语句)(语句结束符)A029一个语句就是一条命令。一个语句在编译后会变成很多条机器指令,告诉计算机做什么事情。语句能够很简单,也能够很复杂。为了划分程序中的若干个语句,每种语言都必定指定一个符号来标示语句的结束,这个符号就叫语句结束符。C语言中的语句结束符是分号。又是规定。Q030什么叫“说明”?(说明)A030说明是指在源程序中,对代码自己以及代码所设计的相关信息进行说明和解说的字符序列。为了差异源程序中的说明内容和正式的内容,必定用某种界定符号包围说明。Q031在编写计算机源程序中,为什么要增加“

19、说明”?(说明)A031现代计算机的运行速度已经很快,因此对计算机程序的要求从原来的程序大小、算法效率、编程的技巧性等等已经转变成程序的可读性和可保护性。而增加合适的说明是保证和增强程序可读性和可保护性的最重要的手段之一。对大型的程序特别这样。对没有说明或说明不科学的程序进行保护和二次开发,其代价和成本是无法估计阿。因此,对程序员来讲,一开始就养成给程序写说明的习惯是至关重要的,这已经成为议论一个程序员水平高低的重要标准。Q032在C程序中,怎样增加“说明”?(说明)A032C语言中,用成对出现的/*/来告诉编译器,包括在/*/之间的全部内容都是说明。编译器在对源程序进行编译时,将忽略和跳过这

20、些内容。Q033关于C程序的书写格式有何规定?(格式)A033C程序的书写格式是很自由的。你只要不把一个完满的符号或一个常量翻开,其他的都能够任意安排。Q034在编写计算机源程序时,为什么要依照必然的书写规范?(格式)A034原因很简单也很重要:保证和增强程序的可读性和可保护性。一幅漂亮的书法会令人神清气爽,可一幅涂鸦则会令人雅兴大减。Q035关于优异的书写规范和编码习惯,有何建议?(格式)A035可是建议,其实不是规定,但事实上已经约定俗成:合适的说明会大大增加程序的可读性和可保护性一行尽量只写一个语句使用有规则的缩进式代码排列方式在需要的地方加上一些空行起有意义和易于分辨的符号名Q036C

21、源程序是怎样运行的?(C程序)(运行)A036上机输入和编译源程序编写源程序文件*.cYesNo目标程序有错?文件*.objNo可执行程序链接文件*.exe调试执行NoYes结果正确?结束Q037什么是IDE?(IDE)(集成开发环境)A037是集成开发环境IntegratedDevelopEnvironment的缩写。IDE包括了编写器Editor、编译器Compiler、连接程序Linker、项目管理程序ProjectManager、调试器Debugger、在线帮助系统OnlineHelpSystem和其他一些辅助开发工具OtherTools。用户的全部开发工作都能够在一个IDE中达成。Q

22、038怎么学习使用IDE?(IDE)(集成开发环境)A038最好的方法就是查察IDE自带的在线帮助系统。绝大多数的IDE都带有详尽的帮助系统,对IDE自己的组成、功能和使用有详尽的说明。除此之外,帮助系统中还包括对全部库函数和辅助工具的使用说明。因此,必然要学会看帮助。自然,这对你的计算机英语水平有较高要求。Q039什么叫“预编译”?(预编译)A039在对源程序进行正式编译从前所做的一些办理工作叫做预编译。最常有的预编译工作就是用include包括文件和用define进行符号代替。C源程序中,全部的预编译命令都由#号开头。使用预编译命令,能够供应C语言自己不包括的一些扩大功能。Q040什么叫“

23、编译”?(编译)A040将高级语言源程序翻译成二进制代码的目标程序的一种方法和过程。达成这个过程的是一个特地的程序,叫“编译器”。Q041什么叫“连接”?(连接)A041将编译后的二进制目标程序和相关函数库进行连接并打包成可执行程序的过程叫做连接。达成这个过程的是一个特地的程序,叫“连接器”。Q042什么叫“调试”?(调试)A042一个程序永远不能能一次就完满写正确,总会存在这样那样的错误。有些错误属于简单的语法错误,有些错误属于复杂的逻辑错误,有些错误直到程序运行时才有可能发现。检查并消除全部这些错误直到程序完满正确的过程就叫调试。编写一个大型的程序,常常有一半的时间用在了调试工作上,因此,

24、学习调试的方法,积累调试的经验时一个程序员必定要经历的过程。Q043用C语言只能写在DOS下运行的程序吗?(C)A043自然不是。无论是DOS和WINDOWS,还是Unix和Linux,也许其他的操作系统,你所需要的就是属于那个操作系统的C或C+“编译器”,你就可以用C语言编写在那个操作系统下运行的程序。自然,不一样的操作系统下,由于程序运行的原理不同样,因此编程的原搭理有所不一样。Q044除了C程序设计的书籍外,还有更多学习C语言的资源吗?(C)(学习)A044有,那就是INTERNET。你只要在某个找寻引擎中输入诸如“C语言”、“C教程”、“C源码”之类的重点字,就会找寻到不计其数的网站和

25、网页。外国关于C语言教程和C语言编程的网站就更多了。学会使用并用好这些资源,你很快就会变成一个C语言好手。第二章算法基础知识Q045什么叫“算法”?(算法)A045算法,简单的说就是为解决一个问题而采用的方法和步骤。一个实责问题若是需要经过编写计算机程序来解决的话,就必定第一拟定出解决该问题的算法。关于同一个问题可能存在着不一样的解决方法和步骤,也就是说有不一样的算法。因此确定算法时,在保证正确有效的前提下,应该尽量提高算法的效率和质量。其他,我们更关心的是特地针对计算机编程而拟定的算法,而不是一般的一般意义上的算法。Q046可否举例说明什么是“计算机算法”?(算法)A046比方编程序求123

26、4510。关于这样一个详尽问题,我们能够获取不仅一个的算法。算法:直接写一个乘法表达式来计算,即S1:prod=12345678910这个算法的结果诚然是正确的,但是这样的解决方法和步骤显然不是有效合理的。由于若是问题变成了求12345100,也许变成了13579101,那么这种方法就不适用了。算法:利用编程语言中“变量”的看法,每次计算一个乘法并把结果保留在该变量中,下次再用这个变量去乘以下一个数,即S1:prod=1S2:prod=prod2S3:prod=prod3S4:prod=prod4S5:prod=prod5S10:prod=prod10这个算法的结果也是正确的,比算法简洁一些,

27、但是依旧不是有效合理的,同样的问题就在于算法不通用。算法:利用“变量”的看法的同时,再利用“循环”的解决方法,能够实现真切的计算机算法S1:prod=1S2:n=1S3:prod=prodnS4:n=n+1S5:若是n10,则返回到S3;否则,结束这个算法拥有通用性、灵便性。由于只若是同样的近似的问题,那么这个算法是不需要作大的改动的。而且全部计算机语言都有实现“循环”的控制语句,因此这个算法就是我们所说的有效的正确的计算机算法。Q047一个计算机算法应该有什么样的特点?(算法)A047一个算法应拥有以下特点:有穷性:一个算法的步骤必定是合理有限的确定性:算法中的每一个步骤应该是确定的,而不应

28、该是含糊的、模棱两可的有零个或多个输入:执行算法是需从外界获取必要的信息有一个或多个输出:执行一个算法后应该有必要的结果有效性:算法中的每一个步骤都必定是能有效成立和有效执行,并获取确定结果的。Q048怎样表示一个计算机算法?(算法)(算法的表示)A048一个算法拟定好后,总要经过某种方式把它表示出来,以便自己和其别人阅读理解。平时,能够经过“自然语言”、“流程图”、“伪代码”、“计算机语言”等方法来描述一个计算机算法。自然语言就是人们平时使用的语言,能够是英语、汉语或其他语言。用自然语言表示算法平时易懂,但文字冗长,含义不太严格,简单出现“歧义性”。其他,用自然语言表示包括分支和循环的算法也

29、不方便。因此,最常有的计算机算法表示方法就是“流程图”。用“计算机语言”来描述算法实质上就是我们平时所说的编程序,即程序实质上就是对一个算法的描述。“伪代码”是用介于自然语言和计算机语言之间的文字和符号来描述算法。它仿佛一篇文章。自上而下地写下来。每一行(或几行)表示一个基本操作。它不用图形符号。因此书写方便。格式紧凑,也比较好懂,便于向计算机语言算法(即程序)过渡。Q049怎样用流程图表示一个计算机算法?(算法的表示)(流程图)A049流程图是用一些起初规定好的拥有某种含义的图框和流程线来表示算法中的步骤和各样操作。这是用传统流程图表示的求1234510的算法:开始用流程图表示算法直观形象,

30、逻辑清楚,但是占用篇幅很多,特别当算法比较复杂时,画流程图既费时又不方便,而且当算法不断改动时,流程图的更正也特别麻烦,因此流程图宜用于表示一个达成的最后算法。流程图有很多各种类,最常有的是传统流程图和NS流程图。传统流程图中由于对流程线的使用没有严格限制,全部很简单造成流程图的凌乱和无规律。Q050什么是基本程序构造?(程序构造)p=1n=1p=p*nn=n+1Yesn5No结束A050为了提高算法的质量,使算法设计和阅读方便,必定限制传统流程图中间流程线的滥用,即不一样意无规律的使流程转向,只能序次的进行下去。但是,一个算法中间难免会包括一些分支和重复而不能能全部由一个一个步骤序次向下组成

31、。为认识决这个问题,人们规定出几种基本程序构造,尔后由这些基本程序构造按必然规律组成一个算法构造,整个算法的描述则是由上而下的将各个基本构造序次排列起来而成的。基本程序构造有三种,分别是序次构造、分支构造和重复构造。流程图以下。用这三种基本构造就可以表示任何复杂的算法。序次构造选择构造循环构造aaaAYes?NoABAB?YesbNobb语言程序设计基本知识点解答(二)第三章数据种类、运算符和表达式Q051什么是“数据种类”?(数据种类)A051数据种类就是指数据在计算机中保留和运算时的组织和形式。实责问题中间原来就有若干种不一样种类的数据,因此用来解决这些实责问题的计算机编程语言中自然应该有

32、对应的数据种类来描述这些数据。比方最基本的数据种类就是整数、实数,其他还有非数值型的数据种类,如字符串。一个计算机程序中用到的全部数据都必定拥有某各种类。Q052什么是“运算符”?(运算符)A052运算符是指一些拥有规定运算功能的特定的符号。如+、-、*、/、%等等。这里的运算功能可能是我们比较熟悉的运算比方算术运算(加减乘除)、逻辑运算(与或非)或比较运算(大于小于等于),也可能是其他一些在计算机语言中间特有的运算如加1减1运算、位运算等等。C语言共有34种运算符。Q053什么是“表达式”?(表达式)(优先级)(结合性)A053表达式是依照运算符的性质,用运算符把数据连接起来以达到数据运算目

33、的而组成的式子。写表达式的最后目的是要进行计算它求出它的值。求解表达式的过程是由计算机达成的,因此,要想获取正确的结果,就必定写出正确的表达式。而一个表达式中常常包括多个运算符,因此必定熟悉每一种运算符的性质(优先级别和结合性),才能写出有正确求解结果的表达式。Q054C语言有哪些数据种类?(数据种类)A054C语言中的因此数据种类以以下图所示:整型单精度型实型基本种类双精度型字符型列举种类的数组种类数据种类构造种类构造体种类共用体种类指针种类空种类Q055什么是“常量”?(常量)A055程序运行时期,值不能够被改变的量称为常量。若是试图去改变常量的值,就必然会出错。在C语言中,最少有两种方法

34、表示一个常量,即“直接常量”和“符号常量”。Q056什么是“直接常量”?(常量)A056直接常量也叫字面常量,就是一看就知道的、直接拥有详尽的固定的值的量。比方1、2、3;0.1、10.0;a,1;“hello”等。常量也是有种类的。前面所列举的常量就分别是整型、实型、字符型和字符串型的常量。Q057什么是“符号常量”?(常量)(符号常量)A057直接常量的好处是一看就知道的它的值,但是缺点是读程序的人无法方便的知道这个值到底代表什么含义,即这个值传达的信息是不完满不明确的。这样的数常常被称之为“幻数(MagicNumber)”。若是我们能够给这些数值起一个有意义有详尽含义的名字就可以解决这个

35、问题了。符号常量的目的就在此。它是用一些符号来代替程序中间出现的常量。从而使得程序的可读性和可保护性大大增强。Q058C语言中,怎样实现“符号常量”?(常量)(符号常量)A058C语言中,能够使用#define预办理命令来实现符号常量。比以下面的程序:#definePI3.14159intmain()floatr,c,s,v;r=2;printf(PI=%fn,PI);c=2*PI*r;printf(周长=%fn,c);s=PI*r*r;printf(面积=%fn,s);v=4*PI*r*r*r/3;printf(体积=%fn,v);return0;第一步,程序第一行用#define预办理命令

36、定义了一个符号常量,其名字是PI,代表的常量值是3.14159。第二步,在本程序以下的代码中,凡是原来直接出现3.14159的地方,全部换成符号PI。这样更正后程序运行的结果和直接使用字面常量是同样的。Q059用#define实现符号常量的原理是什么?(符号常量)(define)A059实际上是一个在预办理阶段的代替过程。在前述问题的程序中,第一行的含义就是定义了一个符号名字叫做PI,它代替的一串字符是3.14159。尔后,在对这个程序进行编译时,编译器第一启动预编译器(preprocessor)对源程序进行预编译办理。当预编译器发现程序中有诸如#define这样的预编译命令时,就对它们进行相

37、应命令指定的办理。比方,关于#define预编译命令,预编译器就扫描整个源程序代码,将其中全部出现的由#define定义的符号全部代替成在#define命令行定义的符号后出现的字符串。因此,上述程序在预编译办理后,就变成了intmain()floatr,c,s,v;r=2;printf(PI=%fn,3.14159);c=2*3.14159*r;printf(周长=%fn,c);s=3.14159*r*r;printf(面积=%fn,s);v=4*3.14159*r*r*r/3;printf(体积=%fn,v);return0;因此就仿佛直接使用字面常量同样了。Q060使用“符号常量”的好处是

38、什么?(符号常量)A060两个主要的好处:(1)从所起的符号名字中能够清楚地看出该常量的含义,从而做到“见名知意”,防备“幻数”。比方上述程序中阅读此程序的人很简单的由符号名PI知道这个常量的含义就是圆周率。自然要想达到这样的收效,前提是所起符号名称必定和实质含义相吻合。由于符号是能够任意命名的,你完全能够用这样的#define命令#definePRICE3.14159来定义一个符号PRICE代替3.14159,但是这样作就失去符号常量的存在意义了。在需要更正常量的值时能够做到“一改全改”,减少工作量。若是一个常量的值发生了变化,若是原来是用直接常量实现的,那么很显然程序的更正工作量就很大,特

39、别是当这个常量出现次数很多的时候。但是,若是用符号常量来实现的话,那么只要要改动一个地方,就是#define命令这个地方,而程序其他部分完满不需改动,由于在进行预编译时新的常量值会被正确的代替进去。Q061为什么在Q058的程序中,第5行的第一个PI没有被代替成3.14159?(符号常量)A061在预编译器对源程序代码中间出现的符号常量进行代替时,其实不是凡是发现有同样的符号名就无条件代替。最少有两种情况下,这个代替不会发生:第一:这个符号出现在双引号中间。双引号括起来的叫做字符串常量,要的就是其中包括的原义字符,因此不会被代替;第二:这个符号不是单独且完满出现的,而是另一个符号的一部分。比方

40、,定义了符号常量PI,那么代码中倘如有另一个符号叫API,那么代替不会发生,即不会变成A3.14159。Q062什么是“预编译”?(预编译)A062预编译也叫编译预办理:是指在对源程序进行正式编译从前所作的一些办理。这些办理是由预办理命令指定的。源程序经过预办理后,再由编译程序进行正式的编译。预办理命令诚然用在C程序中,但它其实不是语言自己的组成部分,不能够用C编译器直接对它进行编译,必定由预编译器来办理。预办理命令都是以符号“#”开头的。Q063什么是“变量”?(变量)A063程序运行时期,值能够被改变的量称为变量。C程序赞同把数值存放在变量中,每个变量都由一个变量名来表记。每个变量都必定有

41、一个变量种类。每个变量依照它的种类不一样,在内存中据有必然数量的字节单元,该变量的值就存放在这些内存单元中。Q064“变量”的实质是什么?(变量)A064变量的实质就是命名的内存单元,因此它的值能够被改变。所谓改变变量的值实际上是改变变量所占内存单元中的内容,由于变量名和内存单元的地址、变量值和内存单元的内容是相对应的。以以下图:变量名prod实质内存单元上是一个符号地址的地址prod是变量prod的变量值123变量prod所占内存单元据的内存单元的内容Q065变量的名字可否能够任意命名?(变量)A065自然不是。任何计算机编程语言中,关于标志符号的命名总是有规定的。变量名就属于标志符的一种,

42、其他的标志符还有符号常量名、数组名、函数名、构造种类名等等。C语言中,变量(表记符)的命名规定是:只能由大小写字母、下划线和数字组成;开头的第一个字符只能是大小写字母或下划线;大小写是敏感的;不能够与C语言中的重点字重复;名字在其作用范围内必定是唯一的;名字的长度不能够高出系统的规定。详尽的长度限制随系统不一样而不一样。Q066在A065中提到的“重点字”是什么?(重点字)A066重点字(Keyword),也叫保留字(Reserveword),是计算机语言中间拥有起初固定的命名的、能达成指定功能的符号。一种编程语言的很大一部分功能就是由重点字来达成的。C语言一共有32个重点字。其中,部分是用于

43、定义变量种类的,如int、long、float、char等,部分是用于实现基本程序构造的,如if、switch、while、for等。能够这么说,重点字运算符就等于一门语言的绝大多数功能。Q067我听别人说过“好的变量名”,这是指什么?(变量名)A067理论大将,变量命名只要满足上述规定,任何名字都是能够的。但是,在给变量命名时,除了规定之外,还有一个优异的命名习惯的问题。即是说,第一要起合法的名字,其次要起好的名字。所谓好的变量名,最主要的要求就是要“见名知意”。别人经过变量的名字即可知道这个变量所保留信息的含义,这有助于增强程序的可读性。关于命名习惯,有以下建议:防备使用没心义的名字,应严

44、格做到“见名知意”;尽量使用代表变量实质含义的英文单词或缩写作表记符名;当名字包括多个单词时,平时使每个单词的首字母大写;不使用以下划线开头的名字,由于这样的名字平时是系统内部保留的表记符名;在整个程序中尽量保持一致的命名方式。Q068在编译程序时,提示有错,错误为“Error:Undefinedsymbol??”,这是什么原因?(变量)(定义变量)A068“Undefinedsymbol”的意思是“为定义的符号”,就是说程序中间存在着还没有定义就直接使用的变量。这是由于C语语言法上要求,任何一个变量在使用从前必定先定义它。所谓定义一个变量,就是要在该变量被使用从前,见告编译器该变量的名字、种

45、类和储藏种类,这样编译器才能正确编译Q069那么,怎样定义变量?(定义变量)A069变量定义拥有三个目的:定义变量名;定义变量种类;向程序员描述该变量。变量定义的一般格式是:typename;/*comment*/种类名字;/*说明*/比方:intage;/*theageofstudent*/floatscore;/*thescoreofstudent*/floataverage;/*theaverageofscore*/longnumber;/*thenumberofstudent*/doubledistance;/*betweenearth&moon*/charUserSelection;

46、/*keyuserhit*/在程序运行时,系统将依照变量的定义为其分配相应大小的内存单元。Q070为什么在C语言中,整数017和17其实不是同样的?(整型)A070这是由于在C语言中,17是十进制的整数,而017是八进制整数,相当于十进制的15。C语言中关于同一个整型常量,能够有三种不一样的形式来表示,即分别用十进制、八进制、十六进制来表示同一个数。为了划分不一样进制的整型常量,也为了和其他的标志符划分,C语言中规定,以数字“0”开头的整型常量是八进制的,而以“0 x”开头的整型常量的整型是十六进制的。比方十进制整数18,就等价与八进制整数022,也等价与十六进制整数0 x12。Q071在C语

47、言中,整型变量是怎样分类的?(整型)A071在C语言中,整型变量分为两大类:有符号整型和无符号整型。而无论是有符号还是无符号整型变量,又都分为基本整型、短整型和长整型三种。分类情况以下表所示:种类重点字占字节数量(TurboC)基本整型signedint2字节有符号短整型signedshortint2字节signed(signedshort)长整型signedlongint4字节(signedlong)基本整型unsignedint2字节无符号unsignedshortintunsigned短整型2字节(unsignedshort)长整型unsignedlongint4字节(unsignedl

48、ong)其中,有符号整型变量中,重点字signed能够省略。Q072为什么C语言中,整型变量要分很多种?(整型)A072一方面是由于实责问题中间的数据原来就是拥有不一样的种类的,更主要的是由于这些数据的变化范围是不一样的。不一样范围的数据所需要的内储存藏单元也是不同样的。因此,必定依照数据的范围来决定给它分配多大的储藏空间,而不致发生空间不够或空间浪费的问题。这就恰似学校的授课楼里,既有大教室,也有小教室,尔后依照来上课的人数分配合适的教室。而不是全部都是大教室,那样就会产生教室不足或教室浪费的问题。C语言供应了多种整型数据种类,不一样种类的整型数据据有的字节单元数量是不一样的,因此不一样种类

49、的整型数据可表示的数的范围也是不一样的,这样有助于依照实质数据的最大值来确定其最合适的种类。Q073那么,终究每种整型变量能保留的数据范围是多少呢?(整型)A073由于每一种整型数据据有的字节单元数量都是有限的,因此每一种整型数据可表示的数的范围也是有限的。ANSIC标准定义的整型种类的表示范围以下表所示:种类字节数有效表示范围signedint2字节-32768+32767unsignedint2字节0+65535signedshortint2字节-32768+32767unsignedshortint2字节0+65535signedlongint4字节-2147483648+2147483

50、647unsignedlongint4字节0+4294967295Q074有符号和无符号的差异是什么?(整型)A074有符号和无符号的差异重点在于变量所占字节单元中“最高位”的性质。关于有符号变量:把最高位作为符号位保留数据的符号(0为正,1为负),其他位保留详尽数值,因此能够用于正保证存限值范围内的正数或负数。比方有inta;那么a的有效数值保留范围为-3276832767。关于无符号变量:最高位不作为符号位,全部的位都用来保留数据的数值,因此能够用于正确保留限值范围内的正数。比方有unsignedintb;那么b的有效数值范围为065535。Q075为什么下面的程序中,输出的结果是over

51、=-32768,而不是希望的over=32768?(整型)voidmain()intmax,over;max=32767;over=max+1;printf(over=%d,over);A075由于发生了整型数据的“溢出”问题。前面已经说过,由于每一种整型数据据有的字节单元数量都是有限的,因此每一种整型数据可表示的数的范围也是有限的。程序中,max是int有符号基本整型的变量,因此其有效的数据保留范围就是-32768+32767。当max等于32767时,实际其所占两个字节中的情况以以下图:max?o327670111111111111111max+1后赋值给同样的int有符号基本整型的变量以

52、以下图,很显然已经变成了-32768的补码了。over,则over中实质其所占两个字节中的情况max+1?over?o-327681000000000000000因此用printf函数依照%d格式显示出来就是-32768。Q076那怎样才不会出现“整型数据溢出”的问题呢?(整型)A076解决的方法就是,在定义变量时必然要指定合适的种类,保证它所保留的数据在整个程序运行过程中不会高出其能够有效表示的范围。比方,上面的程序中,若是把over定义成unsignedint或long型的变量就可以防备“溢出”的问题。Q077实型变量是怎样分类的?(实型)A077实型变量的分类以下表所示:种类单精度双精度

53、重点字floatdouble字节数4字节8字节有效数字位数67位1516位数值范围10-3710+3810-30710+308很显然,由于不一样的实型数据是用不一样数量的有限字节单元保留的,因此它们能表示的数值范围是不一样的,能保留的有效数字位数也是不一样而且是有限的。Q078实型数据在内存中是怎样储藏的?(实型)A078实型数据在内存中是以“尾数”和“阶码”的形式存放的。即在一个实型数据(浮点数)所占字节单元中,一部分位用来保留阶码,一部分位用来保留尾数。以以下图:尾数部分阶码部分不一样的编译系统位数分配不一样。总之,尾数部分位数越多,能够表示的数的有效数字位数就越多,精度就越高;阶码部分位

54、数越多,能够表示的数的范围就越大。Q079什么是字符型常量?(字符型)A079的字符常量是用单引号()括起来的一个字符。比方:a、A、d、D、?、%、$、2、4等等。注意两点:第一,必定是单引号,第二,单引号里只能有一个字符。Q080为什么字符常量要用单引号括起来?(字符型)A080这是为了和程序中其他种类的数据划分开来。比方字符常量A,若是不加单引号,可是一个A,那么必然会被编译器认为成一个符号的名字比方变量名。又比方字符常量1,若是不加单引号,可是一个1,那么必然会被编译器认为成是一个整型常量1。因此,必定在所需要的字符周围加上一些称之为“界定符”的字符把它们包围起来,才能和其他数据进行划

55、分。Q081既然单引号里只能有一个字符,为什么有的程序中会出现n,101这样的字符?(字符型)A081这是由于除了前面提到的“单引号括起来的一个字符”形式的字符常量,语言还存在另一种形式的特其他字符常量,叫“转义字符常量”。它是用单引号括起来的以一个“”字符开头的规定的字符序列。比方问题中间提到的n,101。在转义字符常量中,单引号里面确实是不仅一个字符,但实质上整个还是只代表一个字符,也是合法的字符常量。这也就是“转义”之含义。起到转义作用的是单引号中间的“”,它被用来作为转义字符序列的初步字符。若是单引号中起始字符不是“”,又多于一个字符,那么就不是合法的字符常量了。比方,nn,101就不

56、是合法的字符常量。Q082为什么要用到“转义字符常量”?(字符型)(转义字符常量)A082由于除了键盘上的全部字符外,程序中间还需要用到一些在键盘上找不到也就无法直接输入的特别字符。这些字符常常代表了一些独到的特定的功能。因此需要用一种特其他方法来表示它们,这就产生了“转义字符常量”,也叫“转义字符序列”。Q083C语言中都支持哪些“转义字符常量”?(字符型)A083C语言所支持的转义字符常量如能够分为三大类,以下表所示:转义字符含义ASCII代码n回车换行(光标移到下一行第一列)10控t水平制表(光标移到下一个Tab地址)9制b退格(光标移回到同一行前一列)8字符r回车(光标移到同一行第一列

57、)13f换页(光标移到下一页开头)12特别反斜杠字符“”92标点单引号(撇号)字符39符号34“双引号字符“全部ddd1到3位8进制数所代表的字符字符xhh1到2位16进制数所代表的字符Q084上表中出现的ASCII代码是什么意思?(字符型)(ASCII码)A084ASCII是英文AmericanStandardCodeforInformationInterchange的缩写,其中文含义是“美国信息交换标准代码”。实质上,ASCII码是一个0255之间的整数。每一个整数对应着一个不一样的字符,即每一个字符都有一个不一样的整数代码。比方,上表中出现的字符n用整数10代表,而单引号自己是用整数39

58、代表的。完满的ASCII码表请拜会课本374页。Q085为什么每一个字符要用一个不一样的整数来代表?(字符型)(ASCII码)A085根根源因在于计算机的基根源理是二进制的。字符型的数据自己是非数值型的,是无法保存在计算机中间的,由于计算机中全部的数据最后都要以二进制数的形式来保留。因此,就要想法将非数值型的数据变换为数值型的数据,从而产生了很多种称之为“字符集”的东西。在各样“字符集”中,把每一个字符用一个唯一的整数来代表。当程序运行时,在出现在该字符的地方实质内存中储藏的是该字符对应的整数代码。ASCII就是一种扩大的西文字符集,它把常用的256个字符分别用0255之间的整数来代表。Q08

59、6那么说,C语言中的字符型数据实质上就相当于数值型的数据喽?(字符型)A086正是。每个字符型数据无论是常量还是变量在内存中只占一个字节,这个字节中实质保留的就是该字符的ASCII代码。而ASCII码是一个整数,就要按整数的储藏方式来保留,因此在C语言中,字符型和整型数据的储藏方式是一致的,不一样的可是两者据有的字节单元数量。比方字符常量A,它的ASCII码是整数65,因此在内存中,字符常量A所占的一个字节中实质保留的是整数65,即01000001。反过来看,若是我只知道有一个字节中存放的是01000001,那么我们既能够说它是整数65,也能够说它是字符常量A。可见,在C语言中,字符型数据和整

60、型数据在必然范围内是通用的,即两者能够互相赋值,互相输出,也能够在一起进行运算。Q087请举例说明字符型数据和整型数据在必然范围内是通用的?(字符型)A087程序以下:#includevoidmain()charc1,c2,c3;c1=A;c2=b;c3=;/*c3保留的是字符空格,ASCII码是32*/c1=c1+32;/*字符能够和整数进行算术运算*/c2=c2-c3;/*字符甚至还可以够和字符进行算术运算*/printf(c1=%c,c1=%dn,c1,c1);/*输出结果时,字符既能够显示为字符printf(c2=%c,c2=%dn,c2,c2);/*也能够显示整数(%d)*/retu

温馨提示

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

评论

0/150

提交评论