输出旋转方形数字图形
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] + " ");可得出另外一种形式