搜档网
当前位置:搜档网 › chapter7_6e数组

chapter7_6e数组

chapter7_6e数组
chapter7_6e数组

TRUE/FALSE

1.The indexed variables (members) of an array must be integers.

ANSWER: FALSE

2.The locations of the various indexed variables in an array can be spread out all

over the memory.

ANSWER: FALSE

3.The following array declaration is legal

double scores[]={0.1,0.2,0.3};

ANSWER: true

4.Arrays can be passed to functions.

ANSWER: TRUE

5.Arrays can be returned from a function.

ANSWER: FALSE

6.If a function is expecting a pass by reference parameter, you can pass an index

variable from an array of the same base type to that function.

ANSWER: TRUE

7.When you have a function that expects an array, it should also expect the size of

the array or the number of indexed variables with valid data.

ANSWER: TRUE

8.The following function declaration guarantees the values in the array argument

are not changed.

void function1(int array[], int numElements);

ANSWER: FALSE

9.The following function will work with any size integer array.

void function1(int array[], int numElements);

ANSWER: TRUE

10.If you use the const modifier in a function declaration, you do not include it in the

function definition.

ANSWER: FALSE

Short Answer

1.Write the code to declare a two dimension array of integers with 10 rows and 20

columns.

ANSWER: int array[10][20];

2.Write the code to declare an array of 10 doubles named list;

ANSWER: double list[10];

3.The modifier that guarantees that an array argument will not be changed is called

______.

ANSWER: const

4.How many indexed variables does the following array have?

int myArray[]={1,2,3,6,5,4,7,1,2};

ANSWER: 9

5.How many indexed variables does the following array have?

int myArray[12]={1,2,3,6,5,4,7,1,2};

ANSWER: 12

6.Write the declaration for a function named funct1 that expects an array of floats,

the number of elements in the array and does not return any value.

ANSWER: void funct1(float myArray[], int numElements);

7.If you put a value in the square brackets of a one-dimension array parameter, this

value is _________ by the compiler.

ANSWER: ignored

8.If your index used to access the indexed variables of the array has the value of a

non-existent index, this is called _________

ANSWER: Index out of range, Index out of bounds, or illegal.

9.The computer remembers the address of which indexed variable(s) in an array?

______

ANSWER: the first

10.A computer's memory consists of numbered locations called __________.

ANSWER: bytes

11.In the expression

double score[10];

double is called the ___________ of the array

ANSWER: base type

12.In the expression

cout << score[i] << endl;

i is called the

ANSWER: index or subscript

13.An _______ is used to process a collection of data all of which is the same type

ANSWER: array

14.The individual variables that comprise an array are called __________

ANSWER: indexed variables, subscripted variables, or elements.

15.Indexes are numbered starting at _________

ANSWER: 0

Multiple Choice

1.What are the valid indexes for the array shown below?

int myArray[25];

a.0-25

b.0-24

c.1-25

d.1-24

ANSWER: B

2.What is wrong with the following code?

float scores[10], total;

a.Cannot declare regular and array variables together.

b.Arrays must be integers

c.The 10 should be replaced with a variable name, whose value is input

from the user

d.Nothing.

ANSWER: D

3.Given an array named scores with 25 elements, what is the correct way to access

the 25th element?

a.scores+25

b.scores[24]

c.scores[25]

d.scores[last]

ANSWER: B

4.Why should you use a named constant for the size of an array?

a.Readability of code

b.Makes changes to the program easier

c.Helps reduce logic errors

d.All of the above

ANSWER: D

例如: const int B=10;

int y[B];

B一定要定义为const,否则错误.

5.Given an array of integers of size 5, how does the computer know where the 3rd

indexed variable is located?

a.It adds 3 to the base address of the array

b.It adds space for 3 integers to the base address of the array

c.It remembers where all the indexed variables of the array are locate

d.

d.None of the above

ANSWER: B

6.What is wrong with the following code fragment?

const int SIZE =5;

float scores[SIZE];

for(int i=0; i<=SIZE;i++)

{

cout << "Enter a score\n";

cin >> scores[i];

}

a.Array indexes start at 1 not 0

b.Arrays must be integers

c.Array indexes must be less than the size of the array

d.Should be cin >> scores[0];

ANSWER: C

7.Which of the following declare an array of 5 characters, and initializes them to

some known values?

a.char array[5]={'a','b','c','d','e'};

b.char array[4]={'a','b','c','d','e'};

c.char array[5]={''}; 我认为这个才对 char array[5]={' '};

d.char array[]={'a','b','d','e'};

e. A and C

f. B and D

g.all of the above

ANSWER: E

8.If you declare and initialize an integer array of size 10, but only list 5 values, what

values are stored in the remaining 5 indexed variables?

a.0

b.garbage

c.0.0

d.'0'

ANSWER: A

9.Arrays are always passed to a function using

a.pass by value

b.pass by reference

c.pass by array

d.you cannot pass arrays to a function

ANSWER: C

10.Give the following declarations, which of the following is a legal call to this

function?

int myFunction(int myValue);

int myArray[1000];

a.cout << myFunction(myArray);

b.cout << myFunction(myArray[0]);

c.myArray = myFunction(myArray);

d.myArray[1] = myFunction(myArray[0]);

e. A and B

f. A and C

g. B and D

ANSWER: G

11.Which of the following function declarations correctly expect an array as the first

argument?

a.void f1(int array, int size);

b.void f1(int& array, int size);

c.void f1(int array[100], int size);

d.void f1(float array[], int size);

e.All of the above

f. C and D

g. A and B

ANSWER: F

12.Which of the following function declarations correctly guarantee that the function

will not change any values in the array argument?

a.void f1(int array[], int size) const;

b.void f1(int array[], int size);

c.void f1(int &array, int size);

d.void f1(const int array[], int size);

e.void f1(int array[], const int size);

ANSWER: D

13.The following function definition has an error in it. What line is this error on?

0. void f1(const double array[], int size)

1. {

2. int i=0;

3. while(i< size)

4. {

5. array[i] += 2;

6. cout <

7. i++;

8. }

9. }

