六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 35|回复: 0

打印螺旋上三角(C语言实现)

[复制链接]

升级  16%

80

主题

80

主题

80

主题

举人

Rank: 3Rank: 3

积分
248
 楼主| 发表于 2013-1-26 14:03:24 | 显示全部楼层 |阅读模式

 
 
#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[20][20]={0};//要打印的螺旋矩阵int max;//计算要打印的数中最大的数if(n%2==0){max=n*n/2+n/2;}elsemax=n*n/2+n/2+1;while(count<=max){helix[j]=count++;if(m==0){//先往右横走j+=step;if(j>=n||helix[j]!=0){//碰边,换方向m=1;j-=step;j-=step;i+=step;}}else if(m==1){//走对角线    j-=step;i+=step;if(j<0||helix[j]!=0){m=2;i-=step;j+=step;                i-=step;}}else{//向上纵向走i-=step;if(helix[j]!=0){//碰边,换方向m=0;i+=step;j+=step;}}}///显示上三角for(i=0;i<n;i++){for(j=0;j<n;j++)if(helix[j]!=0)     printf("%-4d",helix[j]);printf("\n");}} 
 
 当时考试的时候看到这题,感觉好熟悉,因为之前做过螺旋矩阵的题目,但是一时忘了思路。
后来做了两遍,还好做出来了。。。可能是今天状态不太好吧。。。
 
 
 另参考:打印螺旋矩阵:
http://touch-2011.iteye.com/blog/1038881
 
 
原题:
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表