请教一个问题 请教一个问题就是这样 输入2打印 1 2 4 3输入 3 打印 1 2 3 8 9 4 7 6 5n 是用户输入的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是当初我的代码.using System;namespace PrintArray{ class PrintArray { static void Main() { char c = '0'; while (c != 'n' && c != 'N') { Console.Write("输入2-9:"); c = Console.ReadKey().KeyChar; Console.WriteLine(); if (c < '2' || c > '9') continue; int n = c - '0'; p1(n); } } static private void p1(int n) { int[,] array = new int[n, n]; array[0, 0] = 1; int gridx = 0, gridy = 0, forward = 6; for (int i = 2; i <= n * n; i++) { switch (forward) { case 2: if ((gridy - 1 >= 0) && (array[gridx, gridy - 1] == 0)) array[gridx, --gridy] = i; else { array[++gridx, gridy] = i; forward = 6; } break; case 4: if ((gridx - 1 >= 0) && (array[gridx - 1, gridy] == 0)) array[--gridx, gridy] = i; else { array[gridx, --gridy] = i; forward = 2; } break; case 6: if ((gridx + 1 < n) && (array[gridx + 1, gridy] == 0)) array[++gridx, gridy] = i; else { array[gridx, ++gridy] = i; forward = 8; } break; case 8: if ((gridy + 1 < n) && (array[gridx, gridy + 1] == 0)) array[gridx, ++gridy] = i; else { array[--gridx, gridy] = i; forward = 4; } break; } } printArray(array, n); } static private void printArray(int[,] array, int num) { for (int i = 0; i < num; i++) { for (int j = 0; j < num; j++) Console.Write(array[j, i].ToString("00") + " "); Console.WriteLine(); } Console.WriteLine("-----------------------"); } }} static void Main(string[] args) { int nSize = Convert.ToInt32(args[0]); string strDirect = "Left"; int [,] nMatrix = new int[nSize, nSize]; int nX = 0, nY = 0, nCounter = 1; nMatrix[0, 0] = nCounter; while (GetPosition(nMatrix, nSize, ref strDirect, ref nX, ref nY) == true) { nCounter = nCounter + 1; nMatrix[nY, nX] = nCounter; } for (int i = 0; i < nSize; i++) { for (int j = 0; j < nSize; j++) { Console.Write(nMatrix[i, j] + " "); } Console.Write("\r\n"); } } static bool GetPosition(int [,]nMatrix, int nSize, ref string strDirect, ref int nNextX, ref int nNextY) { if (strDirect == "Left") { if (nNextX + 1 < nSize && nMatrix[nNextY, nNextX + 1] == 0) { nNextX = nNextX + 1; return true; } else if (nNextY + 1 < nSize && nMatrix[nNextY + 1, nNextX] == 0) { nNextY = nNextY + 1; strDirect = "Up"; return true; } else return false; } else if (strDirect == "Up") { if (nNextY + 1 < nSize && nMatrix[nNextY + 1, nNextX] == 0) { nNextY = nNextY + 1; return true; } else if (nNextX - 1 >= 0 && nMatrix[nNextY, nNextX - 1] == 0) { nNextX = nNextX - 1; strDirect = "Right"; return true; } else return false; } else if (strDirect == "Right") { if (nNextX - 1 >= 0 && nMatrix[nNextY, nNextX - 1] == 0) { nNextX = nNextX - 1; return true; } else if (nNextY - 1 >= 0 && nMatrix[nNextY - 1, nNextX] == 0) { nNextY = nNextY - 1; strDirect = "Down"; return true; } else return false; } else if (strDirect == "Down") { if (nNextY - 1 >= 0 && nMatrix[nNextY - 1, nNextX] == 0) { nNextY = nNextY - 1; return true; } else if (nNextX + 1 < nSize && nMatrix[nNextY, nNextX + 1] == 0) { nNextX = nNextX + 1; strDirect = "Left"; return true; } else return false; } else return false; }如果在图形界面中那个数组还可以省略 关于.net框架的问题 请问如何使用C#在自己程序里打开PPT或者word文件 TCP局域网传输文件如何传递文件路径名呢?请高手进~~~~~ 自定义操作,说什么也不执行,高手帮忙!!!!在线等 如何实现类似qq那样的系统托盘图标闪烁效果?? invalid URI The hostname could not be parsed 外部程序调用SharePoint报错,请高手指点。。急呀~~ 为什么取不到值? 怎么样在DataGrid中加入图片,谢谢 新做的学习站点 ,欢迎大家来捧场,up有分 按纽异步动态添加??? 请问怎么封装解码器
namespace PrintArray
{
class PrintArray
{
static void Main()
{
char c = '0';
while (c != 'n' && c != 'N')
{
Console.Write("输入2-9:");
c = Console.ReadKey().KeyChar;
Console.WriteLine();
if (c < '2' || c > '9') continue;
int n = c - '0';
p1(n);
}
}
static private void p1(int n)
{
int[,] array = new int[n, n];
array[0, 0] = 1;
int gridx = 0, gridy = 0, forward = 6;
for (int i = 2; i <= n * n; i++)
{
switch (forward)
{
case 2:
if ((gridy - 1 >= 0) && (array[gridx, gridy - 1] == 0))
array[gridx, --gridy] = i;
else
{
array[++gridx, gridy] = i;
forward = 6;
}
break;
case 4:
if ((gridx - 1 >= 0) && (array[gridx - 1, gridy] == 0))
array[--gridx, gridy] = i;
else
{
array[gridx, --gridy] = i;
forward = 2;
}
break;
case 6:
if ((gridx + 1 < n) && (array[gridx + 1, gridy] == 0))
array[++gridx, gridy] = i;
else
{
array[gridx, ++gridy] = i;
forward = 8;
}
break;
case 8:
if ((gridy + 1 < n) && (array[gridx, gridy + 1] == 0))
array[gridx, ++gridy] = i;
else
{
array[--gridx, gridy] = i;
forward = 4;
}
break;
}
}
printArray(array, n);
}
static private void printArray(int[,] array, int num)
{
for (int i = 0; i < num; i++)
{
for (int j = 0; j < num; j++)
Console.Write(array[j, i].ToString("00") + " ");
Console.WriteLine();
}
Console.WriteLine("-----------------------");
}
}
}
{
int nSize = Convert.ToInt32(args[0]);
string strDirect = "Left";
int [,] nMatrix = new int[nSize, nSize];
int nX = 0, nY = 0, nCounter = 1; nMatrix[0, 0] = nCounter;
while (GetPosition(nMatrix, nSize, ref strDirect, ref nX, ref nY) == true)
{
nCounter = nCounter + 1;
nMatrix[nY, nX] = nCounter;
} for (int i = 0; i < nSize; i++)
{
for (int j = 0; j < nSize; j++)
{
Console.Write(nMatrix[i, j] + " ");
}
Console.Write("\r\n");
}
}
static bool GetPosition(int [,]nMatrix, int nSize, ref string strDirect, ref int nNextX, ref int nNextY)
{
if (strDirect == "Left")
{
if (nNextX + 1 < nSize && nMatrix[nNextY, nNextX + 1] == 0)
{
nNextX = nNextX + 1; return true;
} else if (nNextY + 1 < nSize && nMatrix[nNextY + 1, nNextX] == 0)
{
nNextY = nNextY + 1; strDirect = "Up";
return true;
} else
return false;
} else if (strDirect == "Up")
{
if (nNextY + 1 < nSize && nMatrix[nNextY + 1, nNextX] == 0)
{
nNextY = nNextY + 1; return true;
} else if (nNextX - 1 >= 0 && nMatrix[nNextY, nNextX - 1] == 0)
{
nNextX = nNextX - 1; strDirect = "Right";
return true;
} else
return false;
} else if (strDirect == "Right")
{
if (nNextX - 1 >= 0 && nMatrix[nNextY, nNextX - 1] == 0)
{
nNextX = nNextX - 1; return true;
} else if (nNextY - 1 >= 0 && nMatrix[nNextY - 1, nNextX] == 0)
{
nNextY = nNextY - 1; strDirect = "Down";
return true;
} else
return false;
} else if (strDirect == "Down")
{
if (nNextY - 1 >= 0 && nMatrix[nNextY - 1, nNextX] == 0)
{
nNextY = nNextY - 1; return true;
} else if (nNextX + 1 < nSize && nMatrix[nNextY, nNextX + 1] == 0)
{
nNextX = nNextX + 1; strDirect = "Left";
return true;
} else
return false;
} else
return false;
}如果在图形界面中那个数组还可以省略