a.0

b. 2

c. 5

d. 6

e. 2

ANSWER: C

14.Which of the following function declarations could be used to input data from the

keyboard into the array?

a.void input(int array[], int &numElements, int MAX_SIZE);

b.void input(int array[], int numElements, int MAX_SIZE);

c.void input(int &array[], int numElements, int MAX_SIZE);

d.int array[] input(int array[], int &numElements, int MAX_SIZE);

ANSWER: A

15.If we want a search function to search an array for some value and return either

the index where the value was found, or -1 if not found, which of the following prototypes would be appropriate?

a.void search(const int array, int target, int numElements);

b.void search(const int array, int target);

c.int search(const int array[], int numElements);

d.int search(const int array[], int target, int numElements);

ANSWER: D

16.Given the following function definition for a search function, and the following

variable declarations, which of the following are appropriate function invocations?

const int SIZE=1000;

int search(const int array[], int target, int numElements);

int array[SIZE], target, numberOfElements;

a.search(array[0], target, numberOfElements);

b.result=search(array[0], target, numberOfElements);

c.result=search(array, target, numberOfElements);

d.result=search(array, target, SIZE);

ANSWER: C

17.Given the following function definition, will repeated calls to the search function

for the same target find all occurrences of that target in the array?

int search(const int array[], int target, int numElements)

{

int index=0;

bool found=false;

while((!found) && (index < numElements))

{

if(array[index] == target)

found=true;

else

index++;

}

if(found==true)

return index;

else

return -1;

}

a.Yes

b.No

c.Impossible to tell without looking at the values of the array

d.It depends on the value of target.

ANSWER: B

18.Given the following function definition, what modifications need to be made to

the search function so that it finds all occurrences of target in the array?

int search(const int array[], int target, int numElements)

{

int index=0;

bool found=false;

while((!found) && (index < numElements))

{

if(array[index] == target)

found=true;

else

index++;

}

if(found==true)

return index;

else

return -1;

}

a.Add another parameter to indicate where to stop searching

b.Add another parameter to indicate where to start searching

c.This already can find all occurrences of a given target

d.Have the function return the whole array

ANSWER: B

19.Which sort algorithm does the following outline define?

for i between 0 and number_used-1 inclusive

put the ith smallest element at array[i]

a.sequential

b.selection

c.bubble

d.swap

ANSWER:B

20.Given the following class and array declaration, how would you print out the age

of the 10th person in the array?

class personClass

{

public:

void setAge(int newAge);

void setGender( char newGender);

void setSalary(float newSalary);

int getAge();

char getGender();

float getSalary();

private:

int age;

char gender;

float salary;

};

personClass people[100];

a.cout << people[10];

b.cout << people[9];

c.cout << people[9].age;

d.cout << people[9].getAge();

ANSWER: D

21.Which of the following array declarations are legal?

a.int array[10];

b.int size;

cin >> size;

int array[size];

c.int array[]={0,0,0};

d.const int size=9;

int array[size];

e.All of the above

f.All but C

g.All but B

ANSWER: G

22.Which of the following function declarations will accept the following two-

dimension array?

int pages[10][30];

a.void f1(int pages[][], int size);

b.void f1(int pages[][30], int size);

c.void f1(int pages[10][], int size);

d.void f1(int& pages, int size);

ANSWER: B

23.If you need a function that will handle multi-dimensional arrays, you must specify

the following sizes inside the square brackets.

a.All the sizes

b.All sizes except the last dimension

c.All sizes except the first dimension

d.None of the sizes

ANSWER: C

24.What is the output of the following code fragment?

int array[4][4], index1, index2;

for(index1=0;index1<4;index1++)

for(index2=0;index2<4;index2++)

array[index1][index2]=index1 + index2;

for(index1=0;index1<4;index1++)

{

for(index2=0;index2<4;index2++)

cout << array[index1][index2] << " ";

cout << endl;

}

a.0 1 2 3

1 2 3 4

2 3 4 5

3 4 5 6

b.0 1 2 3

0 1 2 3

0 1 2 3

0 1 2 3

c.0 0 0 0

1 1 1 1

2 2 2 2

3 3 3 3

d.0 0 0 0

0 1 2 3

0 2 4 6

0 3 6 9

ANSWER: A

25.Which of the following correctly declare an array that can hold up to 3 rows of 5

columns of doubles?

a.int array[3],[5];

b.int array[3][5];

c.float array[3][5];

d.float array[3,5];

ANSWER: C

26.Which of the following function declarations can be passed the following array?

char myArray[6][8];

a.void f1(char a[][], int sizeOfFirst);

b.void f1(char a[][8], int sizeOfFirst);

c.void f1(char& a, int sizeOfFirst);

d.void f1(char a[6][8], int sizeOfFirst);

e. B and D

f. A and D

ANSWER: E

27.A two dimension array can also be thought of as

a. a table

b.an array of arrays

c. a file

d.none of the above

e. A and C

f. A and B

ANSWER: F

28.Which of the following statements are true?

a.Array elements may be user-defined types (structs or classes)

b.If a function is expecting a variable of the base type of the array, then you

can pass an element of the array to the function.

c.All of the above.

d.None of the abov

e.

ANSWER: C

29.Which of the following will correctly assign all the values in one array to the

other array? (Assume both arrays are of the same type and have SIZE elements)

a.array1=array2;

b.array1[]=array2;

