螺旋式打印就是如:1 2 3
4 5 6
7 8 9
输出结果为:1 2 3 6 9 8 7 4 5
下面给出代码:
#include<iostream>
using namespace std;
void print(int p[6][6],int row,int col)
{
int m1=0,n1=0;
int m2=0,n2=col-1;
int m3=row-1,n3=col-1;
int m4=row-1,n4=0;
while(true){
for(int i=n1;i<n2;++i)
cout<<p[m1][i]<<" ";
for(int i=m2;i<m3;++i)
cout<<p[i][n2]<<" ";
for(int i=n3;i>n4;--i)
cout<<p[m3][i]<<" ";
for(int i=m4;i>m1;--i)
cout<<p[i][n4]<<" ";
++m1,++n1;
if(row%2==0&&m1==m3){
if((row+1)%2==0)
cout<<p[row/2+1][col/2+1]<<" ";
return;
}
++m2,--n2;
--m3,--n3;
--m4,++n4;
if(row%2!=0&&m1==m3){
cout<<p[m1][n1]<<" ";
return;
}
}
}
int main()
{
int data[6][6]={{1,2,3,4,5,6},
{20,21,22,23,24,7},
{19,32,33,34,25,8},
{18,31,36,35,26,9},
{17,30,29,28,27,10},
{16,15,14,13,12,11}};
print(data,6,6);
return 0;
}
4 5 6
7 8 9
输出结果为:1 2 3 6 9 8 7 4 5
下面给出代码:
#include<iostream>
using namespace std;
void print(int p[6][6],int row,int col)
{
int m1=0,n1=0;
int m2=0,n2=col-1;
int m3=row-1,n3=col-1;
int m4=row-1,n4=0;
while(true){
for(int i=n1;i<n2;++i)
cout<<p[m1][i]<<" ";
for(int i=m2;i<m3;++i)
cout<<p[i][n2]<<" ";
for(int i=n3;i>n4;--i)
cout<<p[m3][i]<<" ";
for(int i=m4;i>m1;--i)
cout<<p[i][n4]<<" ";
++m1,++n1;
if(row%2==0&&m1==m3){
if((row+1)%2==0)
cout<<p[row/2+1][col/2+1]<<" ";
return;
}
++m2,--n2;
--m3,--n3;
--m4,++n4;
if(row%2!=0&&m1==m3){
cout<<p[m1][n1]<<" ";
return;
}
}
}
int main()
{
int data[6][6]={{1,2,3,4,5,6},
{20,21,22,23,24,7},
{19,32,33,34,25,8},
{18,31,36,35,26,9},
{17,30,29,28,27,10},
{16,15,14,13,12,11}};
print(data,6,6);
return 0;
}