有以下程序: #include<stdio.h> #define N3 void fun(int x[][N],int*r1,int*r2) {int i,j; *r1=*r2=0: for(i=0;i<N;i++) {j=N-(i+1); if(x[*r

admin2020-11-27  12

问题 有以下程序:
#include<stdio.h>
#define N3
void fun(int x[][N],int*r1,int*r2)
{int i,j;
*r1=*r2=0:
for(i=0;i<N;i++)
{j=N-(i+1);
if(x[*r1][*r2]<x[j]){*r1=i;*r2=j;}
}
}
main()
{int a[N][N]={1,5,7,9,2,6,4,3,8},i,j;
fun(a,&i,&j);
printf("%d\n",a[j]);
}
程序运行后的输出结果是(    )。

选项 A、8
B、6
C、7
D、9

答案C

解析 fun()获取矩阵正反对角线的元素的最大值,fun()中for(i=0;i<N;i++)
{j=N-(i+1);//反对角线列位置
if(x[*r][*2]<x[j]){*r1=i;*r2=j;}//比较正反对角线的元素,使得*r1,*r2始终只在最大元素的位置。
}
由数组元素可得,正反对角线的最大元素为7。答案为C选项。
转载请注明原文地址:https://kaotiyun.com/show/CZ3p777K
0

最新回复(0)