免费智能真题库 > 历年试卷 > 程序员 > 2016年上半年 程序员 上午试卷 综合知识
  第30题      
  知识点:   函数调用   数组
  关键词:   函数调用   实参   数组   形参   函数        章/节:   软件基础知识       

 
函数调用时若实参是数组名,则是将(30)传递给对应的形参。
 
 
  A.  数组元素的个数
 
  B.  数组所有元素的拷贝
 
  C.  数组空间的起始地址
 
  D.  数组空间的大小
 
 
 

 
  第28题    2020年下半年  
   26%
针对C语言源程序进行编译的过程,下面说法中正确的是( )。
  第31题    2009年上半年  
   40%
下图所示的有限自动机中,SO是初始状态,S3为终止状态,该自动机不能识别(31)。


  第66题    2015年上半年  
   22%
某html文档中有如下代码,则在浏览器中打开该文档时显示为(66).
   知识点讲解    
   · 函数调用    · 数组
 
       函数调用
        当在一个函数(称为调用函数)中需要使用另一个函数(称为被调用函数)实现的功能时,便以名字进行调用,称为函数调用。在使用一个函数时,只要知道如何调用即可,并不需要关心被调用函数的内部实现。因此,程序员需要知道被调函数的名字、返回值和需要向被调函数传递的参数(个数、类型、顺序)等信息。
        函数调用的一般形式为:
        
        在C程序的执行过程中,通过函数调用使得被调用函数得以执行。函数体中若调用自己,则称为递归调用。
        C语言采用传值方式将实参传递给形参。调用函数和被调用函数之间交换信息的方法主要有两种:一种是由被调用函数把返回值返回给调用函数,另一种是通过参数带回信息。函数调用时,实参与形参间交换信息的主要有传值调用和引用调用两种方法。
        (1)传值调用(Call by value)。若实现函数调用时实参向形参传递相应类型的值,则称为是传值调用。这种方式下形参不能向实参传递信息。
        例如,下面给出函数swap定义,其功能是交换两个整型变量值。
        
        函数调用为:swap(a,b);
        因为是传值调用,swap函数运行后只能交换x和y的值,而实参a和b的值并没有交换。
        在C语言中,要实现被调用函数对实参的修改,必须用指针作形参,调用时需要先对实参进行取地址运算,然后将实参的地址传递给指针形参。本质上仍属于传值调用。
        下面给出函数swap的定义,其功能是交换两个整型变量值。
        
        函数调用为:swap(&a,&b);
        由于形参px、py分别得到了实参变量a、b的地址,所以px指向的对象*px即为a,py指向的对象*py就是b,因此在函数中交换*px和*py的值实际上就是交换实参a和b的值,从而实现了调用函数中两个整型变量值的交换。这种方式是通过数据的间接访问来完成运算要求的。
        (2)引用调用。引用是C++中增加的数据类型,当形参为引用类型时,函数中对形参的访问和修改实际上就是针对相应实参所作的访问和改变。例如:
        
        函数调用为:swap(a,b);
        引用调用方式下调用swap(a,b)时,x、y就是a、b的别名,因此,函数调用完成后,交换了实参a和b的值。
 
       数组
               数组的定义及基本运算
               一维数组是长度固定的线性表,数组中的每个数据元素类型相同。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
   题号导航      2016年上半年 程序员 上午试卷 综合知识   本试卷我的完整做题情况  
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题    在手机中做本题