zoukankan      html  css  js  c++  java
  • 控制台输出螺旋型数字

    先上最终效果图

     

    对输入的指定数组规模做一个螺旋型的数字输出:

    假设输入3,输出如下:

    1  2  3

    8  9  4

    7  6  5

     

    按照这种顺序进行。

    实现代码如下:

     1 #include <iostream>
     2 #include<iomanip>
     3 using namespace std;
     4 
     5 void inputGrid(int n,int *m)
     6 {//n表示规模,m为二维数组指针
     7     int row=0,line=0,flag=0;//row,line表示第几次行处理或列处理;
     8     int i=0,j=-1;
     9     for(int num=1;num<=n*n;)
    10     {
    11         if(!flag)
    12         {
    13             //行处理
    14             int addnum;
    15             if(row%2==0)addnum=1;//往前走
    16             else addnum=-1;//往回走
    17             int num_row=n-row;
    18             while(num_row)
    19             {//将本行剩余空白列全部填满
    20                 num_row--;
    21                 j+=addnum;
    22                 *(m+n*i+j)=num;
    23                 num++;
    24             }
    25             row++;
    26             flag=1;
    27 
    28         }
    29         else
    30         {
    31             //列处理
    32             int addnum;
    33             if(line%2==0)addnum=1;//往前走
    34             else addnum=-1;//往回走
    35             int num_line=n-line-1;
    36             while(num_line)
    37             {//将本列剩余空白项全部填满
    38                 num_line--;
    39                 i+=addnum;
    40                 *(m+n*i+j)=num;
    41                 num++;
    42             }
    43             line++;
    44             flag=0;
    45         }
    46     }
    47     /*for(int i=0;i<n*n;i++)
    48     {
    49         *(m+i)=i;
    50     }*/
    51 }
    52 
    53 int main()
    54 {
    55     int n=1;
    56     int *m,*tm;
    57     while(n!=-1)
    58     {
    59     cout<<"请输入回形数规模:(输入-1退出)";
    60     cin>>n;
    61     if(n==-1)
    62         return 0;
    63     m=(int *)malloc(n*n*sizeof(int));
    64     inputGrid(n,m);
    65     for(int i=0;i<n;i++)
    66     {
    67         tm=m+n*i;
    68         for(int j=0;j<n;j++)
    69         {
    70             cout<<setw(3)<<*(tm+j)<<" ";
    71         }
    72         cout<<"\n";
    73     }
    74     }
    75     //return 0;
    76 }
  • 相关阅读:
    大一上的总结和大一下学期的目标
    [转]使用c# 模拟网站登录
    RegisterStartupScript和RegisterClientScriptBlock的区别
    关于PHP header函数跳转的问题
    asp.net 动态二维数组
    生成xml
    我们应该明确几个问题
    asp+ajax asp中ajax的中文乱码
    asp.net操作XML
    PHP Header用于页面跳转要注意的几个问题总结
  • 原文地址:https://www.cnblogs.com/hanyulcf/p/1683098.html
Copyright © 2011-2022 走看看