C程序矩阵移动问题给定程序中,函数fun的功能是:将a所指3×5矩阵中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原来左边的各列依次绕到右边.例如,有下列矩阵: 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5若k为2,程序执行结果为 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果.注意:不得增行或删行,也不得更改程序的结构!#include #define M 3#define N 5void fun(int (*a)[N],int k){ int i,j,p,temp;// a[i][N-1]=temp; }}个人看不明白有几个问题希望高手解答第一个我自己认为该fun函数只是把第一列的所有元素移到了最后一列 但没有
问题描述:
C程序矩阵移动问题
给定程序中,函数fun的功能是:将a所指3×5矩阵中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原来左边的各列依次绕到右边.
例如,有下列矩阵:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
若k为2,程序执行结果为
3 4 5 1 2
3 4 5 1 2
3 4 5 1 2
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果.
注意:不得增行或删行,也不得更改程序的结构!
#include
#define M 3
#define N 5
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就不是列数的意思,而是移动次数