一、编程题(请在以下题目中任选2题作答,每题30分,共60分)
(一) 程序编写题
对于二维整数数组A[m][n],对下列三种情况,分别编写相应的函数。
1. 求数组所有边缘元素的数值和。
int sum1(int A[M][N],int m ,int n)
{
2.求从A[0][0]开始的互不相邻的所有元素的和
注:一个元素的八个方向上的第一个元素均为相邻元素。
int sum2 (int A[M][N] , int m , int n)
{
3. 假定m=n,并为偶数,请分别计算正、反两条对角线上的元素值之和。
int sum3(int A[M][N] , int n)
{
(十三) 解答题
设有一个求解汉诺塔(Hanoi)的递归算法
voidHANOI (int n , int peg1 , int peg2 , int peg3)
{
if (n= =1)
printf(”move %d to %d\n”,peg1,peg3);
else
{
HANOI (n-1, peg1, peg3, peg2);
printf(”move %d to %d\n”,peg1,peg3);
HANOI (n-1, peg2, peg1, peg3) ;
}
}
假定采用HANOI(3,1,2,3)去调用上述算法,则写出整个输出结果的前四行内容。