第一次写,好不容易,最基本的C++题目

来源:互联网 发布:软件开发公司口号 编辑:程序博客网 时间:2024/05/16 12:25

 输出:1     2    3   4      型

             12  13  14  5

             11  16  15  6

             10   9    8    7

         

#include<iostream>

using namespace std;


int main()
{
 int m=0,k=0,j=1,n,i=0,row=0,col=0,flagr=0,flagc=1;
 int *p;
 cout<<"输入一个数n"<<endl;
 cin>>n;
    int q=0;
 int w=n;
 p=new int[n*n];
 
 if(p==NULL)
 {
  cout<<"分配存储空间失败"<<endl;
  exit (0);
 }
 for(;i<n*n;i++)
 {
  p[i]=0;
 }
 i=0;
 if(n%2==0)
  q=n/2;
 else
  q=n/2+1;
 for(i=0;m<q;m++)
 {
  if(n<=1)
  { p[row*w+col]=i+1;
  break;
  }
  for(;k<(n+(n-1)*2+n-2);i++,k++)
  {
   p[row*w+col]=i+1;
    if((flagc==1)&&(flagr==0))
     col++;
    if((flagc==-1)&&(flagr==0))
     col--;
    if((flagr==1)&&(flagc==0))
     row++;
    if((flagr==-1)&&(flagc==0))
     row--;
    if(((row>=w-1-m)&&(col==w-1-m))||((row==w-1-m)&&(col>=w-1-m)))
    {
     flagr--;
     flagc--; 
    }
    if(((row<=m)&&(col==w-1-m))||((row==m)&&(col>=w-1-m)))
    {
     flagr++;
     flagc--;
    }
    if(((row>=w-1-m)&&(col==m))||((row==w-1-m)&&(col<=m)))
    {
     flagr--;
     flagc++;
    }
  }
     
  k=0;
  col=m+1;
  row=m+1;
  n=n-2;
  flagr=0;
  flagc=1;
 }
 cout<<" ";
 for(i=0;i<w*w;i++)
 {
  cout<<p[i]<<"  ";
  cout.width (3);
  if((i+1)%w==0)
   {
    cout<<endl<<endl;;
   }
 }
 cout<<"伤不起啊!写了两天终于出来了!";
 cout<<endl<<endl<<endl;
    delete []p;
 system("pause");
 return 0;
}