《C语言程序设计》基本知识点解答一.docx
- 文档编号:12158258
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:16
- 大小:127.20KB
《C语言程序设计》基本知识点解答一.docx
《《C语言程序设计》基本知识点解答一.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》基本知识点解答一.docx(16页珍藏版)》请在冰豆网上搜索。
《C语言程序设计》基本知识点解答一
C语言程序设计基本知识点解答
(一)
第○章计算机基础知识
Q001Ø计算机的基本原理是什么?
(计算机的基本原理)
A001Ø计算机的基本原理有两个:
1.二进制:
是指计算机中所有的信息都是以二进制形式的数据来表示、存储、传递和运算的。
2.存储程序控制:
是指在利用计算机解决问题时,首先需要人找出解决方法,然后将这个方法用某种计算机语言转换成计算机程序(包含了原始数据和处理指令),再送入计算机中存储,最后由人发出命令,计算机开始按照程序中的指令和流程执行这个程序(即对数据进行加工处理)。
Q002Ø为什么计算机内部使用二进制?
(二进制)
A002Ø使用二进制的主要原因是:
1.物理上很容易实现两种相对立的稳定的能量状态(如晶体管的导通与不导通、高电平与低电平、磁性材料中剩磁的顺时针或逆时针方向等)
2.二进制数据的运算规则数量少而且简单,操作实现简便
Q003Ø计算机硬件的基本结构是什么?
(硬件)
A003Ø
Q004Ø计算机硬件系统的核心部件有哪些?
它们的作用是什么?
(硬件)
A004Ø计算机硬件系统的四大核心部件是控制器、运算器、存储器和输入输出设备。
其中:
控制器是计算机的指挥控制中心。
其主要功能是识别翻译指令代码并向计算机各部分发出适当的控制信号,以便执行机器指令。
运算器是对数据进行加工、运算的部件。
其主要功能是对二进制数据进行算术运算和逻辑运算。
存储器是存放数据和程序的部件。
其主要功能是按照要求向指定的位置存进或取出信息。
输入设备的功能是将数据和程序送入到计算机的存储器中。
常见的输入设备有键盘、鼠标等。
输出设备的功能是将计算机产生的结果送出计算机外。
常见的输出设备有显示器、打印机等。
Q005Ø计算机的基本工作过程是怎样的?
(硬件)(工作过程)
A005Ø
Q006Ø内存储器和外存储器有哪些区别?
(存储器)(内存)
A006Ø主要区别如下表所示:
内存储器(主存储器)
外存储器(辅助存储器)
结构
属于硬件系统的主机部分,位于主机板的插槽上,与运算器和控制器直接联系进行数据交换
属于硬件系统的外设部分,与运算器和控制器必须通过一定的硬件接口相联系进行数据交换
物理组成
电介质:
半导体集成电路
计算机断电会使内存数据丢失
磁介质:
磁盘或磁带
磁介质损伤或消磁会使数据丢失
作用
存放计算机系统运行期间正在执行的各种程序和数据
存放系统程序、各种应用程序和数据文件等当前不参与运行的大量信息
Q007Ø什么叫存储单元的“位”和“字节”?
(内存)(字节)(位)
A007Ø“位”(bit):
是最小的电子线路单元,只能保存一位二进制数即一个0或一个1。
因此一个“位”单元可以保存的最大的十进制数是1。
“字节”(byte):
是由若干个“位”组成的逻辑单元。
微机中,1字节=8位。
字节是最基本的数据存储单元,即数据在内存中的存储是以“字节”为基本单位的。
任何数据总是占据整数个“字节”单元。
Q008Ø什么叫存储单元的地址和内容?
(内存)
A008Ø存储器从第一个字节开始到最后一个字节为止,每一个字节单元在了逻辑上依次有一个“编号”,这个编号就叫内存单元的地址。
而有这个地址所指向的内存单元中存放的数据就叫该内存单元的内容。
Q009Ø计算机是如何在内存单元中找到需要的数据的?
(内存)
A009Ø计算机总是首先找到所需数据所在字节单元的地址(编号),再到该地址所指向的内存单元去读取内存单元的内容(数据的值)。
Q010Ø什么是“机器语言”?
(语言)
A010Ø计算机能直接执行的用于表示机器指令的二进制数字代码称为“机器语言”,也就是机器
指令集合。
典型的机器语言程序如下:
10101111
00110111
01110110
……等等几百个指令
很显然,这样的语言写的程序不易记忆和理解,使用、修改和维护都很费时费力,而且不易推广。
Q011Ø什么是“汇编语言”?
(语言)
A011Ø使用一些符号来代表指令、寄存器、存储单元等机器指令中的要素,然后用这些符号来写程序。
使用这些助记符代码的语言,叫做“汇编语言”。
典型的汇编语言源程序如下:
MOVA,47翻译之后就是10101111
ADDA,B00110111
HALT01110110
……等等几百个指令
优点:
比机器语言易理解、记忆和使用,速度与机器语言相仿。
大量用于实时控制。
不能独立于机器。
汇编语言源程序必须经过“汇编程序”的汇编后才能执行。
Q012Ø什么是“高级语言”?
(语言)
A012Ø使用与人类的自然语言和数学语言相近的符号和运算符构成的语言,叫做“高级语言”。
典型的C语言源程序如下:
voidmain()
{
inta=1,b=2,c;
c=a+b;
printf("c=%d\n",c);
}
优点:
独立于机器,通用性和可移植性强;容易理解、记忆和学习,使用方便,源程序较短。
缺点:
不能够直接执行,源程序必须经过“编译程序”的编译或“解释程序”的解释后形成目标程序才行。
执行速度慢,系统开销大。
Q013Ø计算机中表示数据的基本原则是什么?
(数据)
A013Ø计算机中表示数据的基本原则是:
一个数据总要占据一定数目的字节单元(整数个字节、有限个字节)。
不同类型的数据占据不同数目的字节单元(比如,PC机DOS环境下一个整数占2个字节,一个实数占4个字节)。
所有数据都是以二进制数的补码形式表示的。
当要表示一个数据的正负号时,总是用该数据所占字节单元的所有位中最高一位表示数的符号(0表示正,1表示负)。
Q014Ø什么叫“定点数”和“浮点数”?
(数据)(定点数)(浮点数)
A014Ø在计算机中,小数点位置固定的数被称为定点数。
定点数有定点整数和定点小数两种。
定点整数:
小数点默认为在一个二进制数最低位的后面。
如图所示:
定点小数:
小数点默认为在一个二进制数最高位(符号位)的后面。
在计算机中,既有整数部分又有小数部分的数被称为浮点数。
第一章C语言基础知识
Q015Ø什么是“C”?
(C)
A015Ø在现代社会中,组织处理信息的能力是成功的关键。
设计计算机的目的就是为了快速而有效地处理大量信息。
但是除非有人告诉计算机该干什么和怎么干,否则它什么事情也不能做。
这就是计算机编程语言诞生的原因,而C语言就属于一种计算机编程语言。
它是一种能够让软件工程师与计算机之间进行有效对话的介于汇编语言和高级语言之间的编程语言。
C语言非常灵活而且适应性强。
自1970年诞生之日起,它一直被用来开发各种各样的程序,包括用于微控制器的固化软件、操作系统、应用程序和图形程序。
Q016Ø什么是“C++”?
(C++)
A016ØC++是C语言改进之后的产物。
这种语言最初被称为“带类的C”(Cwithclass)。
它增加了一些特性,其中最重要的特性就是引入了“类”。
“类”是根据面向对象的程序设计(OOD)思想来创建的,它能使代码便于重复使用。
C++语言完全兼容C语言,学好C有助于C++的学习。
Q017Ø如何学习“C”?
(C)
A017Ø学习和掌握一门编程语言的最终途径是用这门语言编写程序。
事实上,在编写程序之前和之后也有很多很重要的工作要做。
总的来说,遵循这样一个过程是必有收获的,即:
读别人写的程序→自己动手写程序→调试这个程序直到成功。
这就如同下围棋:
打棋谱→亲自下棋→复盘。
Q018Ø什么是计算机程序?
(程序)
A018Ø计算机程序主要由两部分组成:
数据与指令。
在一个计算机程序当中,数据和指令总是在满足语法规则的前提下,由程序员按照某种组织形式安排好它们,从而来描述对某个具体问题的已经预先制定出来的解决方法和步骤。
程序员使用数据来描述他要操作的信息,使用指令来描述操作的方法、过程和步骤。
Q019Ø什么叫“源程序”?
(程序)
A019Ø源程序特指用汇编语言或高级语言编写出来的,计算机不能够直接识别并执行的数据和代码的集合。
源程序必须经过某种“翻译”过程才能变成计算机能够识别的指令。
这个“翻译”过程对于汇编语言源程序叫做“汇编”,对于高级语言源程序有“编译”或“解释”两种翻译方法。
C语言源程序采用是“编译”的方法。
Q020Ø什么是“编译器”?
(编译器)
A020Ø从根本上说,计算机不能直接识别和执行有高级语言编写的“源程序”,因此必须使用一种称之为“翻译程序”的程序,把“源程序”翻译成二进制形式的“目标程序”。
而“编译器”就是这些“翻译程序”当中的一种。
C语言就是一种“编译”语言,即是说,用C语言写出的源程序必须经过“C编译器”的编译才能变成二进制的代码。
Q021Ø我怎么能得到C的“编译器”?
(编译器)
A021Ø世界上有很多厂商和团体开发了很多的“C编译器”,有商业版本的,也有完全免费的。
比较有名的C编译器有MicrosoftC,TurboC,BorlandC,WatcomC,GNUC等等。
商业版本的编译器往往性能更好,所附带的函数库也更丰富,但是需要花钱购买。
因此,如果主要目的是为了学习C语言,那么完全可以使用免费的C编译器。
比如TurboC和GNUC。
你可以在有关公司的网站上或者很多有关C语言的个人网站上下载这些免费的编译器。
另外一点,由于C++是完全兼容C的,所以你也可以使用C++编译器来编译你的C源程序。
同样,你也可以在互联网上下载到免费的C++编译器,比如Inprise公司(原Borland公司)的C++Builder编译器。
Q022ØC程序的基本结构和特点是什么?
(C程序)(程序结构)
A022Ø1.一个C程序是由函数构成的。
C语言又被称作“函数式语言”。
函数可能是系统库函数或用户自定义函数。
使用函数构成程序可以容易实现结构化程序设计方法。
2.一个C程序中必须有一个main函数,而且只能有一个。
无论主函数位于程序的何处,程序都由它开始执行。
3.一个函数由两部分组成:
函数原型和函数体。
函数原型确定函数名,形参数量和类型,函数的返回值及其类型;而函数体包含在一对{}中,由若干语句组成以实现函数功能。
4.每个C语句必须以分号结束。
5.可以用/* */(块注释符)在程序中任何地方作注释。
注释的内容不会被编译。
6.C程序的书写格式很自由。
Q023Ø什么是“函数”?
(函数)
A023Ø函数是按照一定语法规则被封装好了的,能够完成特定功能的一段代码模块。
使用函数构成程序可以容易实现结构化程序设计方法。
Q024Ø什么是“系统库函数”和“用户自定义函数”?
(函数)
A024Ø系统库函数是指随同某个版本的C编译器一起发布的已经实现了的函数集合。
用户往往不能得到这些函数的源代码,但是可以在自己的程序里调用这些函数从而实现相应的功能。
不同公司、不同版本的C编译器所附带的库函数不尽相同,但是所有的C编译器都会附带一个被称之为“标准库函数”的函数库。
因此,在使用标准库函数编程时,可以不考虑编译器的版本问题,因为所有的编译器都支持它们。
另外也有一些独立软件供应商会提供第三方的需要单独购买的具有特定功能的函数库。
而用户自定义函数是指用程序员自己编写的完成所需功能的函数。
比如,每个C程序中都包含的main函数就是一个用户自定义函数。
Q025ØC语言有哪些“系统库函数”?
(函数)
A025Ø每个版本的编译器都会发送对所附带的库函数的分类列表和字母顺序列表以及详细说明手册。
另外,也可以查找编译器所附带的在线帮助系统来寻求信息。
还可以购买有关专家编写的函数使用手册。
如果是标准库函数的话,你可以在互联网上找到它们的使用说明。
Q026Ø什么是main函数?
(main函数)(主函数)
A026Ø在C程序当中,main函数是一个具有特定名称和特殊地位的用户自定义函数。
无论主函数位于源程序的何处,程序都从它的第一个语句开始执行,到执行完最后一个语句结束。
在main函数的函数体中,通过调用系统库函数或其它的用户自定义函数来完成整体的功能。
而其它的自定义函数是不能调用main函数的。
Q027ØC程序中,如何定义一个函数?
(函数)
A027Ø定义一个函数包括定义函数头和定义函数体。
格式如下:
函数值类型函数名(函数形参列表)
{
函数体
}
函数头指示了该函数与其它函数不同的唯一的函数名,执行该函数时所必须提供的输入信息,以及函数执行结束后得到的值的类型。
函数体包含若干个语句来具体实现该函数的功能。
Q028ØC程序中,函数体为什么要包含在大括号而不是其它的括号当中?
(函数)
A028Ø函数体总要包含在一对特定的符号中以形成封装的模块。
其它的高级语言可能使用的是其它的符号,而C语言中就是使用的大括号。
这是规定。
Q029Ø什么叫“语句”和“语句结束符”?
(语句)(语句结束符)
A029Ø一个语句就是一条命令。
一个语句在编译后会变成很多条机器指令,告诉计算机做什么事情。
语句可以很简单,也可以很复杂。
为了区分程序中的若干个语句,每种语言都必须指定一个符号来标示语句的结束,这个符号就叫语句结束符。
C语言中的语句结束符是分号。
又是规定。
Q030Ø什么叫“注释”?
(注释)
A030Ø注释是指在源程序中,对代码本身以及代码所设计的相关信息进行说明和注解的字符序列。
为了区别源程序中的注释内容和正式的内容,必须用某种界定符号包围注释。
Q031Ø在编写计算机源程序中,为什么要添加“注释”?
(注释)
A031Ø现代计算机的运行速度已经很快,所以对计算机程序的要求从原来的程序大小、算法效率、编程的技巧性等等已经转变为程序的可读性和可维护性。
而添加适当的注释是保证和增强程序可读性和可维护性的最重要的手段之一。
对大型的程序尤其如此。
对没有注释或注释不科学的程序进行维护和二次开发,其代价和成本是无法估计阿。
因此,对程序员来讲,一开始就养成给程序写注释的习惯是至关重要的,这已经成为评价一个程序员水平高低的重要标准。
Q032Ø在C程序中,如何添加“注释”?
(注释)
A032ØC语言中,用成对出现的/**/来告诉编译器,包含在/**/之间的所有内容都是注释。
编译器在对源程序进行编译时,将忽略和跳过这些内容。
Q033Ø对于C程序的书写格式有何规定?
(格式)
A033ØC程序的书写格式是很自由的。
你只要不把一个完整的符号或一个常量拆开,其它的都可以随便安排。
Q034Ø在编写计算机源程序时,为什么要遵循一定的书写规范?
(格式)
A034Ø原因很简单也很重要:
保证和增强程序的可读性和可维护性。
一幅漂亮的书法会使人赏心悦目,可一幅涂鸦则会使人雅兴大减。
Q035Ø关于良好的书写规范和编码习惯,有何建议?
(格式)
A035Ø只是建议,并非规定,但事实上已经约定俗成:
1.适当的注释会大大增加程序的可读性和可维护性
2.一行尽量只写一个语句
3.使用有规则的缩进式代码排列方式
4.在需要的地方加上一些空行
5.起有意义和易于分辨的符号名
Q036ØC源程序是如何运行的?
(C程序)(运行)
A036Ø
Q037Ø什么是IDE?
(IDE)(集成开发环境)
A037Ø是集成开发环境IntegratedDevelopEnvironment的缩写。
IDE包含了编辑器Editor、编译器Compiler、连接程序Linker、项目管理程序ProjectManager、调试器Debugger、在线帮助系统OnlineHelpSystem和其它一些辅助开发工具OtherTools。
用户的所有开发工作都可以在一个IDE中完成。
Q038Ø怎么学习使用IDE?
(IDE)(集成开发环境)
A038Ø最好的方法就是查看IDE自带的在线帮助系统。
绝大多数的IDE都带有详尽的帮助系统,对IDE本身的组成、功能和使用有详细的说明。
除此之外,帮助系统中还包含对所有库函数和辅助工具的使用说明。
因此,一定要学会看帮助。
当然,这对你的计算机英语水平有较高要求。
Q039Ø什么叫“预编译”?
(预编译)
A039Ø在对源程序进行正式编译之前所做的一些处理工作叫做预编译。
最常见的预编译工作就是用include包含文件和用define进行符号替换。
C源程序中,所有的预编译命令都由#号开头。
使用预编译命令,可以提供C语言本身不包含的一些扩充功能。
Q040Ø什么叫“编译”?
(编译)
A040Ø将高级语言源程序翻译成二进制代码的目标程序的一种方法和过程。
完成这个过程的是一个专门的程序,叫“编译器”。
Q041Ø什么叫“连接”?
(连接)
A041Ø将编译后的二进制目标程序和有关函数库进行连接并打包成可执行程序的过程叫做连接。
完成这个过程的是一个专门的程序,叫“连接器”。
Q042Ø什么叫“调试”?
(调试)
A042Ø一个程序永远不可能一次就完全写正确,总会存在这样那样的错误。
有些错误属于简单的语法错误,有些错误属于复杂的逻辑错误,有些错误直到程序运行时才有可能发现。
检查并排除所有这些错误直到程序完全正确的过程就叫调试。
编写一个大型的程序,往往有一半的时间用在了调试工作上,因此,学习调试的方法,积累调试的经验时一个程序员必须要经历的过程。
Q043Ø用C语言只能写在DOS下运行的程序吗?
(C)
A043Ø当然不是。
不管是DOS和WINDOWS,还是Unix和Linux,或者其它的操作系统,你所需要的就是属于那个操作系统的C或C++“编译器”,你就可以用C语言编写在那个操作系统下运行的程序。
当然,不同的操作系统下,由于程序运行的原理不相同,因此编程的原理会有所不同。
Q044Ø除了C程序设计的书籍外,还有更多学习C语言的资源吗?
(C)(学习)
A044Ø有,那就是INTERNET。
你只要在某个搜索引擎中输入诸如“C语言”、“C教程”、“C源码”之类的关键字,就会搜索到成百上千的网站和网页。
国外关于C语言教程和C语言编程的网站就更多了。
学会使用并用好这些资源,你很快就会变成一个C语言高手。
第二章算法基础知识
Q045Ø什么叫“算法”?
(算法)
A045Ø算法,简单的说就是为解决一个问题而采取的方法和步骤。
一个实际问题如果需要通过编写计算机程序来解决的话,就必须首先制定出解决该问题的算法。
对于同一个问题可能存在着不同的解决方法和步骤,也就是说有不同的算法。
所以确定算法时,在保证正确有效的前提下,应该尽量提高算法的效率和质量。
另外,我们更关心的是专门针对计算机编程而制定的算法,而不是普通的一般意义上的算法。
Q046Ø能否举例说明什么是“计算机算法”?
(算法)
A046Ø例如编程序求1×2×3×4×5×…×10。
对于这样一个具体问题,我们可以得到不止一个的算法。
算法1:
直接写一个乘法表达式来计算,即
S1:
prod=1×2×3×4×5×6×7×8×9×10
这个算法的结果虽然是正确的,但是这样的解决方法和步骤显然不是有效合理的。
因为如果问题变成了求1×2×3×4×5×…×100,或者变成了1×3×5×7×9×…×101,那么这种方法就不适用了。
算法2:
利用编程语言中“变量”的概念,每次计算一个乘法并把结果保存在该变量中,下次再用这个变量去乘以下一个数,即
S1:
prod=1
S2:
prod=prod×2
S3:
prod=prod×3
S4:
prod=prod×4
S5:
prod=prod×5
……
S10:
prod=prod×10
这个算法的结果也是正确的,比算法1简洁一些,但是仍然不是有效合理的,同样的问题就在于算法不通用。
算法3:
利用“变量”的概念的同时,再利用“循环”的解决方法,可以实现真正的计算机算法
S1:
prod=1
S2:
n=1
S3:
prod=prod×n
S4:
n=n+1
S5:
如果n≤10,则返回到S3;否则,结束
这个算法具有通用性、灵活性。
因为只要是同样的类似的问题,那么这个算法是不需要作大的改动的。
而且所有计算机语言都有实现“循环”的控制语句,因此这个算法就是我们所说的有效的正确的计算机算法。
Q047Ø一个计算机算法应该有什么样的特性?
(算法)
A047Ø一个算法应具有以下特点:
(1)有穷性:
一个算法的步骤必须是合理有限的
(2)确定性:
算法中的每一个步骤应当是确定的,而不应该是含糊的、模棱两可的
(3)有零个或多个输入:
执行算法是需从外界取得必要的信息
(4)有一个或多个输出:
执行一个算法后应该有必要的结果
(5)有效性:
算法中的每一个步骤都必须是能有效成立和有效执行,并得到确定结果的。
Q048Ø如何表示一个计算机算法?
(算法)(算法的表示)
A048Ø一个算法制定好后,总要通过某种方式把它表示出来,以便自己和其他人阅读理解。
通常,可以通过“自然语言”、“流程图”、“伪代码”、“计算机语言”等方法来描述一个计算机算法。
自然语言就是人们日常使用的语言,可以是英语、汉语或其它语言。
用自然语言表示算法通俗易懂,但文字冗长,含义不太严格,容易出现“歧义性”。
此外,用自然语言表示包含分支和循环的算法也不方便。
因此,最常见的计算机算法表示方法就是“流程图”。
用“计算机语言”来描述算法实际上就是我们通常所说的编程序,即程序实际上就是对一个算法的描述。
“伪代码”是用介于自然语言和计算机语言之间的文字和符号来描述算法。
它如同一篇文章。
自上而下地写下来。
每一行(或几行)表示一个基本操作。
它不用图形符号。
因此书写方便。
格式紧凑,也比较好懂,便于向计算机语言算法(即程序)过渡。
Q049Ø如何用流程图表示一个计算机算法?
(算法的表示)(流程图)
A049Ø流程图是用一些事先规定好的具有某种含义的图框和流程线来表示算法中的步骤和各种操作。
这是用传统流程图表示的求1×2×3×4×5×…×10的算法:
用流程图表示算法直观形象,逻辑清晰,但是占用篇幅较多,
尤其当算法比较复杂时,画流程图既费时又不方便,而且当算
法不断改动时,流程图的修改也非常麻烦,因此流程图宜用于
表示一个完成的最终算法。
流程图有很多种类型,最常见的是传统流程图和N-S流程图。
传统流程图中由于对流程线的使用没有严格限制,所有很容易
造成流程图的混乱和无规律。
Q050Ø什么是基本程序结构?
(程序结构)
A050Ø为了提高算法的质量,使算法设计和阅读方便,必须限制传统流程图当中流程线的滥用,即不允许无规律的使流程转向,只能顺序的进行下去。
但是,一个算法当中难免会包含一些分支和重复而不可能全部由一个一个步骤顺序向下构成。
为了解决这个问题,人们规定出几种基本程序结构,然后由这些基本程序结构按一定规律组成一个算法结构,整个算法的描述则是由上而下的将各个基本结构顺序排列起来而成的。
基本程序结构有三种,分别是顺序结构、分支结构和重复结构。
流程图如下。
用这三种基本结构就可以表示任何复杂的算法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 语言程序设计 基本 知识点 解答