控制台输出螺旋型数字
先上最终效果图
对输入的指定数组规模做一个螺旋型的数字输出:
假设输入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 }
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 }