免费智能真题库 > 历年试卷 > 程序员 > 2011年下半年 程序员 上午试卷 综合知识
  第30题      
  知识点:   程序设计语言的数据成分   对象类   算术运算   运算精度
  关键词:   表达式   对象   浮点型   双精度   算术运算   整型变量   整型        章/节:   软件基础知识       

 
在C程序中,若表达式中的算术运算对象类型不同,则需要先统一为相同类型后再进行计算。例如,表达式“a-b”中,若a是双精度浮点型变量,b是整型变量,为了尽可能保证运算精度,通常进行的处理是(30)。
 
 
  A.  读取b的值并转换为双精度浮点型数据,然后进行两个浮点数的相减运算,变量b的值不变
 
  B.  读取a的值并转换为整型数据,然后进行两个整数的相加减运算,变量a 的值不变
 
  C.  将b重新定义为双精度浮点型变量(其值自动转换为双精度型数据),再进行两个浮点数的相减运算
 
  D.  将a重新定义为整型变量(其值自动转换为整型数据),再进行两个整数的相减运算
 
 
 

 
  第30题    2013年上半年  
   24%
高级程序设计语言都会提供描述 (28) 、(29)控制成分中有顺序结构、选择结构、 (30) 。
  第29题    2013年上半年  
   53%
高级程序设计语言都会提供描述 (28) 、(29)控制成分中有顺序结构、选择结构、 (30) 。
  第28题    2011年上半年  
   23%
