首页 > 试题广场 >

编写以下函数: (1)在一个二维数组中形成以下形式的n

[问答题]

编写以下函数:

(1)在一个二维数组中形成以下形式的n阶矩阵:

(2)去掉靠边的元素,生成新的n-2阶矩阵;

(3)求矩阵主对角线下元素之和;

(4)以方阵形式输出数组。

在main函数中调用以上函数进行测试。


推荐
#include<iostream>
using namespace std;
void create( int *&app, int n );
void del( int *&app, int *&bpp, int n );
int maindiagonal( int *&app, int n );
void output( int *&app, int );
int main()
{
int *ap = NULL, *bp = NULL, n;
  cout << "输入矩阵的阶:";
  cin >> n;
  create( ap,n );
  cout << "\n形成矩阵:\n";
  output( ap, n );
  cout << "去掉靠边元素生成的矩阵:\n";
  del( ap,bp,n );
  output( bp,n-2 );
  cout << "主对角线元素之和:" << maindiagonal( ap, n ) <<endl;
}
//形成n阶矩阵函数
void create( int * &app, int n )
{
app = new int[ n*n ];
  int i,j,k = 0;
  for( i=0; i<n; i++ )
    for( j=0; j<n; j++ )
     {
  if( i<=j )
app[k] = 1;
        else
 app[k] = i-j+1;
        k++;
     }
}
//去掉靠边元素生成n-2阶矩阵函数
void del( int *&app, int *&bpp, int n )
{
 int i,j,k = 0;
  bpp = new int[ ( n-2 )*( n-2 ) ];
  for ( i=0; i<n; i++ )
  {
for( j=0; j<n; j++ )
      if ( i && j && i<n-1 && j <n-1 )
      {
 bpp[k]= *( app + i*n + j );    
         k++;
        }
  }
}
//求主对角线元素之和函数
int maindiagonal( int *&app, int n )
{
int i,j,k = 0,sum = 0;
  for ( i=0; i<n; i++ )
  {
 for( j=0; j<n; j++ )
      if( i==j )
        sum += *( app + i*n + j);
  }
  return sum;
}
//以方阵的形式输出数组函数
void output( int *&app, int n )
{
 int i,j;
  for ( i=0; i<n ; i++ )
  {
for( j=0; j<n; j++ )
       cout << *( app + i*n + j) <<  '\t';
    cout<<endl;
  }    
  cout<<endl;
}

发表于 2018-05-07 11:42:57 回复(0)