单选题
有以下程序:
#include <stdio.h>
#define N 4
void fun(int a[][N])
{ int b[N][N],i,j;
for(i=0; i<N; i++)
for(j=0; j<N; j++)
b[i][j]=a[N-1-j][i];
for(i=0; i<N; i++)
for(j=0; j<N; j++)
a[i][j] = b[i][j];
}
main()
{ int x[N][N]={{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}
},i;
fun(x); fun(x);
for(i=0; i<N; i++)
printf("%d,",x[i][i]);
printf("/n");
}
程序的运行结果是______。
【正确答案】
A
【答案解析】[解析] 程序的执行过程为:调用函数fun,将二维数组x地址传入函数,此函数实现将矩阵转置,然后将每一列首尾倒置,调用结果为x[N][N]={{13,9,5,1},{14,10,6,2},{15,11,7,3},{16,12,8,4}}。再次调用函数f,调用结果为x[N][N]={{16,15,14,13},{12,11,10,9},{8,7,6,5},{4,3,2,1}}。输出结果为16,11,6,1,故A选项正确。