【发布时间】:2012-11-28 00:45:39
【问题描述】:
给定一个数组 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;
}
有人可以帮忙吗?
【问题讨论】:
-
它有什么问题?编译错误?数组中有什么?定义问题。
-
您具有移动/旋转一行的功能。循环遍历行并自行移动每个行。
-
问题在于,由于辅助函数接受了一个参数 int *,所以它没有在主函数中接受数组,因此它做的不对。不过它编译得很好。