B048

01-程序填空题 田少松, 软件154 289浏览

所属年份:2011.9;2012.3

下列给定程序中,函数fun的功能是:将N×N矩阵中元素的值按列向右移动1个位置,右边被移出矩阵的元素绕回左边第1列。
例如,N=3,有下列矩阵
1  2  3
4  5  6
7  8  9
计算结果为
3  1  2
6  4  5
9  7  8
请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。

注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!

#include    <stdio.h>
#define    N    4
void fun(int  (*t)[N])
{
    int  i, j, x;
    /**********found**********/
    for(i=0; i<___1___; i++)
    {
        /**********found**********/
        x=t[i][___2___] ;
        for(j=N-1; j>=1; j--)
            t[i][j]=t[i][j-1];
        /**********found**********/
        t[i][___3___]=x;
    }
}

main()
{
    int  t[][N]= {21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j;
    printf("The original array:\n");
    for(i=0; i<N; i++)
    {
        for(j=0; j<N; j++)  printf("%2d  ",t[i][j]);
        printf("\n");
    }
    fun(t);
    printf("\nThe result is:\n");
    for(i=0; i<N; i++)
    {
        for(j=0; j<N; j++) printf("%2d  ",t[i][j]);
        printf("\n");
    }
}

【参考答案】

(1) N  
(2) N-1  
(3) 0

【考点分析】
本题考查:for循环语句;如何表示N×N矩阵中各个元素。

【解题思路】
填空1:因为是N×N的矩阵,所以行列数是相同的。第一个for循环用来循环行,因此填入一个循环界限N。
填空2:此行语句将移出矩阵的元素暂存,移出矩阵的元素的列下标为N-1,因此填入N-1。
填空3:此行语句将移出矩阵的元素放入最左边,也就是第一列,第一列元素的列下标为0,因此填入0。