您的位置: 网站首页 > 程序开发 > 数据结构 > 第1章 绪论 > 【1.5 上 机 实 验】

1.5 上 机 实 验

 

1.5 

1.5.1  实验内容

1)函数参数的传值调用和传址调用。

2)数组元素相加。

3)矩阵相乘。

注意:在第一次做“数据结构”实验之前,要在硬盘上建立好自己的工作目录,专门用来存储所做的实验程序及其相关信息,以后每次做实验最好还是采用这个目录。

1.5.2  实验指导

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 referencei=%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;                                 

   }

}