关于标志量的使用

先看这样一个问题:

从键盘输入一个整数(1~20

则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如:

输入数字2,则程序输出:

1 2

4 3

输入数字3,则程序输出:

1 2 3

8 9 4

7 6 5

输入数字4 则程序输出:

1  2   3   4

12  13  14  5

11  16  15  6

10   9  8   7

 

程序如下(c语言):

其中flag为标志量,标志着方向的改变

 

#include <stdio.h> void main() { int n,n1,a[50][50]={0},flag=0,i=0,j=0,k=1,l=0; scanf("%d",&n); n1=n; while(k<=n1*n1) {switch (flag) {case 0 : a[i][j]=k; k++; if(j!=n-1-l) j++; else flag=1,i++; break; case 1 : a[i][j]=k; k++; if(i!=n-1-l) i++; else flag=2,j--; break; case 2: a[i][j]=k; k++; if(j!=l) j--; else flag=3,i--,l++; break; case 3: a[i][j]=k; k++; if(i!=l) i--; else flag=0,j++; break; } } for(i=0;i<n1;i++) { for(j=0;j<n1;j++) printf("%4d",a[i][j]); printf("/n"); } }

运行效果

 

 

你可能感兴趣的:(c,语言)