鱼C论坛

 找回密码
 立即注册
查看: 3192|回复: 2

来请教一个数字打印的算法

[复制链接]
发表于 2011-10-6 23:34:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
提示需要输入数字为三角形的边长  例如输入3
即:
1 2 3
6 4
5

输入4
即:
1 2 3 4
9 10 5
8 6
7

输入5
即:
1    2   3   4  5
12 13 14 6
11 15 7
10 8
9

即按输入数字的长度顺时针方向延三角形螺旋打印,求算法...
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-7 03:25:43 | 显示全部楼层
本帖最后由 R0sЁ 于 2011-10-7 03:28 编辑

#include<stdio.h>
//建立一个矩阵,对其上三角部分赋予相应的值
//再顺序打印上三角部分
int main(void)
{
        建一个数组;

        while(1)   //在一个循环中
        {
                 先给第一行 → 赋值;

                 再↙方向赋值;
               
                 最后↑方向赋值;   // 还有跳出的条件
      
         }      // 重复→↙↑
        
         打印;
        return 0;

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-10-10 16:49:57 | 显示全部楼层
本帖最后由 酷逸 于 2011-10-10 17:22 编辑

#include<iostream.h>
void main()
{
        int x,num=1,k=0,j=0,i=0,n;
        int ch[10][10];
        cout<<"输入边长:";cin>>x;n=x;
        while(1)
        {
                for(j=i,k=i;j<n+i;j++)
                {ch[k][j]=num;num++;}
                n--;i++;j--;
                if(n==0) break;
                for(k+=1,j-=1;j>=i-1;k++)
                {ch[k][j]=num;num++;j--;}
                n--;k--;j++;
                if(n==0) break;
                for(k-=1;k>=i;k--)
                {ch[k][j]=num;num++;}
                n--;
                if(n==0) break;
        }
       
        for(k=0;k<x;k++)
        {
                for(j=0;j<x-k;j++)
                {if(ch[k][j]<10) cout<<"0"; cout<<ch[k][j]<<"  ";}
                cout<<endl;
        }
}


已解决
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-21 02:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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