在程序运行过程中,(28)时可能需要进行整型数据与浮点型数据之间的强制类型转换。
①访问数组元素 ②进行赋值运算
③..
   知识点讲解    
   · 程序设计语言的数据成分    · 对象类    · 算术运算    · 运算精度
 
       程序设计语言的数据成分
        程序设计语言包括语法、语义、语用三个方面。语法表示程序的结构,即表示构成语言的各记号间的组合规则;语义表示程序的含义,即表示按照各种方法所使用的各个记号的特定含义;语用表示程序与使用者的关系。
        程序设计语言的数据成分指的是一种程序设计语言的数据类型。数据是程序操作的对象,具有存储类、类型、名称、作用域和生存期等属性,使用时要为它分配内存空间。数据名称由用户通过标识符命名,标识符是由字母、数字和下画线组成;类型说明数据占用内存的大小和存放形式;存储类说明数据在内存中的位置和生存期;作用域则说明可以使用数据的代码范围;生存期说明数据占用内存的时间范围。从不同角度可将数据进行不同的划分。
        1)常量和变量
        按照程序运行时数据的值能否改变,数据分为常量和变量。程序中的数据对象可以具有左值和右值。左值指存储单元(或地址、容器),右值是指值(或内容)。变量具有左值和右值,在程序运行的过程中其右值可以改变;常量只有右值,在程序运行的过程中其右值不能改变。
        2)全局量和局部量
        按数据的作用域范围,数据可分为全局变量和局部变量。系统为全局变量分配的存储空间在程序运行的过程中一般是不改变的,而为局部变量分配的存储单元在程序运行的过程中是动态改变的。
        3)数据类型
        按照数据组织形式的不同可将数据分为基本类型、用户定义类型、构造类型及其他类型。
 
       对象类
        在面向对象数据库中,类是一系列相似对象的集合,对应于E-R模型中的实体集概念。类是面向对象系统和数据库系统之间最重要的连接。首先,类直接说明了一个实例及其所属类之间的实例关系;其次,类提供了构成查询的基础;再次,类可以用来增加面向对象数据库的语义完整性;最后,类提出了所有对象的属性和方法的规格说明,便于生成对象。
        每个对象是它所在类的一个实例。类的概念类似于关系模式,类的属性类似于关系模式中的属性;对象类似于元组,类的一个实例对象类似于关系中的一个元组。如果把类本身看作一个对象,则称之为类对象。与其相关的属性集和方法集适用于该类对象而不适用于该类的实例,这样的属性和方法称之为类属性和类方法。一个类的类属性常常用来描述该类的实例的聚集特性。例如,所有学生实例的“平均年龄”就是一个聚集特性的例子。
 
       算术运算
               二进制算术运算规则
               (1)加法:二进制加法的进位规则是“逢二进一”。
               0+0=01+0=10+1=11+1=0(有进位)
               (2)减法:二进制减法的借位规则是“借一当二”。
               0-0=01-0=11-1=00-1=1(有借位)
               (3)乘法:
               0×0=01×0=00×1=01×1=1
               机器数的加减运算
               在计算机中,可以只设置加法器,而将减法运算转换为加法运算来实现。
               (1)补码加法的运算法则是:和的补码等于补码求和,即[X+Y]=[X]+[Y]
               (2)补码减法的方法是:差的补码等于被减数的补码加上减数取负后的补码。因此,在补码表示中,可将减法运算转换为加法运算,即[X-Y]补=[X]+[-Y]
               (3)由[X]求[-X]的方法是:[X]的各位取反(包括符号位),末尾加1。
               溢出及判定
               在确定了运算的字长和数据的表示方法后,数据的范围也就确定了。一旦运算结果超出所能表示的数据范围,就会发生溢出。发生溢出时,运算结果肯定是错误的。
               只有当两个同符号的数相加(或者是相异符号数相减)时,运算结果才有可能溢出。
               机器数的乘除运算
               在计算机中实现乘除法运算,通常有如下三种方式。
               (1)纯软件方案,在只有加法器的低档计算机中,没有乘、除法指令,乘除运算是用程序来完成的。这种方案的硬件结构简单,但进行乘除运算时速度很慢。
               (2)在现有的能够完成加减运算的算术逻辑单元ALU的基础上,通过增加少量的实现左、右移位的逻辑电路,来实现乘除运算。与纯软件方案相比,这种方案增加硬件不多,而乘除运算的速度有了较大提高。
               (3)设置专用的硬件阵列乘法器(或除法器),完成乘(除)法运算。该方案需付出较高的硬件代价,可获得最快的执行速度。
               浮点运算
                      浮点加减运算
                      设有浮点数X=M×2iY=N×2j,求X±Y的运算过程如下。
                      (1)对阶。使两个数的阶码相同。令K=|i-j|,把阶码小的数的尾数右移K位,使其阶码加上K
                      (2)求尾数和(差)。
                      (3)结果规格化并判溢出。若运算结果所得的尾数不是规格化的数,则需要进行规格化处理。当尾数溢出时,需要调整阶码。
                      (4)舍入。在对结果进行右移时,尾数的最低位将因移出而丢掉。另外,在对阶过程中也会将尾数右移使最低位丢掉。这就需要进行舍入处理,以求得最小的运算误差。舍入处理的方法如下。
                      ①截断法。将要保留的数据末位右边的数据全都截去,不管数据是0还是1。
                      ②末位恒1法。将要保留的末位数据恒置1,不管右移丢掉的数据是0还是1。
                      ③0舍1入法。舍去的数据为0时,保持末位原始状态。若舍去的数据为1,则将末位加1。这类似于十进制中的四舍五入。但当数据为0.1111…1,即在尾数全为1的特殊情况下,这种舍入会再次产生溢出。遇到这种情况可用硬件判断,并在舍去1时末位不再加1。
                      (5)溢出判别。以阶码为准。若阶码溢出(超过最大值),则运算结果溢出;若阶码下溢(小于最小值),则结果为0,否则结果正确无溢出。
                      浮点乘除运算
                      浮点数相乘,其积的阶码等于两乘数的阶码相加,积的尾数等于两乘数的尾数相乘。浮点数相除,其商的阶码等于被除数的阶码减去除数的阶码,商的尾数等于被除数的尾数除以除数的尾数。乘除运算的结果都需要进行规格化处理并判断阶码是否溢出。
 
       运算精度
        运算精度即计算机处理信息时能直接处理的二进制数据的位数,位数越多,精度就越高。参与运算数据的基本位数通常用基本字长来表示。PC的字长,已由8088的准16位(运算用16位,I/O用8位)发展到现在的32位、64位。大中型计算机一般为32位和64位。巨型机一般为64位。在单片机中,目前主要使用的是8位和16位字长。
   题号导航      2011年下半年 程序员 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第30题    在手机中做本题