螺旋方阵,输入1 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
为啥我输出的这个?貌似是数组自增自减运算符有问题,求解。#include<iostream>#include<iomanip>usingnamespacestd;void...
为啥我 输出的这个?貌似是数组自增自减运算符有问题,求解。
#include <iostream>
#include <iomanip>
using namespace std;
void create(int a[][20],int num, int n)
{ int endnum = n*n + num -1;
// a[0][0] == num;
for(int i = 0,j = 0; num <endnum ; i++)
{
do a[i][j++] = num++; while(i+j != n-1);
do a[i++][j] = num++; while (i != j );
do a[i][j--] = num++; while (i+j != n-1);
do a[--i][j] = num++; while (i!= j);
}
//if( n%2 == 0) a[i][j] = num;
}
int main()
{
int a[20][20],startnum,n;
cout<<"Please input startnum and n:";
cin>>startnum>>n;
create(a,startnum,n);
for(int i = 0; i<n; i++)
{
for(int j=0; j<n; j++)
cout<<setw(8)<<a[i][j];
cout<<endl;
}
return 0;
}
输出应为
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 展开
#include <iostream>
#include <iomanip>
using namespace std;
void create(int a[][20],int num, int n)
{ int endnum = n*n + num -1;
// a[0][0] == num;
for(int i = 0,j = 0; num <endnum ; i++)
{
do a[i][j++] = num++; while(i+j != n-1);
do a[i++][j] = num++; while (i != j );
do a[i][j--] = num++; while (i+j != n-1);
do a[--i][j] = num++; while (i!= j);
}
//if( n%2 == 0) a[i][j] = num;
}
int main()
{
int a[20][20],startnum,n;
cout<<"Please input startnum and n:";
cin>>startnum>>n;
create(a,startnum,n);
for(int i = 0; i<n; i++)
{
for(int j=0; j<n; j++)
cout<<setw(8)<<a[i][j];
cout<<endl;
}
return 0;
}
输出应为
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 展开
2个回答
2014-06-15
展开全部
螺旋方阵,输入1 5;输出结果应为1 2 3 4 5 16 ...
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询