给定程序中,函数fun的功能是:有N×N矩阵,将矩阵的外围元素顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。 例如,若N=3,有下列矩阵: 1

admin2018-09-27  33

问题 给定程序中,函数fun的功能是:有N×N矩阵,将矩阵的外围元素顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。
  例如,若N=3,有下列矩阵:
1    2   3
4    5   6
7    8   9
计算结果为
7   4   1
8   5   2
9   6   3
    请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
    注意:源程序存放在考生文件夹下的BLANK1.C中。
    不得增行或删行,也不得更改程序的结构!
1  #include<stdio.h>
2  #define N 4
3  void fun(int(*t)[N])
4  { int j,r[N];
5  for(j=0;j<N;j++)r[j]=t[0][j];
6  for(j=0;j<N;j++)
7  /**********found**********/
8  t[0][N-j-]=t[j][___1____];
9  for(j=0;j<N; j++)
10    t[j][0]=t[N-1][j];
11  /**********found**********/
12   for(j=N-1;j>=0;___2___)
13    t[N-1][N-1-j]=t[j][N-1];
14  for(j=N-1;j>=0;j--)
15  /**********found**********/
16    t[j][N-1]=r[__3___];
17  }
18  main()
19  {int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;
20  printf(’’\nThe original array:\n’’);
21  for(i=0;i<N;i++)
22  { for(j=0;j<N;j++)printf(’’%2d’’,t[j]);
23  printf(’’\n’’);
24  }
25   fun(t);
26  printf(’’\nThe result is:\n’’);
27    for(i=0;i<N;i++)
28    {  for(j=0;j<N;j++)printf(’’%2d’’,t[j]);
29    printf(’’\n’’);
30    }
31  }

选项

答案(1)0 (2)j-- (3)j

解析 函数fun操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。
    第一空:由审题分析可知,此处是使第一列成为第一行,即把第一列元素移动到第一行,第一列元素是“t[j][0]”,第一行元素是“t[0][N-j-1],”故第一空处应为“0”。
    第二空:第四个循环是最后一列成为最后一行,即将最后一列移动到最后一行,“for(j=N-1;i>=0;__2__)”循环变量j从N-1开始,到O结束,共循环N次,故j每次减1,第三空处是“j--”。
    第三空:最后一个循环将临时数组中的元素成为最后1列,即“t[j][N-1]=r[j]”,故第三空处应为“j”。
转载请注明原文地址:https://kaotiyun.com/show/p8xp777K
0

最新回复(0)