作者polaristing (北极星的小鼎)
看板C_Sharp
标题Re: [问题] 请问一个关於while的用法
时间Sat Feb 4 02:18:53 2006
※ 引述《liunate (测试)》之铭言:
: ※ 引述《blestadsl (松鼠)》之铭言:
: : Assign(X,9) 会回传 0、1 或 True、False
: : 当 while(1)&while(True)就会继续做 Assign(X,9)
: : 反之则离开while不做 Assign(X,9)
: : 应该是这样吧!?^o^
: 我觉得比较奇怪的地方是
: While使用()作为限定范围用,因为在C, C#, Java中使用{},而在VB.NET中使用
: End While。
我再写的问题是一个3*3的魔术方阵
排列1~9 使不管是横的.直的或斜的总和均相同
ex: 4 3 8
9 5 1
2 7 6
下面是原本完整的程式码 还有一些我其他不太清楚的问题
static void Main(string[] args)
{
int[,] X=new int [3,3];
X[1,1]=5;
while(!Assign(X,9));
}
static bool Assign(int[,] X,int count)
{
int i,j;
if(count==5)
{
if(Check(X))
{
Show(X);
Console.WriteLine();
return true;
}
else
return false;
}
当count = 5之後 下面的程式还会执行吗
还是说 return 完之後就跳出这个method吗
如果执行下面的程式了 又是如何终止整个程式
Random r=new Random();
while(true)
{
i=r.Next(0,3);
j=r.Next(0,3);
if(X[i,j]==0) break;
}
X[i,j]=count;
X[2-i,2-j]=10-count;
bool ra=Assign(X,count-1);
X[i,j]=0;
X[2-i,2-j]=0;
这边 什麽时候会执行阿
return ra;
}
static bool Check(int[,] X)
{
//X=new int[,] {{8,1,6},{3,5,7},{4,9,2}};
bool ok=true;
for(int i=0;i<3;i++)
{
int sum=0;
for(int j=0;j<3;j++)
sum+=X[i,j];
if(sum!=15) ok=false;
sum=0;
for(int j=0;j<3;j++)
sum+=X[j,i];
if(sum!=15) ok=false;
}
if(X[0,0]+X[1,1]+X[2,2]!=15) ok=false;
if(X[2,0]+X[1,1]+X[0,2]!=15) ok=false;
return ok;
}
static void Show(int[,] X)
{
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
Console.Write(X[i,j]);
Console.WriteLine();
}
}
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.216.248.18