这个程序将一个二维数组向右旋转90度-我可以根据[col]和[row]索引将旧数组的值应用到一个新数组中吗?

gudnpqoy  于 2022-12-22  发布在  其他
关注(0)|答案(1)|浏览(118)

我想取二维数组"arr"中的值,并使用for循环在每次迭代中区分列和行索引,将它们以不同的顺序放置在"arrRotated"中。
我试过这个:

for (int i = 6; i >= 0; i--)
{
    for (int count = 0; count <= 6; count++)
    {
        arrRotated[count][i] = arr[i][count];
    }

但我得到一个错误:
表达式必须是指向完整对象类型的指针
这是完整的代码:

#include <stdio.h>

void DisplayArray2D(char arr[][7]);
void RotateArray2D(char arr[][], char arrRotated[][]);

int main()
{
    char arrRotated[7][7];
    char arr[7][7] = 
{
{ '*',' ',' ',' ',' ',' ',' '},
{ '*','*',' ',' ',' ',' ',' '},
{ '*','*','*',' ',' ',' ',' '},
{ '*','*','*','*','*','*','*'},
{ '*','*','*',' ',' ',' ',' '},
{ '*','*',' ',' ',' ',' ',' '},
{ '*',' ',' ',' ',' ',' ',' '},
};

    RotateArray2D(arrRotated, arr);
    DisplayArray2D(arrRotated[7][7]);
}

void DisplayArray2D(char arr[][7])
{
    int i, count;
    for (i = 0; i < 7; i++)
    {
        for (count = 0; count < 7; count++)
            printf("%c", arr[i][count]);
        printf("\n");
    }
}

void RotateArray2D(char arr[][], char arrRotated[][])
{
    for (int i = 6; i >= 0; i--)
    {
        for (int count = 0; count <= 6; count++)
        {
            arrRotated[count][i] = arr[i][count];
        }
    }
}
r7s23pms

r7s23pms1#

在声明void RotateArray2D(char arr[][], char arrRotated[][])时,必须指定第一维的大小。对于DisplayArray2D,可以正确地指定大小。下面是更正后的行:

void RotateArray2D(char arr[][7], char arrRotated[][7])

您还使用交换的参数调用RotateArray2D

RotateArray2D(arrRotated, arr);

应该是

RotateArray2D(arr, arrRotated);

Demo

相关问题