如何在C中反转多维数组?

精神病先生性感

我需要反转由指针表示法制成的二维数组。

要明确的是,如果数组是

A B C D E
F G H I J
K L M N O

我需要:

E D C B A
J I H G F
O N M L K

到目前为止,我的代码:

#include <stdio.h>
#include <stdlib.h>
#define HEIGHT 3
#define WIDHT 7

void print (char *imprimir)
{
    int i,j;
    for (i=0;i<HEIGHT;i++)
    {
        for (j=0;j<WIDHT;j++)
        {
            printf ("%2c",*(imprimir+(i*WIDHT)+j));
        }
        printf ("\n");
    }
}

int main()
{
    //FILLING THE ARRAY
    char *array=malloc(WIDHT*HEIGHT);
    int i,j;
    for (i=0;i<HEIGHT;i++)
    {
        for (j=0;j<WIDHT;j++)
        {
            *(array+(i*WIDHT)+j)=(i*WIDHT)+j+'a';
        }
    }
    print (array);  
    //TRYING TO REVERSE IT
    char *tmp=malloc(WIDHT);
    for (i=0;i<HEIGHT;i++)
    {
        for (j=0;j<WIDHT/2;j++);
        {
            *tmp=*(array+(i*WIDHT)+j);
            *(array+(i*WIDHT)+j)=*(array+(i*WIDHT)+(WIDHT-j));
            *(array+(i*WIDHT)+(WIDHT-j))=*tmp;
        }
    }
    printf ("PRINTING RESULT!\n");
    print (array);  
}
merlin2011

您有两个错误。

  1. ;内部for循环的末尾有分号,因此循环根本没有运行。
  2. 无论您在哪里WIDTH - j,都应该拥有WIDTH - 1 -j,因为最高索引是WIDTH - 1

此外,人类做关心拼写,所以我改变WIDHT,以WIDTH在全球范围内提高可读性。

这是固定代码。

#include <stdio.h>
#include <stdlib.h>
#define HEIGHT 3
#define WIDTH 7

void print (char *imprimir)
{
    int i,j;
    for (i=0;i<HEIGHT;i++)
    {
        for (j=0;j<WIDTH;j++)
        {
            printf ("%2c",*(imprimir+(i*WIDTH)+j));
        }
        printf ("\n");
    }

}



int main ()
{
    //FILLING THE ARRAY
    char *array=malloc(WIDTH*HEIGHT);
    int i,j;
    for (i=0;i<HEIGHT;i++)
    {
        for (j=0;j<WIDTH;j++)
        {
            *(array+(i*WIDTH)+j)=(i*WIDTH)+j+'a';
        }
    }
    print (array);  
    //TRYING TO REVERSE IT
    char tmp;
    for (i=0;i<HEIGHT;i++)
    {
        for (j=0;j<WIDTH/2;j++)
        {
            tmp=*(array+(i*WIDTH)+j);
            *(array+(i*WIDTH)+j)=*(array+(i*WIDTH)+(WIDTH - 1 -j));
            *(array+(i*WIDTH)+(WIDTH - 1 -j))=tmp;
        }
    }
    printf ("PRINTING RESULT!\n");
    print (array);  

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C中反转多维数组?

来自分类Dev

如何反转多维数组中的重复值

来自分类Dev

如何在C中打印多维数组?

来自分类Dev

如何在C ++中的函数原型中编写多维数组

来自分类Dev

如何在C / C ++中对多维数组进行排序

来自分类Dev

如何在多线程C ++中传递多维数组

来自分类Dev

如何在C ++中的多维数组上打印名称

来自分类Dev

如何在C中传递函数多维char数组?

来自分类Dev

从C api接收多维数组,如何在Swift中处理?

来自分类Dev

如何在C ++中选择多维数组中的范围?

来自分类Dev

如何在C中传递函数多维char数组?

来自分类Dev

如何在C ++中选择多维数组中的范围?

来自分类Dev

如何在 C 编程中初始化多维数组

来自分类Dev

如何在Go中反转数组?

来自分类Dev

如何在JavaScript中反转数组

来自分类Dev

如何在Swift中反转数组?

来自分类Dev

如何在Twig中设置多维数组?

来自分类Dev

如何在Codeigniter中返回多维数组

来自分类Dev

如何在多维数组中插入列?

来自分类Dev

如何在CouchDB中索引多维数组

来自分类Dev

如何在Perl中打印多维数组?

来自分类Dev

如何在多维数组中搜索

来自分类Dev

如何在React中访问多维数组

来自分类Dev

如何在JavaScript中推送数组多维

来自分类Dev

如何在JavaScript中打印多维数组?

来自分类Dev

如何在Python中减去多维数组?

来自分类Dev

如何在jQuery中声明多维数组

来自分类Dev

如何在JavaScript中实现多维数组

来自分类Dev

如何在多维数组中搜索