static void Main(string[] args)
{
int[,] x = new int[25, 25];
int iCol, iRow, n = 2;
int v = 1;
int i0, i1, j0, j;
i0 = 0; i1 = n - 1;
for (j = 0; j <= n / 2; j++)
{
j0 = j;
for (iCol = i0; iCol <= i1; iCol++) { x[j0, iCol] = v; v++; }; //输出行
for (iRow = j0 + 1; iRow <= i1; iRow++) { x[iRow, i1] = v; v++; }; //输出列
for (iCol = i1 - 1; iCol >= i0; iCol--) { x[i1, iCol] = v; v++; }; //输出行
for (iRow = i1 - 1; iRow >= i0 + 1; iRow--) { x[iRow, i0] = v; v++; }; //输出列
i0 = i0 + 1; i1 = i1 - 1;
}
int sum = 0;
for (iCol = 0; iCol < n; iCol++)
{
for (iRow = 0; iRow < n; iRow++)
{
Console.Write(x[iCol,iRow] + " ");
if(iCol+iRow==n-1)sum += x[iRow, iCol];
}
Console.WriteLine();
}
Console.WriteLine(sum);
}
C语言版:
#include <stdio.h>
int main()
{
int N;
while(scanf("%d",&N)!=EOF)
{
int a[25][25];
int iRow,iColumn,sum=0;
int i=0,j=N-1,k,v=1;
for(k=0;k<=N/2;k++)
{
int r=k;
for(iColumn=i;iColumn<=j;iColumn++)
{
a[r][iColumn]=v;
v++;
}
for(iRow=i+1;iRow<=j;iRow++)
{
a[iRow][j]=v;
v++;
}
for(iColumn=j-1;iColumn>=i;iColumn--)
{
a[j][iColumn]=v;
v++;
}
for(iRow=j-1;iRow>=i+1;iRow--)
{
a[iRow][i]=v;
v++;
}
i++;
j=j-1;
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",a[i][j]);
//if(i+j==N-1)sum+=a[i][j]; //打印对角线和
}
printf("\n");
}
printf("%d\n",sum);
}
return 0;
}
JAVA语言:
public static void main(String args[])
{
String strIn="";
System.out.println("请输入矩阵的行列数:");
InputStreamReader input=new InputStreamReader(System.in);
BufferedReader buff=new BufferedReader(input);
try
{
strIn=buff.readLine();
}
catch (IOException ex)
{
System.out.println(ex.toString());
}
int istr=Integer.parseInt(strIn);
int n=istr;
//System.out.println("这是行列数为:"+ n +"螺旋矩阵”);
int iInit=1;
int array[][]=new int[n][n];
int iCondition;
if(n%2>0)
{
iCondition=n/2+1;
}
else
{
iCondition=n/2;
}
for(int i=0;i<iCondition;i++)
{
for(int j=i;j<n-i;j++)
{
array[i][j]=iInit;
iInit++;
}
for(int k=i+1;k<n-i;k++)
{
array[k][n-i-1]=iInit;
iInit++;
}
for(int l=n-i-2;l>=i;l--)
{
array[n-i-1][l]=iInit;
iInit++;
}
for(int t=n-i-2;t>i;t--)
{
array[t][i]=iInit;
iInit++;
}
for(int m=0;m<n;m++)
{
for(int j=0;j<n;j++)
{
System.out.print(array[m][j]+" ");
}
System.out.println();
}
}
}
Console.Write(x[iCol,iRow] + " ");改变输出的行列Console.Write(x[iRow,iCol] + " ");可得出另外一种形式