C程序矩阵移动问题

问题描述:

C程序矩阵移动问题
给定程序中,函数fun的功能是:将a所指3×5矩阵中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原来左边的各列依次绕到右边.
例如,有下列矩阵:
12345
12345
12345
若k为2,程序执行结果为
34512
34512
34512
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果.
注意:不得增行或删行,也不得更改程序的结构!
#include
#defineM3
#defineN5
void fun(int (*a)[N],int k)
{
int i,j,p,temp;
//
a[i][N-1]=temp;
}
}

个人看不明白有几个问题希望高手解答
第一个我自己认为该fun函数只是把第一列的所有元素移到了最后一列但没有像题目中所给的例子一样把第k列之前的所有元素整体移动到最后如果不是希望高手指明哪些语句是完成上述操作的
第二个关于p它所做的操作是从第二列开始到第k列循环呃..为什么要做这样的循环,如果是第k列向前移动的话为什么不从第0列向第k列循环

谢谢大家..

你没有理解这个算法吧,从第k列的东西移动到0列,换句说是不是将整个矩阵左移k次啊?
所以:
1.最外循环是将所有的元素右移一次,移动k次
2.既然算法是这样,p就不是列数的意思,而是移动次数