我在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;但它不断印刷这些
******* ***** *************** *** *** *** *** ***
*********************** *** *** *** * *
--------------
答案 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");
}
应该这样做。