《c语言程序设计》基本知识点解答(二)

上传人:wt****50 文档编号:33958666 上传时间:2018-02-19 格式:DOC 页数:18 大小:194KB
返回 下载 相关 举报
《c语言程序设计》基本知识点解答(二)_第1页
第1页 / 共18页
《c语言程序设计》基本知识点解答(二)_第2页
第2页 / 共18页
《c语言程序设计》基本知识点解答(二)_第3页
第3页 / 共18页
《c语言程序设计》基本知识点解答(二)_第4页
第4页 / 共18页
《c语言程序设计》基本知识点解答(二)_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《《c语言程序设计》基本知识点解答(二)》由会员分享,可在线阅读,更多相关《《c语言程序设计》基本知识点解答(二)(18页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计基本知识点解答(二)第三章 数据类型、运算符和表达式Q051 什么是“数据类型”?(数据类型)A051 数据类型就是指数据在计算机中保存和运算时的组织和形式。实际问题当中本来就有若干种不同类型的数据,因此用来解决这些实际问题的计算机编程语言中自然应该有对应的数据类型来描述这些数据。比如最基本的数据类型就是整数、实数,另外还有非数值型的数据类型,如字符串。一个计算机程序中用到的所有数据都必须具有某种类型。Q052 什么是“运算符”?(运算符)A052 运算符是指一些具有规定运算功能的特定的符号。如+、-、*、/、%等等。这里的运算功能可能是我们比较熟悉的运算比如算术运算(加减乘除)

2、 、逻辑运算(与或非)或比较运算(大于小于等于) ,也可能是其他一些在计算机语言当中特有的运算如加 1 减 1 运算、位运算等等。C 语言共有 34 种运算符。Q053 什么是“表达式”?(表达式) (优先级) (结合性)A053 表达式是按照运算符的性质,用运算符把数据连接起来以达到数据运算目的而构成的式子。写表达式的最终目的是要进行计算它求出它的值。求解表达式的过程是由计算机完成的,因此,要想得到正确的结果,就必须写出正确的表达式。而一个表达式中往往包含多个运算符,所以必须熟悉每一种运算符的性质(优先级别和结合性),才能写出有正确求解结果的表达式。Q054 C 语言有哪些数据类型?(数据类

3、型)A054 C 语言中的所以数据类型如下图所示: 的数 据类 型基 本 类 型构 造 类 型整 型 单 精 度 型双 精 度 型数 组 类 型结 构 体 类 型实 型共 用 体 类 型指 针 类 型字 符 型枚 举 类 型空 类 型 的数 据类 型基 本 类 型构 造 类 型整 型 单 精 度 型双 精 度 型数 组 类 型结 构 体 类 型实 型共 用 体 类 型指 针 类 型字 符 型枚 举 类 型空 类 型Q055 什么是“常量”?(常量)A055 程序运行期间,值不能被改变的量称为常量。如果试图去改变常量的值,就肯定会出错。在 C 语言中,至少有两种方法表示一个常量,即“直接常量”和

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

5、符号常量的目的就在此。它是用一些符号来代替程序当中出现的常量。从而使得程序的可读性和可维护性大大增强。Q058 C 语言中,如何实现“符号常量”?(常量) (符号常量)A058 C 语言中,可以使用 #define 预处理命令来实现符号常量。例如下面的程序:#define PI 3.14159int main()float r, 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

6、; printf(体积 = %fn, v);return 0;第一步,程序第一行用 #define 预处理命令定义了一个符号常量,其名字是 PI,代表的常量值是 3.14159。第二步,在本程序以下的代码中,凡是原来直接出现 3.14159 的地方,全部换成符号 PI。这样修改后程序运行的结果和直接使用字面常量是一样的。Q059 用 #define 实现符号常量的原理是什么?(符号常量) (define)A059 实际上是一个在预处理阶段的替换过程。在前述问题的程序中,第一行的含义就是定义了一个符号名字叫做 PI,它代替的一串字符是 3.14159。然后,在对这个程序进行编译时,编译器首先启动

7、预编译器(preprocessor)对源程序进行预编译处理。当预编译器发现程序中有诸如#define 这样的预编译命令时,就对它们进行相应命令指定的处理。比如,对于#define 预编译命令,预编译器就扫描整个源程序代码,将其中所有出现的由#define 定义的符号全部替换成在#define 命令行定义的符号后出现的字符串。因此,上述程序在预编译处理后,就变成了int main()float r, c, s, v; r = 2;printf(PI = %fn, 3.14159);c = 2 * 3.14159 * r; printf(周长=%fn, c);s = 3.14159 * r * r

8、; printf(面积=%fn, s);v = 4 * 3.14159 * r * r * r / 3; printf(体积=%fn, v);return 0;因此就如同直接使用字面常量一样了。Q060 使用“符号常量”的好处是什么?(符号常量)A060 两个主要的好处:(1) 从所起的符号名字中可以清楚地看出该常量的含义,从而做到“见名知意” ,避免“幻数” 。比如上述程序中阅读此程序的人很容易的由符号名 PI 知道这个常量的含义就是圆周率。当然要想达到这样的效果,前提是所起符号名称必须和实际含义相符合。因为符号是可以任意命名的,你完全可以用这样的#define 命令 #define PRI

9、CE 3.14159 来定义一个符号 PRICE 代替 3.14159,但是这样作就失去符号常量的存在意义了。(2) 在需要修改常量的值时可以做到“一改全改” ,减少工作量。如果一个常量的值发生了变化,如果原来是用直接常量实现的,那么很显然程序的修改工作量就很大,尤其是当这个常量出现次数很多的时候。但是,如果用符号常量来实现的话,那么只需要改动一个地方,就是#define 命令这个地方,而程序其它部分完全不需改动,因为在进行预编译时新的常量值会被正确的替换进去。Q061 为什么在 Q058 的程序中,第 5 行的第一个 PI 没有被替换成 3.14159?(符号常量)A061 在预编译器对源程

10、序代码当中出现的符号常量进行替换时,并不是凡是发现有相同的符号名就无条件替换。至少有两种情况下,这个替换不会发生:第一:这个符号出现在双引号当中。双引号括起来的叫做字符串常量,要的就是其中包含的原义字符,所以不会被替换;第二:这个符号不是单独且完整出现的,而是另一个符号的一部分。比如,定义了符号常量 PI,那么代码中如果有另一个符号叫 API, ,那么替换不会发生,即不会变成 A3.14159。Q062 什么是“预编译”?(预编译)A062 预编译也叫编译预处理:是指在对源程序进行正式编译之前所作的一些处理。这些处理是由预处理命令指定的。源程序经过预处理后,再由编译程序进行正式的编译。预处理命

11、令虽然用在 C 程序中,但它并不是语言本身的组成部分,不能用 C 编译器直接对它进行编译,必须由预编译器来处理。预处理命令都是以符号“#”开头的。Q063 什么是“变量”?(变量)A063 程序运行期间,值可以被改变的量称为变量。C 程序允许把数值存放在变量中,每个变量都由一个变量名来标识。每个变量都必须有一个变量类型。每个变量根据它的类型不同,在内存中占据一定数目的字节单元,该变量的值就存放在这些内存单元中。Q064 “变量”的本质是什么?(变量)A064 变量的本质就是命名的内存单元,因此它的值可以被改变。所谓改变变量的值实际上是改变变量所占内存单元中的内容,因为变量名和内存单元的地址、变

12、量值和内存单元的内容是相对应的。如图所示:123prod变 量 名 prod 实 际上 是 一 个 符 号 地 址变 量 prod所 占据 的 内 存 单 元123是 变 量prod的 变 量 值 内 存 单 元的 地 址内 存 单 元的 内 容变 量 名 实 际上 是 一 个 符 号 地 址变 量 所 占据 的 内 存 单 元是 变 量的 变 量 值 内 存 单 元的 地 址内 存 单 元的 内 容Q065 变量的名字是否可以随意命名?(变量)A065 当然不是。任何计算机编程语言中,关于标志符号的命名总是有规定的。变量名就属于标志符的一种,其它的标志符还有符号常量名、数组名、函数名、构造类

13、型名等等。C 语言中,变量(标识符)的命名规定是: 只能由大小写字母、下划线和数字组成; 开头的第一个字符只能是大小写字母或下划线; 大小写是敏感的; 不能与 C 语言中的关键字重复; 名字在其作用范围内必须是唯一的; 名字的长度不能超过系统的规定。具体的长度限制随系统不同而不同。Q066 在 A065 中提到的“关键字”是什么?(关键字)A066 关键字(Keyword) ,也叫保留字(Reserve word) ,是计算机语言当中具有预先固定的命名的、能完成指定功能的符号。一种编程语言的很大一部分功能就是由关键字来完成的。C 语言一共有 32 个关键字。其中,部分是用于定义变量类型的,如

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

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

16、,告知编译器该变量的名字、类型和存储类别,这样编译器才能正确编译Q069 那么,如何定义变量?(定义变量)A069 变量定义具有三个目的: 定义变量名; 定义变量类型; 向程序员描述该变量。变量定义的一般格式是:type name; /*comment */类型 名字; /* 注释 */例如:int age; /* the age of student */float score; /* the score of student */float average; /* the average of score */long number; /* the number of student */double distance; /* between earth & moon */char UserSele

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号