C编程/这两个代码之间有什么区别
这两种代码之间有什么区别?我想是相同的代码 它不能同时运行codeup和Visual Studio。 codeup.kr 1505问题 阵列问题 当你给它编号的时候 它生成num*num数组 例如,给定num=3,它将创建: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 =
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;
}
}