C编程/这两个代码之间有什么区别

C编程/这两个代码之间有什么区别,c,C,这两种代码之间有什么区别?我想是相同的代码 它不能同时运行codeup和Visual Studio。 codeup.kr 1505问题 阵列问题 当你给它编号的时候 它生成num*num数组 例如,给定num=3,它将创建: 1 2 3 8 9 4 7 6 5 代码1: #include<stdio.h> #include<string.h> int main() { int tile[52][52]; int x, y; int num; int start =

这两种代码之间有什么区别?我想是相同的代码

它不能同时运行codeup和Visual Studio。 codeup.kr 1505问题

阵列问题 当你给它编号的时候 它生成num*num数组

例如,给定num=3,它将创建:

1 2 3

8 9 4

7 6 5
代码1:

#include<stdio.h>
#include<string.h>

int main()
{
int tile[52][52];
int x, y;
int num;
int start = 1;
int check = 1, complete = 1;
int i;

scanf("%d", &num);
memset(tile, 0, 4 * 52 * 52);


tile[0][1] = 10;
tile[1][num + 1] = 10;
tile[num + 1][num + 1] = 10;
tile[num + 1][0] = 10;

x = 1; y = 1;
for (i = 0; i <= 3000; i++)
{
    switch (check)
    {
    case 1:
    {
        if (tile[x][y + 1] != 0)
        {

            check += 1;
            break;
        }
        tile[x][y++] = start;
        start++;
        complete++;
        break;

    }
    case 2:
    {
        if (tile[x + 1][y] != 0)
        {
            check += 1;
            break;
        }
        tile[x++][y] = start;
        start++;

        complete++;
        break;
    }
    case 3:
    {
        if (tile[x][y - 1] != 0)
        {
            check += 1;
            break;
        }
        tile[x][y--] = start;
        start++;
        complete++;
        break;
    }
    case 4:
    {
        if (tile[x - 1][y] != 0)
        {
            check = 1;
            break;
        }
        tile[x--][y] = start;
        start++;
        complete++;
        break;
    }

    }
    if (complete == num*num)
    {
        break;
    }
}


if (num % 2 == 0)
{
    tile[x][y] = start;
}
else
{
    tile[x][y++] = start;
}


for (x = 1;x <= num; x++)
{
    for (y = 1; y <= num; y++)
    {
        printf("%d ", tile[x][y]);
    }
    printf("\n");
}

}
此代码在VisualStudio中运行

#include<stdio.h>


int main()
{
int tile[52][52];
int x, y;
int num;
int start = 1;
int check = 1, complete = 1;
int i;

scanf("%d", &num);
for (x = 0;x <= num; x++)
{
    for (y = 0; y <= num; y++)
    {
        tile[x][y] = 0;
    }
}
tile[0][1] = 10;
tile[1][num+1] = 10;
tile[num + 1][num + 1] = 10;
tile[num + 1][0] = 10;

x = 1; y = 1;
for (i = 0; i <= 3000; i++)
{
    switch (check)
    {
    case 1:
    {
        if (tile[x][y + 1] != 0)
        {

            check += 1;
            break;
        }
        tile[x][y++] = start;
        start++;
        complete++;
        break;

    }
    case 2:
    {
        if (tile[x + 1][y] != 0)
        {
            check += 1;
            break;
        }
        tile[x++][y] = start;
        start++;

        complete++;
        break;
    }
    case 3:
    {
        if (tile[x][y - 1] != 0)
        {
            check += 1;
            break;
        }
        tile[x][y--] = start;
        start++;
        complete++;
        break;
    }
    case 4:
    {
        if (tile[x - 1][y] != 0)
        {
            check = 1;
            break;
        }
        tile[x--][y] = start;
        start++;
        complete++;
        break;
    }

    }
    if (complete == num*num)
    {
        break;
    }
}

if (num % 2 == 0)
{
    tile[x][y] = start;
}
else
{
    tile[x][y++] = start;
}


for (x = 1;x <= num; x++)
{
    for (y = 1; y <= num; y++)
    {
        printf("%d ", tile[x][y]);
    }
    printf("\n");
}

}
区别在于:

$ diff -w one.c two.c2,3d1

< #include<string.h>
< 
14,15c12,16
<   memset(tile, 0, 4 * 52 * 52);
< 
---
>   for (x = 0; x <= num; x++) {
>     for (y = 0; y <= num; y++) {
>       tile[x][y] = 0;
>     }
>   }
95a97
>

谢谢你的建议。
for (x = 0; x < 52; x++) {
  for (y = 0; y < 52; y++) {
    tile[x][y] = 0;
  }
}