打印螺旋上三角(C语言实现)
http://dl.iteye.com/upload/attachment/481616/7b36961e-1599-3a90-9162-12373c579b62.jpg#include<stdio.h>void print(int n);void main(){int n;printf("please input n(n<=20):\n");scanf("%d",&n);print(n);}void print(int n){int i=0;//x坐标int j=0;//y坐标int count=1;//打印的数从1开始int m=0;//控制方向,等于0是横向,等于1是对角线,等于2是纵向int step=1;//x,y坐标的步长int helix={0};//要打印的螺旋矩阵int max;//计算要打印的数中最大的数if(n%2==0){max=n*n/2+n/2;}elsemax=n*n/2+n/2+1;while(count<=max){helix=count++;if(m==0){//先往右横走j+=step;if(j>=n||helix!=0){//碰边,换方向m=1;j-=step;j-=step;i+=step;}}else if(m==1){//走对角线 j-=step;i+=step;if(j<0||helix!=0){m=2;i-=step;j+=step; i-=step;}}else{//向上纵向走i-=step;if(helix!=0){//碰边,换方向m=0;i+=step;j+=step;}}}///显示上三角for(i=0;i<n;i++){for(j=0;j<n;j++)if(helix!=0) printf("%-4d",helix);printf("\n");}}
当时考试的时候看到这题,感觉好熟悉,因为之前做过螺旋矩阵的题目,但是一时忘了思路。
后来做了两遍,还好做出来了。。。可能是今天状态不太好吧。。。
另参考:打印螺旋矩阵:
http://touch-2011.iteye.com/blog/1038881
原题:
http://dl.iteye.com/upload/attachment/481659/fa1bca63-404a-3573-993e-acc58aa58653.jpg
页:
[1]