C语言图形题目“晕”
输入:
n 正方形的边长
输出:
边长为 n 的数字回形方阵
程序如下
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int num,i,j,t;
scanf("%d",&num);//输入图形的大小
int sq[num+1][num+1];//建立数组化图形
memset(sq,0,sizeof(sq));//赋初值0
int x=1,y=0,vx=0,vy=1;//定义起始位置,起始速度(0,1),x为行,y为列
for(i=1;i<=num*num;i++)
{
x+=vx;y+=vy;//向下一格前进
sq[x][y]=i;//填入数字
if((x==num&&y==1)||(y==num&&x==1)||(x==num&&y==num)||(sq[x+vx][y+vy]!=0))
{t=vx;vx=vy;vy=-t;}
//如果当前位置为边角或者下一个位置已经填入数字,速度方向顺时针旋转90度
}
for(i=1;i<=num;i++)
{
for(j=1;j<=num;j++)
{
printf("%3d",sq[i][j]);
if(j==num) printf("\n");
}
}//按行打印图形
}
结果
7
1 2 3 4 5 6 7
24 25 26 27 28 29 8
23 40 41 42 43 30 9
22 39 48 49 44 31 10
21 38 47 46 45 32 11
20 37 36 35 34 33 12
19 18 17 16 15 14 13