编写程序,要求主函数初始化一个矩阵 (5×5),并分别调用各函数实现求

1、元素值取自随机函数(int rand(););
2、求主对角线上的元素之和;
3、实现矩阵的转置;
4、输出矩阵各元素的值。
注:主函数中,矩阵转置前后的值均要输出。

#include<iostream.h>
#include"stdlib.h"
#include"time.h"
#include "stdio.h"

int a[5][5],c[5][5],d[5][5]; //矩阵a、c、d定义为全局变量

void zc(int b[][5],int n); //对角线函数声明语句
void zc1(int b[][5],int n); //转置函数声明语句

void main()
{
int i,j;
srand(time(NULL)); //产生一个时间
for(i=0;i<5;i++)
for(j=0;j<5;j++)
*(*(a+i)+j)=rand()%100; //产生一个随机数

cout<<"自动生成的矩阵为:\n";
for(i=0;i<5;i++) //输出自动生成的二维数组
{
for(j=0;j<5;j++)
cout<<'\t'<<*(*(a+i)+j);
cout<<"\n"<<endl;
}

zc1(a,5); //调用矩阵函数
cout<<"转置后的矩阵为:\n" ; //调用转置主函数
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
cout<<'\t'<<*(*(d+i)+j);
cout<<"\n"<<endl;
}

zc(a,5); //调用矩阵函数 输出对角线和
{
cout<<endl;
}
}

void zc(int b[][5],int n)
{
int i,j;
int sum=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(i==j||j==4-i)
sum+=a[i][j]; //求对角线和
}
cout<<"对角线之和为:"<<sum<<endl;
}

void zc1(int b[][5],int n)
{
int i,j;
int (*p)[5];
p=d;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
*(*(p+i)+j)=*(*(b+j)+i); // 转置矩阵
}
温馨提示:答案为网友推荐,仅供参考
相似回答