c++题:设计一个程序,求一个n*n阶矩阵两对角线元素之和

如题所述

第1个回答  推荐于2017-12-16
#include <stdio.h>
#include <stdlib.h>

void print(int m, int p, int *p4); /*函数声明*/

int main()
{
int test_num = 0; /*要计算的次数*/
int comp_times = 0; /*已经执行计算的次数*/
int m, n, p, i, j, k, sum, x; /*m,n,p确定矩阵形式,i,j表行与列,sum求每次计算之和*/
int *p1 = NULL; /*定义3个指针并初始化*/
int *p2 = NULL;
int *p3 = NULL;

scanf ("%d", &test_num); /*读入要运算的次数*/

for( ; comp_times < test_num; comp_times++) /*当执行次数等于所要运行次数时退出*/
{
scanf("%d %d %d", &m, &n, &p); /*确定矩阵形式,m*n和n*p阶矩阵*/

p1 = malloc( (m * n) * sizeof(int) ); /*申请内存*/
p2 = malloc( (n * p) * sizeof(int) );
p3 = malloc( (m * p) * sizeof(int) );

for( i = 0; i < m * n; i++) /*读入第一个矩阵*/
{
scanf("%d", &*(p1 + i));
}
for( i = 0; i < n * p; i++) /*读入第二个矩阵*/
{
scanf("%d", &*(p2 + i));
}

/*以下计算矩阵乘法,并将每次的运算结果存入第三块内存*/
for(i = 0; i < m; i++)
{
for(j = 0; j < p; j++)
{
for (k = sum = 0; k < n; k++)
{
x = *(p1 + k + i*n) * *(p2 + k*p + j);
sum += x; /*累加求和*/
}
*(p3 + i*p + j) = sum;
}
}

print(m, p, p3);

free(p1);
free(p2);
free(p3);
}

return 0;
}

/*定义打印矩阵相乘结果的函数,变量分别为矩阵类型以及指
针p4用以实现每打p个数值后面就有一个回车,否则为空格*/
void print(int m, int p, int *p4)
{
int i = 0;

while (i < m * p)
{
if (i % p == p - 1)
printf("%d\n", *(p4 + i));
else
printf("%d ", *(p4 + i));
i++;
}
}本回答被网友采纳
第2个回答  2013-06-28
int f(int **a,int n) //n*n的矩阵a[][]
{
int i;
int s=0;
for(i=0;i<=n-1;i++)
{
s=s+a[i][i]+a[i][n-1-i];
}
return s;
}

c++题:设计一个程序,求一个n*n阶矩阵两对角线元素之和
int main(){ int test_num = 0; \/*要计算的次数*\/ int comp_times = 0; \/*已经执行计算的次数*\/ int m, n, p, i, j, k, sum, x; \/*m,n,p确定矩阵形式,i,j表行与列,sum求每次计算之和*\/ int *p1 = NULL; \/*定义3个指针并初始化*\/ int *p2 = NULL;int *p3 = N...

求用C++编写一个程序,输入n*n的矩阵,求出两条对角线的元素和。
using namespace std;int main(){ int n =0;int **array;int sum = 0;cout<<"input num:"<<endl;cin>>n;array = new int*[n];for(int k =0; k<n; k++){ array[k] = new int[n];} for(int i = 0; i<n;i++){ for(int j = 0; j<n;j++){ cin>>array[i]...

C语言:编写程序,求一个n×n矩阵对角线元素之和。
int**array;\/\/指向整型的指针的指针.cout<<"请输入矩阵的维数:"<<endl;cin>>n;array=new int*[n];\/\/存放指针的数组.for(int k=0;k<n;k++){ array[k]=new int[n];\/\/指向一个整型数组.} cout<<"请输入n*n个值:"<<endl;for(int i=0;i<n;i++){ for(int j=0;j<n;j+...

编程实现:输入一个 n*n 的矩阵,求出两条对角线元素值之和。
int sum=0; \/\/定义对角线的和 int a[100][100],n; printf("输入是n*n矩阵的n值:"); scanf("%d",&n); printf("输入一个%d*%d矩阵:",n,n); printf("\\n"); for(i=0;i<n;i++) for(j=0;j<n;j++) { scanf("%d",&a[i][j]); \/\/按矩阵格式输入 } for(i=0;i<n;i++...

输入一个n×n的矩阵,求出两条对角线元素值之和以及输出矩阵中最大值...
using namespace std;void funa(){ cout << "input n" <<endl;int n;cin >> n;int arr[10][10];int num;for (int i =0;i<n;i++){ for (int j=0;j<n;j++){ cin >> num;arr[i][j] = num;} } int mMax,mMin;mMax = mMin = arr[0][0];int MaxX,MaxY,MinX,...

输入N*N阶矩阵,用函数编程计算并输出其两条对角线上的各元素之和(用c...
scanf("%d",&N);printf("请输入%d*%d的矩阵:\\n",N,N);for(i = 0; i < N; ++i) { for(j = 0; j < N; ++j){ scanf("%d",&a[i][j]);} } for(i = 0; i < N; ++i) { msum += a[i][i];ssum += a[i][N-1- i];} printf("主对角线的和是:%d\\n斜...

求一个n×n的矩阵的对角线元素之和。 DEV-c++ 要直接可以复制那种_百度...
main(){ \/\/ freopen("11.txt","r",stdin);\/\/ freopen("22.txt","w",stdout);int sum=0,n,c[100][100];cin>>n; \/\/输入这个n值 for(int i=0;i<n;i++)for(int j=0;j<n;j++){ cin>>c[i][j];if(i==j){ sum+=c[i][j];} } cout<<sum<<endl;} ...

急!请问用c++编一个程序 要求计算一个n*n的矩阵 主对角线上方所有正数...
\/*输出矩阵*\/ display(array);\/*计算主对角线上方整数之和*\/ float sum=0;cout<<"主对角线上方正数之和sum = ";for(int m=0; m<N-1; m++){ for(int n=m+1; n<N; n++){ if(m==N-2 && n==N-1)cout<<array[m][n]<<"=";else cout<<array[m][n]<<"+";sum += ...

怎样求n阶方阵对角线和c++(n是变量)
int main(void){ int arr[100][100], n, i, j, all = 0;cout<<"请输入矩阵的大小"<<endl;cin>>n;cout<<"请输入n阶矩阵"<<endl;for (i = 0; i < n; i++){ for (j = 0; j < n; j++){ cin>>arr[i][j];} } for (i = 0; i < n; i++){ for (j = 0...

C语言 求矩阵对角线元素的和
1、首先我们打开Dev-c++软件,点击“新建源代码”。2、然后我们输入如图所示代码。3、此次我们的程序最终目的是求出3x3的整型矩阵对角线元素之和,所以我们首先要向计算机输入我们3x3矩阵中的所有元素。4、其次,我们要对输入的矩阵的元素进行放置于相应的位置,以便于我们之后的计算其对角元素之和。5、...

相似回答