C中的数组转换问题

时间:2016-12-20 12:54:16

标签: c arrays

我在C语言中遇到一些初学者编程问题,特别是数组输出。

#include <stdio.h>
#include <stdlib.h>

#define X 10
#define Y 10

void init_world(char (*)[Y][X]);
void next_gen(char (*)[Y][X], char (*)[Y][X]);
void put_world(char (*matrix)[Y][X]);

int main(void)
{
    int x=0;
    char welt1[X][Y];
    char welt2[X][Y];
    init_world(welt1);
    put_world(welt1);
    do
    {
        next_gen(welt1,welt2);
        put_world(welt1);
        x++;

    }while((welt2!=welt1)and (x<10));
    getchar();
    return 0;
}

void init_world(char (*welt)[Y][X])
{
    ...
}


void next_gen(char (*zelle)[Y][X], char (*neu)[Y][X])
{
    ...
}

void put_world(char (*matrix)[Y][X])
{
    int y, x;
    for(y=0; y<X; y++)
        for(x=0; x<Y; x++)
            if(matrix[y][x] != 0)
                printf("%c",'*');
            else printf("%c",' ');
        printf("\n");
    printf("\n--------------\n");
}

最后一个函数应该打印数组元素。 这应该发生在&#39; *&#39;的最大值中。或者&#39; &#39;但它不断印刷这些

******* *****   *************** ***     *** *** *** ***  
*********************** *** *** *** *   *

--------------

2 个答案:

答案 0 :(得分:1)

void put_world(char (*matrix)[Y][X])
{
    int y, x;
    for(y=0; y<X; y++)
    {
        for(x=0; x<Y; x++)
            if(matrix[y][x] != 0)
                printf("%c",'*');
            else printf("%c",' ');
        printf("\n");    //Out of scope of first for loop previously (keep it in).
    }
    printf("\n--------------\n");
}

答案 1 :(得分:1)

您的printf("\n")不属于for循环。

    void put_world(char (*matrix)[Y][X])
    {
        int y, x;
        for(y=0; y<X; y++)
        {
            for(x=0; x<Y; x++)
                if(matrix[y][x] != 0)
                    printf("%c",'*');
                else printf("%c",' ');
            printf("\n");
        }
        printf("\n--------------\n");
    }

应该这样做。