//

// main.c

// test2

//

// Created by丁小未on 13-7-14.

// Copyright (c) 2013年dingxiaowei. All rights reserved.

//

//蛇形函数问题

#include<stdio.h>

#include<string.h>

voidmain()

{

inti =0,n,k =1;

printf("请输入N:");

scanf("%d",&n); //

intj = n-1,s[100][100];

memset(s,0,sizeof(s)); //内存初始化

while(k<=n*n)

{

while(i<=n-1&&s[i][j]==0&&k<=n*n) {s[i++][j] = k++;}

i--;//不然的话上面一行i++之后越过边界了

j--;//不然会覆盖边角的那个数

while(j>=0&&s[i][j]==0&&k<=n*n) {s[i][j--] = k++;}

j++;

i--;

while(i>=0&&s[i][j]==0&&k<=n*n) {s[i--][j] = k++;}

i++;

j++;

while(j<=n-1&&s[i][j]==0&&k<=n*n) {s[i][j++] = k++;}

i++;

j--;

}

//打印输出

for(intx =0;x<n;x++)

{

for(inty =0;y<n;y++)

{

if(s[x][y]<10)

printf("%d ",s[x][y]);

else

printf("%d ",s[x][y]);

}

printf("\n");

}

}

结果: