注册 登录
编程论坛 新人交流区

[求助]为什么数据没改变?

HaPpY随心 发布于 2007-10-04 11:02, 598 次点击

//输出螺旋方阵
#include <iostream>
using namespace std;

void main()
{

int i,j,n,k;
int a[100][100];
cout <<"请输入方阵的阶数:"<<endl;
cin >>n;

a[0][0]=1;
for(k=n;k<(n+1)/2;k--,a[n-k][n-k]=a[n-k][n-k+1]+1)
{
i=n-k;
for(j=n-k+1;j<k;j++)
{
a[i][j]=a[n-k][n-k]+j;
}
j=k-1;
for(i=n-k+1;i<k;i++)
{
a[i][j]=a[n-k][k-1]+i;
}
i=k-1;
for(j=k-1-1;j>=n-k;j--)
{
a[i][j]=a[k-1][k-1]+(k-1)-j;
}
j=n-k;
for(i=k-1-1;i>n-k;i--)
{
a[i][j]=a[k-1][n-k]+(k-1)-i;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cout <<a[i][j];
cout <<"\t";
}
cout <<endl;
}
}

13 回复
#2
HaPpY随心2007-10-04 11:33
想输出类似:
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
#3
xhtang2007-10-04 15:03

#include<stdio.h>
void main()
{
int i,j,n,m,z,k,p; int a[11][11];
scanf("%d",&n);
p=n;
z=1;
m=(n+1)/2;
for(k=1;k<=m;k++,n--)
{
for(i=k, j=k; j<=n;j++)
a[i][j]=z++;

for(i=i+1, j=j-1; i<=n; i++)
a[i][j]=z++;
for(j=n-1,i=i-1;j>=k;j--)
a[i][j]=z++;
for(j=j+1,i=i-1;i>k;i--)
a[i][j]=z++;
}

for(i=1;i<=p;i++)
{
for(j=1;j<=p;j++)
printf("%-4d",a[i][j]);
printf("\n");
}

}

#4
canyue2007-10-04 15:15
可用行指针和列指针操作。
#5
HaPpY随心2007-10-04 16:10
回复:(xhtang)#include void main(...
谢谢3楼
要是想输出改为:
1 2 3 4 5
16 17 18 19 6
15 22 21 20 7
14 23 24 25 8
13 12 11 10 9

或者:

25 24 23 22 21
10 9 8 7 20
11 2 1 6 19
12 3 4 5 18
13 14 15 16 17
应该怎么改呢?
#6
oppe2007-10-04 17:02
25 24 23 22 21
10 9 8 7 20
11 2 1 6 19
12 3 4 5 18
13 14 15 16 17
3楼程序输出时该成printf("%-4d",26-a[i][j]); 就行了
#7
HaPpY随心2007-10-04 17:16
感谢6楼;
1 2 3 4 5
16 17 18 19 6
15 22 21 20 7
14 23 24 25 8
13 12 11 10 9
应该怎么改呢
#8
oppe2007-10-04 17:38

N是一定的吗?

#9
oppe2007-10-04 18:09
#include<stdio.h>
int main()
{
int a[20][20],i,j,k,n;
scanf("%d",&n);
for(j=0;j<n;j++) a[0][j]=j+1;
for(i=1;i<n;i++) a[i][n-1]=n+i;
for(k=--j+i--;j>=0;j--) a[n-1][j]=k++;
for(i--;i;i--) a[i][0]=k++;
for(i=1;i<n-1;i++)
if(i%2)
for(j=1;j<n-1;j++) a[i][j]=k++;
else for(j=n-2;j;j--) a[i][j]=k++;
for(i=0;i<n;i+=printf("\n"))
for(j=0;j<n;j++)
printf("%-4d",a[i][j]);
}
#10
HaPpY随心2007-10-04 18:41

不一定的,N由键盘
输入

#11
HaPpY随心2007-10-04 18:51
谢谢,今天对数字矩阵的输出
有了解了。
#12
balcony5202007-10-04 18:54

呵呵,谢了啊

#13
giant6112007-10-04 21:11
回复:(canyue)可用行指针和列指针操作。
行指针和列指针是怎么回事啊?能祥谈吗?谢谢
#14
HaPpY随心2007-10-06 21:39
回复:(giant611)回复:(canyue)可用行指针和列指...
论坛上有对指针作详细解说的
1