给定一个数组 p[5],编写一个函数将其循环左移两个位置。因此,如果 p[0] = 15, p[1]= 30, p[2] = 28, p[3]= 19 和 p[4] = 61,那么在移位后 p[0] = 28, p[ 1] = 19, p[2] = 61, p[3] = 15 和 p[4] = 30。为 (4 x 5 ) 矩阵调用此函数并将其行左移 2。
下面是我到目前为止的代码,但它不起作用。问题在于,由于辅助函数需要一个参数int *
,它不会在主函数中使用数组,因此它做的不对。虽然它编译得很好。
#include<stdio.h>
void moveLeft2(int p[5])
{
int temp1 = p[0];
int temp2 = p[1];
for(int i = 0; i < 5 - 2; i++)
{
p[i] = p[i + 2];
}
p[3] = temp1;
p[4] = temp2;
}
int main()
{
int p[4][5] = {
{15,30,28,19,61},
{1,2,3,4,5},
{6,7,8,9,20},
{11,12,13,14,15}};
int i;
moveLeft2(p);
return 0;
}
有人可以帮忙吗?