免费智能真题库 > 历年试卷 > 多媒体应用设计师 > 2011年上半年 多媒体应用设计师 上午试卷 综合知识
  第19题      
  知识点:   表达式求值   类型转换   数组
  关键词:   表达式   浮点型   强制类型转换   数据   数组   整型   类型转换        章/节:   程序设计语言       

 
在程序运行过程中,(19)时可能需要进行整型数据与浮点型数据之间的强制类型转换。①访问数组元素②进行赋值运算③对算术表达式求值④进行递归调用
 
 
  A.  ②③
 
  B.  ①②
 
  C.  ①③
 
  D.  ②④
 
 
 

 
  第62题    2015年上半年  
   47%
设栈S和队列Q的初始状态为空,元素abcdefg依次进入栈S。要求每个元素出栈后立即进入队列Q,若7个元素出队列的顺序为bdfecag,则栈..
  第5题    2014年上半年  
   37%
将多项式27+25+22+20表示为十六进制数,值为(5);表示为十进制数,值为(6) 。
  第14题    2010年上半年  
   32%
源程序中的(14)与程序的运行结果无关。
   知识点讲解    
   · 表达式求值    · 类型转换    · 数组
 
       表达式求值
        表达式求值是程序设计语言编译中的一个最基本问题。它的实现方法是栈的一个典型的应用实例。
        在计算机中,任何一个表达式都是由操作数(operand)、运算符(operator)和界限符(delimiter)组成的。其中操作数可以是常数,也可以是变量或常量的标识符;运算符可以是算术运算体符、关系运算符和逻辑符;界限符为左右括号和标识表达式结束的结束符。在本节中,仅讨论简单算术表达式的求值问题。在这种表达式中只含加、减、乘、除四则运算,所有的运算对象均为单变量。表达式的结束符为“#”。
        表达式一般分为中缀表达式和后缀表达式,具体如下:
               中缀表达式
               中缀表达式是通常使用的一种表达式,中缀表达式的计算规则如下。
               (1)括号内的操作先执行,括号外的操作后执行。如有多层括号,则先执行内层括号内的操作,再执行外括号内的操作。
               (2)先乘除,后加减。
               (3)在有多个乘除或加减运算可选择时,按从左到右的顺序执行,即优先级相同的操作符按先后次序进行。
               后缀表达式
               后缀表达式中只有操作数和操作符,它不再含有括号,操作符在两个操作数之后。它的计算规则非常简单,严格按照从左向右的次序依次执行每一个操作。每遇到一个操作符,就将前面的两个操作数执行相应的操作。
 
       类型转换
        在混合数据类型的运算过程中,系统自动进行类型转换。例如,一个int型操作数和一个long型操作数进行运算时,将int类型数据转换为long类型后再运算,结果为long型;一个float型操作数和一个double型操作数的运算结果是double型。这称为类型提升。
        在程序中也可以进行数据类型的强制转换(显式类型转换),一般形式为:
        
        需要注意,(int)(x+y)是将(x+y)转换为int型,而(int)x+y是将x转换为int型后再与y相加。对变量进行显式类型转换只是得到一个所需类型的中间变量,原来变量的类型并不发生变化。
        当不得已混合使用类型时,一个比较好的习惯是使用强制类型转换。强制类型转换可以避免编译器隐式转换带来的错误,同时也给维护人员传递一些有用信息。
 
       数组
               数组的定义及基本运算
               一维数组是长度固定的线性表,数组中的每个数据元素类型相同。n维数组是定长线性表在维数上的扩张,即线性表中的元素又是一个线性表。
               设有n维数组Ab1b2,…,bn],其每一维的下界都为1,bi是第i维的上界。从数据结构的逻辑关系角度来看,A中的每个元素Aj1j2,…,jn](1≤jibi)都被n个关系所约束。在每个关系中,除第一个和最后一个元素外,其余元素都只有一个直接后继和一个直接前驱。因此就单个关系而言,这n个关系仍是线性的。
               以下面的二维数组Am][n]为例,可以把它看成是一个定长的线性表,它的每个元素也是一个定长线性表。
               
               可将A看作一个行向量形式的线性表:
               Am*n=[[a11a12a1n][a21a22a2n]…[am1am2amn]]
               也可将A看作列向量形式的线性表:
               Am*n=[[a11a21am1][a12a22am2]…[a1na2namn]]
               数组结构的特点如下:
               (1)数据元素数目固定。一旦定义了一个数组结构,就不再有元素的增减变化。
               (2)数据元素具有相同的类型。
               (3)数据元素的下标关系具有上下界的约束且下标有序。
               在数组中通常做下面两种操作:
               (1)取值操作。给定一组下标,读其对应的数据元素。
               (2)赋值操作。给定一组下标,存储或修改与其相对应的数据元素。
               几乎所有的程序设计语言都提供了数组类型。实际上,在语言中把数组看成是具有共同名字的同一类型多个变量的集合。需要注意的是,不能对数组进行整体的运算,只能对单个数组元素进行运算。
               数组的顺序存储
               由于数组一般不作插入和删除运算,也就是说,一旦定义了数组,则结构中的数据元素个数和元素之间的关系就不再发生变动,因此数组适合于采用顺序存储结构。
               对于数组,一旦确定了它的维数和各维的长度,便可为它分配存储空间。反之,只要给出一组下标便可求得相应数组元素的存储位置,也就是说,在数据的顺序存储结构中,数据元素的位置是其下标的线性函数。
               二维数组的存储结构可分为以行为主序(按行存储)和以列为主序(按列存储)两种方法,如下图所示。
               
               二维数组的两种存储方式
               设每个数据元素占用L个单元,mn为数组的行数和列数,那么以行为主序优先存储的地址计算公式为:
               Loc(aij)=Loc(a11)+((i-1)×n+(j-1))×L
               同理,以列为主序优先存储的地址计算公式为:
               Loc(aij)=Loc(a11)+((j-l)×m+(i-1))×L
   题号导航      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 /
 
第19题    在手机中做本题