编程实现:输入一个 n*n 的矩阵,求出两条对角线元素值之和。

作者&投稿:居待 (若有异议请与网页底部的电邮联系)
编程实现:输入一个 n*n 的矩阵(>=5),求出两条对角线元素值之和。~

#include int main(){ int a[100][100] = {0}; int n, i, j, sum = 0; scanf("%d", &n); for(i = 0;i < n;i++) for(j = 0;j < n;j++) { scanf("%d", &a[i][j]); if(i == j || i+j == n-1) sum += a[i][j]; } printf("两条对角线元素之和 %d
", sum); return 0;}

C语言示例代码如下:
#include
int main(){int i,sumX=0,sumY=0,sum=0;
int num[5][5]=
{{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15},
{16,17,18,19,20},
{21,22,23,24,25}};
for(i=0;i<5;i++){//计算对角线
sumX+=num[i][i];
sumY+=num[5-i][i];}
sum=sumX+sumY-num[2][2];//相加对角线并去除重复加的部分。
printf("%d
",sum);return 0;}

扩展资料
矩阵的研究历史悠久,拉丁方阵和幻方在史前年代已有人研究。
在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。作为解决线性方程的工具,矩阵也有不短的历史。
成书最早在东汉前期的《九章算术》中,用分离系数法表示线性方程组,得到了其增广矩阵。在消元过程中,使用的把某行乘以某一非零实数、从某行中减去另一行等运算技巧,相当于矩阵的初等变换。
但那时并没有现今理解的矩阵概念,虽然它与现有的矩阵形式上相同,但在当时只是作为线性方程组的标准表示与处理方式。
矩阵正式作为数学中的研究对象出现,则是在行列式的研究发展起来后。逻辑上,矩阵的概念先于行列式,但在实际的历史上则恰好相反。
日本数学家关孝和(1683年)与微积分的发现者之一戈特弗里德·威廉·莱布尼茨(1693年)近乎同时地独立建立了行列式论。其后行列式作为解线性方程组的工具逐步发展。1750年,加布里尔·克拉默发现了克莱姆法则。
参考资料来源:百度百科-矩阵

//输入范例 假设n赋值为4
/*
1 2 3 4(回车)
2 3 4 5(回车)
3 4 5 6(回车)
5 6 7 8(回车)
注意 输入时数字间要有空格间隔
*/

#include <stdio.h>
void main()
{
int i,j;
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++)
{
sum=sum+a[i][i]; //求出对角线数之和
}
printf("矩阵对角线之和为: %d\n",sum);

}

假设输入的矩阵为matrix,可以使用以下代码实现:```pythonn = len(matrix)sum1 = 0 # 第一条对角线的元素之和sum2 = 0 # 第二条对角线的元素之和for i in range(n): sum1 += matrix[i][i] # 第一条对角线上的元素 sum2 += matrix[i][n-i-1] # 第二条对角线上的元素print(\"第一条对角线元素之和:\", sum1)print(\"第二条对角线元素之和:\", sum2)``` 首先,使用len()函数获取矩阵的行数(假设该矩阵为n*n),然后定义两个变量sum1和sum2分别记录两条对角线上的元素之和,初始化值为0。接着,使用for循环遍历每行矩阵的元素。使用i行索引和列索引,对于第一条对角线上的元素,行索引和列索引相等,因此直接使用matrix[i][i]获取元素值,累加到sum1变量中;对于第二条对角线上的元素,行索引与列索引之和为n-1,因此使用matrix[i][n-i-1]获取元素值,累加到sum2变量中。最后,输出两条对角线元素之和即可。

思路
定义 一个 数组 变量
int num[255][255]
那么 num[0][0] num[1][1] num[2][2] ..num[n][n] 就是 一条对角线
int sum=0;//记录和
for(int i=0,j=n;i<n;i++;j--)
{
sum=sum+num[i][i];//第一个 对角线
if(i!=j)//防止交叉点 重复记录
{
sum=sum+unm[i][j];//第二个 对角洗
}

}


营口市15954045706: 编程实现:输入一个 n*n 的矩阵,求出两条对角线元素值之和. -
柯晓阿司: #includevoid main() {int ary[4][4];int i=0,j=0; for(i=0;i

营口市15954045706: c语言构造一个n*n的矩阵,将最大值与第一个元素交换,最小值与最后一个元素交换 -
柯晓阿司: #define n 100; int * getArray(int num) {return (int*)malloc(num*num*sizeof(int)); }void work(int* p,int num) {int i = 0;int j = 0;int m;for(;i<num;i++)for(;j<num;j++){if(*(p+i*num+j)>*p){m = *p;*p = *(p+i*num+j);*(p+i*num+j) = m;}if(*(p+i*num...

营口市15954045706: 编程实现:输入一个 n*n 的矩阵(>=5),求出两条对角线元素值之和. -
柯晓阿司: #include int main() { int a[100][100] = {0}; int n, i, j, sum = 0; scanf("%d", &n); for(i = 0;ifor(j = 0;j{ scanf("%d", &a[i][j]); if(i == j || i+j == n-1) sum += a[i][j]; } printf("两条对角线元素之和 %d\n", sum); return 0; }

营口市15954045706: 求用C++编写一个程序,输入n*n的矩阵,求出两条对角线的元素和. -
柯晓阿司: #include <iostream> 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>...

营口市15954045706: 用java编程一个N*N的矩阵,对角线上的元素为一,其他元素均为0. -
柯晓阿司: public class C { public static void main(String[] args) { int n = 10; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { if (i==j) { System.out.print(1+" "); }else if((i+j)==(n+1)){ System.out.print(1+" "); }else{ System.out.print(0+" "); } } System.out.println(""); } } }

