编写以下函数:
(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; }
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题