有以下程序 #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;

admin2021-02-25  19

问题 有以下程序
#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[j] = a[N-1-j];
   for(i=0; i<N; i++)
     for(j=0; j<N; j++)
         a[j] = b[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);
   printf("\n");
}
程序的运行结果是

选项 A、16,11,6,1,
B、1,6,11,16,
C、4,7,10,13,
D、13,10,7,4,

答案A

解析 程序的执行过程为:调用函数f,将二维数组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选项正确。
转载请注明原文地址:https://jikaoti.com/ti/WXz0FFFM
0

最新回复(0)