营口市15954045706: c++编程 编写一个程序输入一个n*n的矩阵,求出两条对角线元素值之和 -
柯晓阿司: #include <stdio.h>#include <malloc.h> int main( void) { int n = 0; int i = 0; int j = 0; int **a; int sum = 0; printf("请输入矩阵的维数:\n"); scanf("%d",&n); a = (int**)malloc(n*sizeof(int*)); for (int i = 0; i < n; ++i) { *(a+i) = (int *)malloc(sizeof(int)*n);...

营口市15954045706: 用C语言编写个N*N矩阵,由外层到内层依次:第一层全是1;第二层全是2;第三层是3; -
柯晓阿司: if(N%2==0 && N>0){for(i=0;i<N/2;i++){for(j=i;j<N-i;j++){a[i][j]=a[N-1-i][j]=i+1; a[j][i]=a[j][N-1-i]=i+1;}} }

营口市15954045706: C语言函数 编程输入一个n*n矩阵中各元素的值,找出两条对角线上的元素之和 -
柯晓阿司: 后面的for还可以这样写: for(i=0;i{ sum1=sum1+matrix[i][i];sum2=sum2+matrix[i][N-i-1]; }printf("%d\n%d",sum1,sum2);

营口市15954045706: C语言(指针): 编写一个函数实现n*n矩阵转置.在主函数中用scanf输入矩阵元素;将数组名作为函数实参. -
柯晓阿司: 好吧,简单说下:void fun( float a[][]) { int i,j,float t; for(i=0;a[i][0];i++)for(j=i;a[i][j];j++){t=a[i][j];a[i][j]=a[j][i];a[j][i]=t; } } 这个函数的局限只限于方阵.也只能对上三角元素操作,是因为a[][]数组本身空间的限制,如果采用指针的话: 令p=a;其他注...

营口市15954045706: 编写一个方法显示n*n的矩阵,方法头如下: public static void printMatrix(int n) 元素为随机产生的0或1 -
柯晓阿司: import java.util.Scanner; public class Test { public static void printMatrix(int n) { float x; float a[][]=new float[n][n]; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ x=(float) Math.random(); if(x>0.5){x=1;}else{x=0;} a[i][j]=x; } } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网