c.for(i=0;i

array1[i]=array2[i];

d.for(i=0;i

array1[]=array2[];

ANSWER: C

30.Which of the following will read values from the keyboard into the array?

(Assume the size of the array is SIZE).

a.cin >> array;

b.cin >> array[];

c.cin >> array[SIZE];

d.for(i=0;i

cin >> array[i]; ANSWER: D

Excel数组公式应用详解

Excel数组公式应用详解 一、什么是数组公式? 直接看微软的解释,也许并不是很容易理解,根据个人的理解,让其更直白一点,可以这样简单理解,引用了数组(可以是一个或多个数值,或是一组或多组数值),并在编辑栏可以看到以“{}”括起来的公式就是数组公式。而数组公式的作用就是对一组(单个数据可以看成是一组)、多组数据进行处理,然后得到想要的结果。 二、如何输入数组公式 既然数组公式是以“{}”括起来的,那是不是在编辑栏在公式的两端分别输入“{}”就可以了呢?答案是否定的,在Excel中要输入数组公式,必须以特定的方法来输入,算是告诉Excel,我们这里输入的是数组公式。 在某个单元格输入数组公式的方法如下: 1.在编辑栏输入完整的公式,并使编辑栏仍处在编辑状态; 2.按下Ctrl+Shift+Enter快捷键 经过以上两步操作以后,编辑栏会自动脱离编辑状态,并且选中单元格后,在编辑栏可以看到公式的两端有“{}”符号标记,而双击进入公式的编辑状态时,你会发现“{}”符号是不存在的。 三、数组公式有什么用? 这里做了一个类似微软官网上的例子,这里详细说明一下用法及好处。 以上面图片中的内容为例,假设我一共买了三支股票,其股份及买入价格分别如图中所示,现在我要计算我的总股本。

正常情况下我应该如何做?在B4输入“=B2*B3”,然后填充至D4单元格,这样B4、C4、D4就分别是每一支股票的股本了,然后在B5单元格再输入“=SUM(B4:D4)”,这样总股本就出来了。 上面的计算过程可以说一点问题没有,也绝对正确。但是试想一下,如果类似的数据有很多,如果不是计算我自己买的几支股票而是其他类似情况的数据处理的时候,采用上面的方法时,其工作量可想而知了。 我们再回到第一幅图中的公式“{=SUM(B2:D2*B3*D3}”,此公式便是一个典型的数组公式的应用,此公式的作用就是计算B2*B3、C2*C3以及D2*D3的和。而 B2:D2*B3*D3便是一个数组,其中包含三个元素,各元素的值就分别是各项的乘积。 为了更好的验证数组说法,分别在B4、C4、D4单元格中分别输入=B2*B3、=C2*C3、=D2*D3,B7、C7、D7单元格中全部输入=B2:D2*B3:D3,结果如下图所示。

Excel中数组函数的运用(excel函数)

Excel中数组公式非常有用,尤其在不能使用工作表函数直接得到结果时,数组公式显得特别重要,它可建立产生多值或对一组值而不是单个值进行操作的公式。 输入数组公式首先必须选择用来存放结果的单元格区域(可以是一个单元格),在编辑栏输入公式,然后按Ctrl+Shift+Enter组合键锁定数组公式,Excel将在公式两边自动加上花括号“{}”。注意:不要自己键入花括号,否则,Excel认为输入的是一个正文标签。 编辑或删除数组公式编辑数组公式时,须选取数组区域并且激活编辑栏,公式两边的花括号将消失,然后编辑公式,最后按Ctrl+Shift+Enter键。选取数组公式所占有的区域后,按Delete键即可删除数组公式。 下面介绍几个使用数组公式的例子。 1、有如图所示的工作表,需分别计算出两个班的男女生人数。 单元格B22中的公式为:=SUM((A2:A20="一1班")*(D2:D20="男")),再按Ctrl+Shift+Enter键。这个数组公式创建了一个条件求和,若在A2:A20中出现值“一1班”,则返回一个逻辑值“true”,值为“1”,若D2:D20中出现值“男”,也返回一个逻辑值“true”,值为“1”,则数组公式将与其相对

应的值相乘并累加,若是1*1=1,则加1,若是其他就返回1*0=0或是0*1=0,则累加零。(虽然数组A2:A20和D2:D20均在工作表中,但其相乘的数组A2:A20和D2:D20不在工作表中,因此必须使用数组公式)。 求女生一1班的女生人数也是一样,把公式改为:=SUM((A2:A20="一1班")*(D2:D20="女")),当然,要是求一2班或是其它班级的男女生数也是一样的道理,请大家自己领会。 2、在统计考试成绩的时候,有可能要统计出90—100分、80—89分、70—79分等各分数段的人数,并计算出占班级人数的百分比,这时也要利用数组公式更方便。同样以下面的工作表作为例子:要求出分数在70—80分之间的人数。 在B24中输入一个数组公式:=SUM((E2:E20>=70)*(E2:E20<=80)) ,再按Ctrl+Shift+Enter键。这个数组公式也创建一个条件求和,若是E2:E20当中的成绩>=70并且E2:E20当中的成绩<=80,返回1*1=1,sum就累加1,反之1*0=0或是0*1=0,就累加0。如图:

彻底教会你使用Excel数组公式

彻底教会你使用Excel数组公式 Excel中函数、公式大家都非常熟了,但“数组公式”你是否听过、用过?什么是数组公式呢?根据微软官方给出的解释,数组公式:数组公式对一组或多组值执行多重计算,并返回一个或多个结果。 一、什么是数组公式? 直接看微软的解释,也许并不是很容易理解,根据个人的理解,让其更直白一点,可以这样简单理解,引用了数组(可以是一个或多个数值,或是一组或多组数值),并在编辑栏可以看到以“{}”括起来的公式就是数组公式。而数组公式的作用就是对一组(单个数据可以看成是一组)、多组数据进行处理,然后得到想要的结果。 二、如何输入数组公式 既然数组公式是以“{}”括起来的,那是不是在编辑栏在公式的两端分别输入“{}”就可以了呢?答案是否定的,在Excel中要输入数组公式,必须以特定的方法来输入,算是告诉Excel,我们这里输入的是数组公式。 在某个单元格输入数组公式的方法如下: 1.在编辑栏输入完整的公式,并使编辑栏仍处在编辑状态; 2.按下Ctrl+Shift+Enter快捷键 经过以上两步操作以后,编辑栏会自动脱离编辑状态,并且选中单元格后,在编辑栏可以看到公式的两端有“{}”符号标记,而双击进入公式的编辑状态时,你会发现“{}”符号是不存在的。 三、数组公式有什么用? 这里做了一个类似微软官网上的例子,这里详细说明一下用法及好处。

以上面图片中的内容为例,假设我一共买了三支股票,其股份及买入价格分别如图中所示,现在我要计算我的总股本。 正常情况下我应该如何做?在B4输入“=B2*B3”,然后填充至D4单元格,这样B4、C4、D4就分别是每一支股票的股本了,然后在B5单元格再输入“=SUM(B4:D4)”,这样总股本就出来了。 上面的计算过程可以说一点问题没有,也绝对正确。但是试想一下,如果类似的数据有很多,如果不是计算我自己买的几支股票而是其他类似情况的数据处理的时候,采用上面的方法时,其工作量可想而知了。 我们再回到第一幅图中的公式“{=SUM(B2:D2*B3*D3}”,此公式便是一个典型的数组公式的应用,此公式的作用就是计算B2*B3、C2*C3以及D2*D3的和。而 B2:D2*B3*D3便是一个数组,其中包含三个元素,各元素的值就分别是各项的乘积。 为了更好的验证数组说法,分别在B4、C4、D4单元格中分别输入=B2*B3、=C2*C3、=D2*D3,B7、C7、D7单元格中全部输入=B2:D2*B3:D3,结果如下图所示。

(完整word版)数据结构第五章数组和广义表习题及答案

习题五数组和广义表 一、单项选择题 1.常对数组进行的两种基本操作是() A.建立与删除 B. 索引与修改 C. 查找与修改 D. 查找与索引2.对于C语言的二维数组DataType A[m][n],每个数据元素占K个存储单元,二维数组中任意元素a[i,j] 的存储位置可由( )式确定. A.Loc[i,j]=A[m,n]+[(n+1)*i+j]*k B.Loc[i,j]=loc[0,0]+[(m+n)*i+j]*k C.Loc[i,j]=loc[0,0]+[(n+1)*i+j]*k D.Loc[i,j]=[(n+1)*i+j]*k 3.稀疏矩阵的压缩存储方法是只存储 ( ) A.非零元素 B. 三元祖(i,j, aij) C. aij D. i,j 4. 数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是( )。 A. 1175 B. 1180 C. 1205 D. 1210 5. A[N,N]是对称矩阵,将下面三角(包括对角线)以行序存储到一维数组T[N(N+1)/2]中,则对任一上三角元素a[i][j]对应T[k]的下标k是()。 A. i(i-1)/2+j B. j(j-1)/2+i C. i(j-i)/2+1 D. j(i-1)/2+1 6. 用数组r存储静态链表,结点的next域指向后继,工作指针j指向链中结点,使j 沿链移动的操作为( )。 A. j=r[j].next B. j=j+1 C. j=j->next D. j=r[j]-> next 7. 对稀疏矩阵进行压缩存储目的是()。 A.便于进行矩阵运算 B.便于输入和输出 C.节省存储空间 D.降低运算的时间复杂度 8. 已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是( )。 A. head(tail(LS)) B. tail(head(LS)) C. head(tail(head(tail(LS))) D. head(tail(tail(head(LS)))) 9. 广义表((a,b,c,d))的表头是(),表尾是()。 A. a B.() C.(a,b,c,d) D.(b,c,d) 10. 设广义表L=((a,b,c)),则L的长度和深度分别为()。 A. 1和1 B. 1和3 C. 1和2 D. 2和3 11. 下面说法不正确的是( )。 A. 广义表的表头总是一个广义表 B. 广义表的表尾总是一个广义表 C. 广义表难以用顺序存储结构 D. 广义表可以是一个多层次的结构 二、填空题 1.通常采用___________存储结构来存放数组。对二维数组可有两种存储方法:一种是以___________为主序的存储方式,另一种是以___________为主序的存储方式。 2. 用一维数组B与列优先存放带状矩阵A中的非零元素A[i,j] (1≤i≤n,i-2≤j≤i+2),B 中的第8个元素是A 中的第_ _行,第_ _列的元素。

数组的定义

一维数组的定义方式 在C语言中使用数组必须先进行定义。 一维数组的定义方式为:类型说明符数组名[常量表达式]; 其中:类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。 例如: int a[10]; 说明整型数组a,有10个元素。 float b[10],c[20]; 说明实型数组b,有10个元素,实型数组c,有20个元素。 char ch[20]; 说明字符数组ch,有20个元素。 (数组的定义和对变量的定义是一致的,可以连续在一行定义:float b[10],c[20];) 对于数组类型说明应注意以下几点: 数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。 数组名的书写规则应符合标识符的书写规定。 数组名不能与其它变量名相同。 例如: main() { int a; float a[10]; …… } 是错误的。 方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a[0],a[1],a[2],a[3],a[4]。 不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。 例如:

#define FD 5 main() { int a[3+2],b[7+FD]; …… } 是合法的。但是下述说明方式是错误的。 main() { int n=5; int a[n]; …… } 允许在同一个类型说明中,说明多个数组和多个变量。 例如: int a,b,c,d,k1[10],k2[20]; 注意:1定义数组长度的常量表达式的结果必须是整形常量(包括字符) 2 在执行C99标准的编译系统中,允许对数组进行动态定义,即C99规定了可变长数组的存在。 但是,目前执行C99标准的编译器尚不普遍,在C89中是不允许使用可变长数组的,main和被调用函数中都不可以使用(如VC++6.0) 二维数组的定义 前面介绍的数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。在实际问题中有很多量是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多

习题2参考答案及数组广义表习题

习题2参考答案 一、单项选择题 1.A 2.A 3.D 4.C 5.D 6.A 7.B 8.B 9.C 10.A 11.D 12.B 13.C 14.B 15.C 16.C 17.B 18.D 19.C 20.A 二、填空题 1.线性 2.n-i+1 3.相邻 4.前移,前,后 5.物理存储位置,链域的指针值 6.前趋,后继 7.顺序,链接 8.一定,不一定 9.线性,任何,栈顶,队尾,队头 10.单链表,双链表,非循环链表,循环链表 11.使空表和非空表统一;算法处理一致 12.O(1),O(n) 13.栈满,栈空,m,栈底,两个栈的栈顶在栈空间的某一位置相遇 14.2、3 15.O(1) 三、简答题 1.头指针是指向链表中第一个结点(即表头结点)的指针;在表头结点之前附设的结点称为头结点;表头结点为链表中存储线性表中第一个数据元素的结点。若链表中附设头结点,则不管线性表是否为空表,头指针均不为空,否则表示空表的链表的头指针为空。 2.线性表具有两种存储结构即顺序存储结构和链接存储结构。线性表的顺序存储结构可以直接存取数据元素,方便灵活、效率高,但插入、删除操作时将会引起元素的大量移动,因而降低效率:而在链接存储结构中内存采用动态分配,利用率高,但需增设指示结点之间关系的指针域,存取数据元素不如顺序存储方便,但结点的插入、删除操作较简单。 3.应选用链接存储结构,因为链式存储结构是用一组任意的存储单元依次存储线性表中的各元素,这里存储单元可以是连续的,也可以是不连续的:这种存储结构对于元素的删除或插入运算是不需要移动元素的,只需修改指针即可,所以很容易实现表的容量的扩充。 4.应选用顺序存储结构,因为每个数据元素的存储位置和线性表的起始位置相差一个

第 5 章 数组和广义表答案

第 5 章数组和广义表 一、选择 1.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存 储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则 a85的地址为( B )。 A. 13 B. 33 C. 18 D. 40 2. 设有数组A[i,j],数组的每个元素长度为3字节,i的值为1 到 8 ,j的值为1 到10,数组从内存首地址BA开始顺序存放,当用以 列为主存放时,元素A[5,8]的存储首地址为(B )。 A. BA+141 B. BA+180 C. BA+222 D. BA+225 3. 假设以行序为主序存储二维数组A=array[1..100,1..100],设 每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=( B )。 A. 808 B. 818 C. 1010 D. 1020 4. 二维数组A的元素都是6个字符组成的串,行下标i的范围从0 到8,列下标j的范围从0到9。从供选择的答案中选出应填入下列 关于数组存储叙述中()内的正确答案。 (1)存放A至少需要( E )个字节; (2)A的第8列和第5行共占( A )个字节; (3)若A按行存放,元素A[8,5]的起始地址与A按列存放时的元 素( B )的起始地址一致。 供选择的答案: (1)A. 90 B. 180 C. 240 D. 270 E. 540

(2)A. 108 B. 114 C. 54 D. 60 E. 150 (3)A. A[8,5] B. A[4,9] C. A[5,8] D. A[0,9] 5. 若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括 主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中, 则在B中确定aij(i

数据结构(C语言版)第5章 数组和广义表

第 5 章数组和广义表 一、选择题 为第一元素,其 1.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a 11 的地址为()。【燕山大学 2001 一、2 存储地址为1,每个元素占一个地址空间,则a 85 (2分)】 A. 13 B. 33 C. 18 D. 40 2. 有一个二维数组A[1:6,0:7] 每个数组元素用相邻的6个字节存储,存储器按字节编址, 那么这个数组的体积是(①)个字节。假设存储数组元素A[1,0]的第一个字节的地址是0, 则存储数组A的最后一个元素的第一个字节的地址是(②)。若按行存储,则A[2,4]的第 一个字节的地址是(③)。若按列存储,则A[5,7]的第一个字节的地址是(④)。就一般情 况而言,当(⑤)时,按行存储的A[I,J]地址与按列存储的A[J,I]地址相等。供选择的 答案:【上海海运学院 1998 二、2 (5分)】 ①-④: A.12 B. 66 C. 72 D. 96 E. 114 F. 120 G. 156 H. 234 I. 276 J. 282 K. 283 L. 288 ⑤: A.行与列的上界相同 B. 行与列的下界相同 C. 行与列的上、下界都相同 D. 行的元素个数与列的元素个数相同 3. 设有数组A[i,j],数组的每个元素长度为3字节,i的值为1 到8 ,j的值为1 到10, 数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为( )。 A. BA+141 B. BA+180 C. BA+222 D. BA+225 【南京理工大学 1997 一、8 (2分)】 4. 假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存 储单元,基地址为10,则LOC[5,5]=()。【福州大学 1998 一、10 (2分)】 A. 808 B. 818 C. 1010 D. 1020 5. 数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000 的内存单元中,则元素A[5,5]的地址是( )。【南京理工大学 2001 一、13 (1.5分)】 A. 1175 B. 1180 C. 1205 D. 1210 6. 有一个二维数组A[0:8,1:5],每个数组元素用相邻的4个字节存储,存储器按字节编址, 假设存储数组元素A[0,1]的第一个字节的地址是0,存储数组A的最后一个元素的第一个字 节的地址是(①)。若按行存储,则A[3,5]和 A[5,3]的第一个字节的地址是(②) 和(③)。若按列存储,则A[7,1]和A[2,4]的第一个字节的地址是(④)和(⑤)。【上海海运学院 1996 二、1 (5分)】 ①-⑤:A.28 B.44 C.76 D.92 E.108 F.116 G.132 H.176 I.184 J.188 7. 将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[1‥298]中,A中元 (即该元素下标i=66,j=65),在B数组中的位置K为()。供选择的答案: 素A 6665 A. 198 B. 195 C. 197 【北京邮电大学 1998 二、5 (2分)】 8. 二维数组A的元素都是6个字符组成的串,行下标i的范围从0到8,列下标j的范圈 从1到10。从供选择的答案中选出应填入下列关于数组存储叙述中()内的正确答案。(1)存放A至少需要()个字节; (2)A的第8列和第5行共占()个字节; (3)若A按行存放,元素A[8,5]的起始地址与A按列存放时的元素()的起始地

第5章 数组和广义表 自测题含答案

第5章 数组和广义表 自测题含答案 一、单选题 1. 假设有二维数组A 6×8,每个元素用相邻的6个字节存储,存储器按字节编址。已知A 的起始存储位置(基地址)为1000,则数组A 的体积(存储量)为 288 B ;末尾元素A 57的第一个字节地址为 1282 ;若按行存储时,元素A 14的第一个字节地址为 (8+4)×6+1000=1072 ;若按列存储时,元素A 47的第一个字节地址为 (6×7+4)×6+1000)=1276 。 2. 〖00年计算机系考研题〗设数组a[1…60, 1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为 8950 。 答:不考虑0行0列,利用列优先公式: LOC(a ij )=LOC(a c 1, c 2)+[(j-c 2)*( d 1-c 1+1)+i-c 1)]*L 得:LOC(a 32,58)=2048+[(58-1)*(60-1+1)+32-1]]*2=8950 3. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的 行下标 、 列下标 和 元素值 。 4. 求下列广义表操作的结果: (1) GetHead 【((a,b),(c,d))】=== (a, b) ; //头元素不必加括号 (2) GetHead 【GetTail 【((a,b),(c,d))】】=== (c,d) ; (3) GetHead 【GetTail 【GetHead 【((a,b),(c,d))】】】=== b ; (4) GetTail 【GetHead 【GetTail 【((a,b),(c,d))】】】=== (d ) ; 二、单选题( A )1. 〖01年计算机系考研题〗假设有60行70列的二维数组a[1…60, 1…70]以列序为主序顺序存储,其基地址为10000,每个元素占2个存储单元,那么第32行第58列的元素a[32,58]的存储地址为 。(无第0行第0列元素) A.16902 B.16904 C.14454 D.答案A, B, C 均不对 答:此题与填空题第8小题相似。(57列×60行+31行)×2字节+10000=16902 ( B )2. 设矩阵A 是一个对称矩阵,为了节省存储,将其下三角部分(如下图所示)按行序存放在一维数组B[ 1, n(n-1)/2 ]中,对下三角部分中任一元素a i,j (i ≤j), 在一维数组B 中下标k 的值是: A.i(i-1)/2+j-1 B.i(i-1)/2+j C.i(i+1)/2+j-1 D.i(i+1)/2+j ??????????????=n n n n a a a a a a A ,2 ,1,2 ,21,21 ,1

C#2010 获取数组元素数与类型

C#2010 获取数组元素数与类型 在C#中,数组的元素数量是数组的一种只读属性,是无法进行修改的。在执行检索和遍历等操作时,经常需要获取数组的元素数量,并检测数组的元素数据类型。1.直接获取数组元素数 C#的System.Array类提供了两种方法以及两种属性,分别用于获取整数型和长整数型的数组元素数量。如果开发者需要获取整数型变量的数组元素数量,可以使用GetLength()方法或Length属性,其使用方法分别如下。 ArrayName.GetLength(); ArrayName.Length; 在上面的代码中,ArrayName表示数组的实例名称,其分别使用了GetLength()方法和Length属性获取数组的元素数量,这两种方式获取的数组元素数量是完全相同的。GetLength()方法返回的是一个int整型变量,而Length属性的值也是int整型变量。 如果数组的元素数量较多,则开发者还可以使用其他两种方式,获取长整型的数组元素数量,其分别需要使用GetLongLength()方法和LongLength属性,代码如下所示。 ArrayName.GetLongLength(); ArrayName.LongLength; GetLongLength()方法和LongLength属性的使用方法与之前介绍的两种方式完全相同,其区别仅仅是返回的数组元素数量数据类型为long长整型。 例如,定义一个数组并赋值,然后即可使用Length属性输出该数组的数组元素数量,代码如下。 string[] strArray = new string[3]; strArray[0] = "清华大学出版社"; strArray[1] = "北京"; strArray[2] = "中华人民共和国"; Console.WriteLine(strArray.Length);//输出3 2.获取多维或锯齿数组元素数 GetLength()等方法与Length等属性不仅可以获取简单的一维数组数组元素长度,也可以获取多维数组中的每一维,以及锯齿数组中每一个元素数组的元素数量。 需要注意的是,在获取多维数组的元素数时,Length属性和LongLength属性获取的并非每个维度的数组元素,仅能获取数组中所有的元素数量。例如,在下面的多维数组中,获取的就是数组所有的元素数,代码如下。 string[,] strArray = new string[3,2]; strArray[0,0] = "清华大学出版社";

数组和广义表习题

习题五数组 5.1 单项选择题(其中A[i..j]表示下标从i到j) 1. 常对数组进行的两种基本操作是__C__。 A. 建立与删除 B. 索引和修改 C. 查找和修改 D. 查找与索引 2. 二维数组M的成员是6个字符(每个字符占一个存储单元,即一个字节)组成的串,行下标i的范围从0到8,列下标j的范围从1到10,则存放M 至少需要__①D__个字节;M 的第8列和第5行共占__②B__个字节。 ①A. 90 B. 180 C. 240 D. 540 ②A. 108 B. 114 C. 54 D. 60 4. 数组A中,每个元素A的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放在存储器内,存放该数组至少需要的单元数是__C__。 A. 80 B. 100 C.240 D. 270 5. 数组A中,每个元素A的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放在存储器内,该数组按行存放时,元素A[8][5]的起始地址为_C___。 A. SA+141 B. SA+144 C. SA+222 D. SA+225 (7*10+4)*3=222 6. 数组A中,每个元素A的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放在存储器内,该数组按列存放时,元素A[5][8]的起始地址为_B___。 A. SA+141 B. SA+180 C. SA+222 D. SA+225 (7*8+4)*3=180 5.2 填空题(将正确的答案填在相应的空中,其中A[i,j]表示下标从i到j) 1. 已知二维数组A[m][n]采用行序为主方式存储,每个元素占k个存储单元,并且第一个元素的存储地址是LOC(A[0][0]),则A[i][j]的地址是_ LOC(A[0][0]) +(i*n+j)*k___。 2. 二维数组A[10][20]采用列序为主方式存储,每个元素占一个存储单元并且A[0][0]的存储地址是200,则A[6][12]的地址是_326___。200+(12*10+6)*1=326 3. 二维数组A[10..20][5..10]采用行序为主方式存储,每个元素占4个存储单元,并且A[10][5]的存储地址是1000,则A[18][9]的地址是__1000+(8*6+4)*4=1208__。 5.3算法设计题: 1. 假设稀疏矩阵A和B均以三元组顺序表作为存储结构。试写出矩阵相加的算法,另设三元组表C存放结果矩阵。 2. 假设系数矩阵A和B均以三元组顺序表作为存储结构。试写出满足以下条件的矩阵相加

Labview 第三章 数据类型:数组、簇和波形

第三章数据类型:数组、簇和波形 3.1概述 数组是同类型元素的集合。一个数组可以是一维或者多维, 如果必要,每维最多可有231-1个元素。可以通过数组索引访 问其中的每个元素。索引的范围是0到n –1,其中n是数组 中元素的个数。图3-1所显示的是由数值构成的一维数组。注 意第一个元素的索引号为0,第二个是1,依此类推。数组的元 素可以是数据、字符串等,但所有元素的数据类型必须一致。 图3-1数组示意图 簇(Cluster)是另一种数据类型,它的元素可以是不同类 型的数据。它类似于C语言中的stuct。使用簇可以把分布在流 程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤 程度。减少子VI的连接端子的数量。 波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。 3.2数组的创建及自动索引 3.2.1创建数组 一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(数或字符串等)。 如果需要用一个数组作为程序的数据源,可以选择 Functions?Array?Array Constant,将它放置在流程图中。 然后再在数组框中放置数值常量、布尔数还是字符串常量。下图 显示了在数组框放入字符串常量数组的例子。左边是一个数组 壳,中间的图上已经置入了字符串元素,右边的图反映了数组的 第0个元素为:”ABC”,后两个元素均为空。 图3-1数组的创建

在前面板中创建数组的方法是,从Controls模板中选择 Array & Cluster,把数组放置在前面板中,然后选择一个对象 (例如数值常量)插入到数组框中。这样就创建了一个数值数组。 也可以直接在前面板中创建数组和相应的控制对象,然后将 它们复制或者拖曳到流程图中,创建对应的常数。 还有很多在流程图中创建和初始化数组的方法,有些功能函 数也可以生成数组。 3.2.2数组控制对象、常数对象和显示对象 通过把数组与数值、布尔数、字符串或者簇组合在一起,可以在前面板和流程图中创建任何一种控制对象、常数对象和显示对象。数组元素不能是数组、图表或者图形。如果您想查看一些数组的例子,请查看Examples\General\arrays.llb中的例子。 3.2.3自动索引 For循环和While循环可以自动地在数组的上下限范围内编索引和进行累计。这些功能称为自动索引。在启动自动索引功能以后,当把某个外部节点的任何一维元素连接到循环边框的某个输入通道时,该数组的各个元素就将按顺序一个一个地输入到循环中。循环会对一维数组中的标量元素,或者二维数组中的一维数组等编制索引。在输出通道也要执行同样的工作――数组元素按顺序进入一维数组,一维数组进入二维数组,依此类推。 在默认情况下,对于每个连接到For循环的数组都会执行 自动索引功能。可以禁止这个功能的执行,方法是用鼠标右键单 击通道(输入数组进入循环的位置),在快捷菜单中选择Disable Indexing。 练习3-1创建一个自动索引的数组 目的:使用For 循环的自动索引功能创建数组,并用一个图形(Graph)显示该数组。 前面板 图3-2练习3-1的面板 1.打开一个新的前面板。 2.选择Controls?Array & Cluster,在前面 板中放置一个数组。设置它的标签为Waveform Array。

Row函数在Excel数组公式中的应用

Row函数在Excel数组公式中的应用 绝大多数excel数组公式中,都可以看到row函数的身影,那么row函数到底起到什么作用呢?我们先从它的基本用法说起。 Row函数,返回一个引用的行号。row() 返回公式所在行的行数,如:在第5行输入=row() 公式返回值 5 row(单元格地址) 返回单元格所在的行数,如:Row(b6) 返回B6单元格所在的行6row(开始行数:终止行数) 返回引用行的行数,结果是一组数。如:Row(1:3) 返回第1:3行所在的行数{1;2;3},由于在单元格中只能显示一个值,所以显示的结果是1生成这样的序号有用吗?当然有!【例1】求1+2+3+4+5 ...+100=?公式{=sum(row(1:100))} 公式说明:用row函数生成 1~100的序号,然后用sum求和. 由于是数组运算,需要在公式表达式最后按ctrl+shift+enter键确认输入。 【例2】截取字符串中最前面的数字,假设A1单元格中值为353.54优质公式: =LOOKUP(9^9,--LEFT(A1,ROW(1:99)))公式说明: row(1:99) 生成{1 ;2;3;4;5;6...99} 的序号,共99个数字 --Left(A1,ROW(1:99),分别从左边截取1个,2个,3个 (99) 个字符, 99是该字符可能的最大长度,如果字符最长20个,也可以用row(1:20)。由于截取后是文本,所以需要用--把文

本型数字转换成数值,把纯文本转换成错误值。 {3;35;353;#V ALUE!;#V ALUE!;#V.......;#V ALUE!} Loookup (9^9,) 用一个足够大的数在截取后的数字中进行查找,返回最后一个数字。由于lookup可以支持数组运算,所以公式不需要按三键输入。总结:row() 函数的主要作用是生成一组序号,在后利用这组序号对另一个或一组值进行多次处理。

数组广义表答案及二叉树习题及答案

栈、队列、串、数组和广义表习题 一、选择题 1 一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是( B )。 A. 2 3 4 1 5 B. 5 4 1 3 2 C. 2 3 1 4 5 D. 1 5 4 3 2 2若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,p N,若p N是n,则p i是( D )。 A. i B. n-i C. n-i+1 D. 不确定 3 若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?( B ) A. 1和 5 B. 2和4 C. 4和2 D. 5和1 4 设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1则栈S的容量至少应该是( C )。 A. 6 B. 4 C. 3 D. 2 5 设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为( C ) A.求子串 B.联接 C.匹配 D.求串长 6 设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为( B )。 A. 13 B. 33 C. 18 D. 40 7 已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是( C )。 A. head(tail(LS)) B. tail(head(LS)) C. head(tail(head(tail(LS))) D. head(tail(tail(head(LS)))) 8 模式串t=‘abcaabbcabcaabdab’,该模式串的next数组的值为( D ),nextval数组的值为( F )。 A.0 1 1 1 2 2 1 1 1 2 3 4 5 6 7 1 2 B.0 1 1 1 2 1 2 1 1 2 3 4 5 6 1 1 2 C.0 1 1 1 0 0 1 3 1 0 1 1 0 0 7 0 1 D.0 1 1 1 2 2 3 1 1 2 3 4 5 6 7 1 2 E.0 1 1 0 0 1 1 1 0 1 1 0 0 1 7 0 1 F.0 1 1 0 2 1 3 1 0 1 1 0 2 1 7 0 1 二、填空题 1 在作进栈运算时应先判别栈是否_(1)满_;在作退栈运算时应先判别栈是否_(2)空_;当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为_(3)n_。 2 设循环队列存放在向量sq.data[0:M]中,则队头指针sq.front在循环意义下的出队操作可表示为__return(sq.data(sq.front));sq.front=(sq.front+1)%(M+1);_____,若用牺牲一个单元的办法来区分队满和队空(设队尾指针sq.rear),则队满的条件为_(sq.rear+1)%(M+1)==sq.front;_。 3 串是一种特殊的线性表,其特殊性表现在__(1) 其数据元素都是字符__;串的两种最基本的存储方式是__(2) 顺序存储__、__(3) 和链式存储__;两个串相等的充分必要条件

C语言数组知识点总结

数组 定义:数组就是有序的并且具有相同类型的数据的集合。 一维数组 1、一般形式:类型说明符数组名[常量表达式];例如: int a[10]; 元素为a[0]----a[9]、 2、常量表达式中不允许包含变量,可以包含常量或符号常量。 3、数组元素下标可以就是任何整型常量、整型变量或任何整型表达式。 4、可以对数组元素赋值,数组元素也可以参与运算,与简单变量一样使用。 5、使用数值型数组时,不可以一次引用整个数组,只能逐个引用元素。 6、需要整体赋值时只可以在定义的同时整体赋值。如 int a[10]={0,1,2,3,4,5,6,7,8,9};正确。 int a[10]; a[10]={0,1,2,3,4,5,6,7,8,9};错误。 7、可以只给一部分元素赋值。例如: int a[10]={5,8,7,6};后面没有赋值的元素值默认为0。 8、对全部数组元素赋值时可以不指定数组长度,例如: int a[10]={0,1,2,3,4,5,6,7,8,9};可以写成int a[]={0,1,2,3,4,5,6,7,8,9}; 但就是,既不赋初值,也不指定长度就是错误的。例如:int a[];错误。 二维数组 1、一般形式:类型说明符数组名[常量表达式1][常量表达式2];例如: int a[3][4];可以瞧成就是包含3个一维数组,每个一维数组里包含4个元素。一共3*4=12个元素。 所有元素为a[0][0],a[0][1],a[0][2],a[0][3] a[1][0],a[1][1],a[1][2],a[1][3] a[2][0],a[2][1],a[2][2],a[2][3] 2、与一维数组一样元素下标可以就是就是任何整型常量、整型变量或任何整型表达式。 3、需要整体赋值时只可以在定义的同时整体赋值。例如: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};正确。 int a[3][4]; a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};错误。 4、可以把所有数据写在一个花括号内。例如: int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};正确。 5、可以只对部分元素赋值。例如: int a[3][4]={{1},{5},{9}};其余未赋值的元素默认为0。 int a[3][4]={{1},{5,6}};可以瞧成就是int a[3][4]={{1,0,0,0},{5,6,0,0},{0,0,0,0}}; 6、对全部数组元素赋值时可以省略第一维长度,第二维不可以省略。例如: a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 可以写成a[][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 或者a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

Excel数组公式的神奇妙用

数组公式从入门到精通 入门篇 本主题包含三部分:入门篇、提高篇、应用篇(分中级和高级) 对于刚接触Excel数组公式的人来说,总是会感觉到它的一份神秘。又Excel的Online Help中只有很少关于它的主题,所以这种神秘感就更强了。不要紧,只要跟着我的思路走,你很快就会看清数组公式的真面目! 数组概念 对于数组概念,大家都会很熟悉,其就是一个具有维度的集合。比如:一维数组、二维数组、多维数组。数组的表示一般为“{}”所包括(一维和二维数组)。Excel中也不例外,如果你想直接表示一个数组,也必须用“{}”括起来。 数组与数组公式 在Excel中,凡是以半角符号“=”开始的单元格内容都被Excel认为是公式,其只能返回一个结果。而数组公式可以返回一个或者是多个结果,而返回的结果又可以是一维或二维的,换句话说,Excel中的数组公式返回的是一个一维或二维的数组集合。 在Excel中需要按下“Ctrl+Shift+Enter”组合键结束数组公式的输入。 为什么要用数组公式? 如果你的需要满足以下条件之一,那么采用数组公式技术可能会是你很好的选择方案。 你的运算结果会返回一个集合吗? 你是否希望用户不会有意或无意的破坏某一相关公式集合的完整性? 你的运算中是否存在着一些只有通过复杂的中间运算过程才会等到结果的运算? 看到这些另人费解的问题,你可能会摸不着头绪。不要紧,看了以下内容你也许就会明白了。 什么情况下会返回一个集合? 看一个简单的例子,选中C1:E3,输入“={"Name", "Sex", "Age"; "John", "Male", 21; "Mary", "Female", 20}”,按“Ctrl+Enter”组合键。 图1-1 (ArrayFormula_A01.bmp) 结果在C1:E3中看到的结果全是“Name”,而实际真正返回的结果应该是一个包含三行三列的二维数组,如何办?答案就是用数组公式。选中C1:E3,输入“={"Name", "Sex", "Age"; "John", "Male", 21; "Mary", "Female", 20}”,按“Ctrl+Shift+Enter”组合键。

相关主题