画图

来源:互联网 发布:剑雨江湖灵武进阶数据 编辑:程序博客网 时间:2024/04/30 05:38

题目:实现如图输出

int i=5;   

1  2  3  4  5  

16 17 18 19 6  

15 24 25 20 7  

14 23 22 21 8  

13 12 11 10 9  

 

int i=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  

 

程序:

#include<iostream>

using namespace std;

 

void right(int,int,int,int*,int);

void down(int,int,int,int*,int);

void left(int,int,int,int*,int);

void up(int,int,int,int*,int);

 

int main(){

int a;

cin>>a;

int num=1;

const int size=a*a;

int array[size];

int i=a;

int off=0;

for(;i>0;i-=2,++off){

right(off,num,i,array,a);

num+=i;

down(off,num,i-1,array,a);

num+=i-1;

left(off,num,i-1,array,a);

num+=i-1;

up(off,num,i-2,array,a);

num+=i-2;

}

for(int i=0;i<a;i++){

for(int j=0;j<a;j++)cout<<array[i*a+j]<<'';

cout<<endl;

}

char pause;

cin>>pause;

return 0;

}

 

void right(int o,int n,int i,int* a,int s){

for(int j=0;j<i;++j,++n){

a[o*s+o+j]=n;

}

}

void down(int o,int n,int i,int* a,int s){

for(int j=0;j<i;++j,++n){

a[(o+2)*s-o-1+j*s]=n;

}

}

void left(int o,int n,int i,int* a,int s){

for(int j=0;j<i;++j,++n){

a[s*(s-o)-o-2-j]=n;

}

}

void up(int o,int n,int i,int* a,int s){

for(int j=0;j<i;++j,++n){

a[s*(s-o-1)-(j+1)*s+o]=n;

}

}

原创粉丝点击