(1)函数参数的传值调用和传址调用。
(2)数组元素相加。
(3)矩阵相乘。
注意:在第一次做“数据结构”实验之前,要在硬盘上建立好自己的工作目录,专门用来存储所做的实验程序及其相关信息,以后每次做实验最好还是采用这个目录。
(1)函数参数的传值调用和传址调用。
· 传值调用(Call by value):主程序调用子程序时,只把实际参数的值传给子程序,故主、子程序的参数不使用相同的内存。主程序参数值不会受子程序改变的影响。
· 传址调用(Call by address(reference)):主程序调用子程序时,只把实际参数的地址传给子程序,使主、子程序的相对参数占用相同的内存地址,因此被调用程序在执行过程中若改变参数值,则相应的主程序参数值也会改变。
以下是一个以C语言为例说明参数传值方式和传址方式的程序列表:
main()
{
int i=1,j=0;
j=callvalue(i);
printf("call by value :i=%d,j=%d\n",I,j);
j=callref(&i);
printf("call by reference:i=%d,j=%d\n",I,j);
}
int callvalue(int x) /*参数以传值方式*/
{
return ++x;
}
int callref(int *x) /*参数以传址方式*/
{
return ++(*x);
}
其输出结果:
call by value :i=1,j=2
call by reference :i=2,j=2
(2)数组元素相加。
将数组中每个元素相加后返回总和。实现该算法的程序段如下所示:
int sum(int arr[],int n)
{
int i,total=0;
for(i=0;i<n;i++)
total+=arr[i];
return total;
}
(3)矩阵相乘。
矩阵相乘的定义如下:
=
其中,x1=a1*1+a2*4+a3*7
x2=a1*2+a2*5+a3*8
x3=a1*3+a2*6+a3*9,其余依此类推。
实现该算法的程序段如下所示:
void mul(int a[][],int b[][],int c[][],int n)
{
int i,j,k,sum;
for(i=0;i<n;i++)
for (j=0;j<n;j++)
{
sum=0;
for (k=0;k<n;k++)
sum=sum+a[i][k]*b[k][j];
c[i][j]=sum;
}
}