$$ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Self-defined math definitions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Math symbol commands \newcommand{\intd}{\,{\rm d}} % Symbol 'd' used in integration, such as 'dx' \newcommand{\diff}{{\rm d}} % Symbol 'd' used in differentiation ... $$

C语言:蛇形方阵

题目

给出一个不大于 9 的正整数 n,输出 n×n 的蛇形方阵。从右上角填上 1 开始,逆时针方向依次填入数字,如同样例所示。注意每个数字都右对齐,中间用空格隔开。

 例如:
  输入:4
  输出:
     4 3 2 1
     5 14 13 12
     6 15 16 11
     7 8 9 10


代码


#include<stdio.h>

int main(){
	int n,i,j;
	int k=0;
	scanf("%d",&n);	
	int a[10][10];
	int x=1,y=0; 

	for(i=1;i<=n;i++){
		for(j=n;j>=1;j--){
			a[i][j] = 0;
		} 	
	}  
	while( k < n*n){
		 
		while(y<n&&a[x][y+1]==0){  
			a[x][++y] = ++k;
		}	
		
		while(x<n&&a[x+1][y]==0){ 
			a[++x][y] = ++k;
		}
		
		while(y>1&&a[x][y-1]==0){
			a[x][--y] = ++k;
		}
		
		while(x>1&&a[x-1][y]==0){
			a[--x][y] = ++k;
		}
	}

	for(i = 1; i<= n; i++){
		for(j = n; j >= 1; j--){
			printf("%3d",a[i][j]); 
		} 
		printf("\n"); 
	}  
	return 0;
} 
posted @ 2022-11-18 12:00  Shin404  阅读(390)  评论(0)    收藏  举报