编一个程序,定义一个n行n列的二维整数数组,赋初值,然后求出对角线上的元素之和。

题目
问答题
编一个程序,定义一个n行n列的二维整数数组,赋初值,然后求出对角线上的元素之和。
参考答案和解析
正确答案: int n=5;
int s=0;
int[,]arr={{1,2,3,4,5},{11,12,13,14,15},{21,22,23,24,25},{31,32,33,34,35},{41,42,43,44,45}};
inti,j;
for(i=0;i {
for(j=0;j {
if(i==j,,i+j==n+1)
s=s+arr[i,j];
}
}
Console.WriteLine("对角线上的元素之和{0}",s);
解析: 暂无解析
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

设二维数组A[1..m,1..n](即m行n列)按行存储在数组B[1..m*n]中,则二维数组元素A[i,j]在一维数组B中的下标为()。

A.(i-1)*n+j

B、(i-1)*n+j-1

C.i*(j-1)

D、j*m+i-1


参考答案:A
解释:特殊值法。取i=j=1,易知A[1,1]的的下标为1,四个选项中仅有A选项能确定的值为1,故选A。

第2题:

假定二维数组的定义语句为“doublea[M][N];”,则每个数组元素的列下标取值范围在0~N-1之间。()

此题为判断题(对,错)。


正确答案:√

第3题:

假定二维数组的定义为“double a[M][N];”,则每个数组元素的列下标取值范围在0~N之间。()

此题为判断题(对,错)。


答案:错 

第4题:

设有一个m行n列的矩阵存储在二维数组A[1..M,1..n]中,将数组元素按行排列,对于A[i,j](1≤i≤m,l≤j≤n),排列在其前面的元素个数为( )。

A.i*(n-1)+jB.(i-1)*n+J-1C.i*(m-l)+jD.(i-1)*m+J-1


正确答案:B

第5题:

补充程序Ccon061.C,使其从键盘输入一个4行4列的二维整型数组表示4×4阶矩阵,并计算第1列元素之和。如输出:28


Inti,/**/j/**/;
Sum=/**/0/**/;
/**/sum+=a[i][0];/**/

第6题:

请编一个函数void fun( int tt[M][N], int pp[N], tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

include <conio.h>

include <stdio.h>

define M 3

define N 4

void fun(int tt[M][N],int pp[N])

{

}

main()

{

int t[M] [N]={{68,32,54,12},{14,24,88,

58},{42, 22, 44, 56}};

int p[N],i,j,k;

clrscr();

printf("The riginal data is:\n");

for(i=0;i<M;i++)

{

for(j=0;j<N;j++)

printf("%6d",t[i][j]);

printf("\n");

}

fun(t,p);

printf("\nThe result is:\n");

for(k=0;k<N;k++)

printf("%4d",p[k]);

printf("\n");

}


正确答案:void fun(int tt[M][N]int pp[N]) { int iimax; for(j=0;jN;j++) { max=tt[0][j]; /*假设各列中的第一个元素最大*/ for(i=0;iM;i++) if(tt[i][j]>max) /*如果各列中的其他元素比最大值大则将这个更大的元素看作当前该列中最大元素*/ max=tt[i][j]; pp[j]=max; /*将各列的最大值依次放入pp数组中*/ } }
void fun(int tt[M][N],int pp[N]) { int i,i,max; for(j=0;jN;j++) { max=tt[0][j]; /*假设各列中的第一个元素最大*/ for(i=0;iM;i++) if(tt[i][j]>max) /*如果各列中的其他元素比最大值大,则将这个更大的元素看作当前该列中最大元素*/ max=tt[i][j]; pp[j]=max; /*将各列的最大值依次放入pp数组中*/ } } 解析:本题中函数的功能是求出二维数组中每列的最大元素。首先,假设各列中的第一个元素最大,然后利用行标值的移动来依次取得各列中其他元素的值,并与假设的最大值进行比较,如果遇到更大的,则把这个更大的元素看做当前该列中最大的元素,继续与该列中其他元素比较。

第7题:

将一个n阶三对角矩阵A的三条对角线上的元素按行压缩存放于一个一维数组B中, A[0][0]存放于B[0]中。对于任意给定数组元素A[i][j],它应是数组A中第______行的元素。


正确答案:2i+j-3
2i+j-3 解析:在三对角矩阵中,按行压缩存储,其转换公式为k=2i+j-3。

第8题:

请编一个函数void proc(int ttEM][N],int pp[N]),tt 指向一个M行N列的二维数组,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。 试题程序: include<stdio.h> include<conio.h> include<stdlib.h> define M 3 define N 4 void proc(int ttrM3rN]。int pp[N]) {

} void main { int str[M][N]={ {34,56,84,78}, {23,84,93,12), {28,38,39,93}}; int p[N],i,j,k; system("CLS"); printf("The riginal data is:\n"); for(i=0;i<M;i++) { for(j=0;j<N;j++) printf("%6d",str[i][j]); printf("\n"); } proc(str,p); printf("\nThe result is:\n");for(k=0:k<M;k++) printf("%4d",p[k]); printf("n");}


正确答案:

void proc(int tt[M][N],int pp[N])
int i,j,max;
for(i=0;i<M;i++)//i控制行的下标
{
max=tt[i][c]; //max存放每行中最大的数
for(j=0;j<N;j++)
if(tt[i][j]>max)
max=tt[i][j];
pp[i]=max;//把大的数放到PP数组中,经过i来控制pp数组的下标
}
}
【解析】按照题目中要求,求出二维数组每行中最大元素,并依次放入PP所指的一维数组中。首先比较二维数组中每一行的元素,找出每一行中的最大元素,放入一维数组pp中,返回到主函数当中。

第9题:

请编一个函数void proc(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。

试题程序:


正确答案:


【解析】按照题目中要求,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。首先比较二维数组中每一行的元素,然后找出每一行中的最大元素,放入一维数组pp中,最后返回到主函数当中。

第10题:

设有一个m行n列的矩阵存储在二维数组A[1..M,1..n]中,将数组元素按行排列,对于A[i,j](1≤i≤m,l≤j≤n),排列在其前面的元素个数为( ).

A.i*(n-1)+j
B.(i-1)*n+J-1
C.i*(m-l)+j
D.(i-1)*m+J-1

答案:B
解析:
本题考查数据结构基础知识。二维数组A[1..m,1.n]如下所示。



对于元素A[i,j],其之前有i-1行、每行n个元素,在第i行上,A[i,j]之前有j-1个元素,因此,按行排列时,A[i,j]之前共有(i-1)*n+j-1个元素。

更多相关问题