N*N矩阵的输出方式 问题。。。。。

dazhuaye 2009-05-06 02:44:34
如何让一个N*N的矩阵的输出形式是这样的呢?比如
输入N=3 则输出1 2 3
8 9 4
7 6 5
N=4 则输出 1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7


给出关键部分代码就OK~!!~在线等。。。。
...全文
253 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
magipan 2009-05-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 liangkaiyu 的回复:]
引用 5 楼 magipan 的回复:
发现楼上的编程思路跟我很相似
而且不只一次了...

不知道该庆幸还是该节哀...
唉!
晕!
[/Quote]
可能我在哪儿看到过你写的,然后借鉴了,呵呵
qq675927952 2009-05-06
  • 打赏
  • 举报
回复
up LS各位。。。
zhanghuayi_xiyou 2009-05-06
  • 打赏
  • 举报
回复

第二次见这个帖子

include <stdio.h>

#define N 3

int main()
{
int irow = 0;
int icol = 0;
int inum = 1;
int icount = N -1;
int imove_num = 0;
int array[N][N];

(void)memset(array, 0, sizeof(array));
do
{
for (imove_num = 0; imove_num < icount; imove_num++)
{
array[irow][icol] = inum++;
icol++;
}
for (imove_num = 0; imove_num < icount; imove_num++)
{
array[irow][icol] = inum++;
irow++;
}
for (imove_num = 0; imove_num < icount; imove_num++)
{
array[irow][icol] = inum++;
icol--;
}
for (imove_num = 0; imove_num < icount; imove_num++)
{
array[irow][icol] = inum++;
irow--;
}
irow++;
icol++;
icount = icount - 2;
}while (icount > 0);
if (0 == icount)
{
array[irow][icol] = inum;
}

for (irow = 0 ; irow < N ; irow++)
{
for (icol = 0 ; icol < N;icol++)
{
printf("%5d", array[irow][icol]);
}
printf("\n");
}

return 1;
}

liangkaiyu 2009-05-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 magipan 的回复:]
一个笨法子,以前有人问过写的
C/C++ code#include <stdio.h>
#define N 100

void print(int a[][N],int n);
int main()
{
int arr[N][N],r1,r2,c1,c2,i,j,n,k;
printf("Input n:");
scanf("%d",&n);
r1=0;//第一行
c1=0;//第一列
r2=n-1;//最后行
c2=n-1;//最后列
i=1;
k=n*n;
while(1)//每次填充四个最外的边
{
for(j=c1;j<=c2;j++)
{

[/Quote]
发现楼上的编程思路跟我很相似
而且不只一次了...

不知道该庆幸还是该节哀...
唉!
晕!
magipan 2009-05-06
  • 打赏
  • 举报
回复
一个笨法子,以前有人问过写的
#include <stdio.h>
#define N 100

void print(int a[][N],int n);
int main()
{
int arr[N][N],r1,r2,c1,c2,i,j,n,k;
printf("Input n:");
scanf("%d",&n);
r1=0;//第一行
c1=0;//第一列
r2=n-1;//最后行
c2=n-1;//最后列
i=1;
k=n*n;
while(1)//每次填充四个最外的边
{
for(j=c1;j<=c2;j++)
{
arr[r1][j]=i++;
}
if(i>k)
{
break;
}
r1++;
for(j=r1;j<=r2;j++)
{
arr[j][c2]=i++;
}
if(i>k)
{
break;
}
c2--;
for(j=c2;j>=c1;j--)
{
arr[r2][j]=i++;
}
if(i>k)
{
break;
}
r2--;
for(j=r2;j>=r1;j--)
{
arr[j][c1]=i++;
}
if(i>k)
{
break;
}
c1++;
}
print(arr,n);

return 0;
}

void print(int a[][N],int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
printf("\n");
}
warm_fish 2009-05-06
  • 打赏
  • 举报
回复
int main()
{
int n;
cout<<"input the numbers: \n";
cin>>n;
int a[20][20];
int left, right, up, down;
left = up = 0;
right = down = n - 1;
int s = 1;
while (left <= right)
{
for (int i=left; i<=right; i++)//顺序横向
a[up][i] = s++;
up++; //下移一行
for ( i=up; i<=down; i++)//顺序纵向
a[i][right] = s++;
right--; //左移一列
for ( i=right; i>=left; i--)//顺序横向
a[down][i] = s++;
down--; //上移一行
for ( i=down; i>=up; i--)//顺序纵向
a[i][left] = s++;
left++;
}
for ( int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
printf("%3.0d ",a[i][j]);
cout << endl;
}



return 1;
}
tian428 2009-05-06
  • 打赏
  • 举报
回复

int main(int argc,char **argv)
{
int N=atoi(argv[1]);
int n=N*N;
int ceng=1;
int k;
int a[N][N];
int i=N/2,j=(N-1)/2;
if(N%2==0){
a[i][j++]=n--; //rinht
a[i--][j]=n--; //up
a[i][j--]=n--; //left
a[i][j--]=n--; //left
ceng=3;
}
else{
a[i][j--]=n--;
ceng=2;
}

for(;n>0;ceng+=2){
for(k=0;k<ceng-1;k++)
a[i++][j]=n--;
for(k=0;k<ceng;k++)
a[i][j++]=n--;
for(k=0;k<ceng;k++)
a[i--][j]=n--;
for(k=0;k<ceng+1;k++)
a[i][j--]=n--;
}

for(i=0;i<N;i++){
for(j=0;j<N;j++)
printf("%d\t", a[i][j]);
printf("\n");
}

return 0;
}

[tian428@DBL test]$ ./a.out 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
[tian428@DBL test]$ ./a.out 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
yingkundu 2009-05-06
  • 打赏
  • 举报
回复
#include<stdio.h>

main()
{
int nub=0;
int i,j;
int out=1;
printf("please input the number..\n");
scanf("%d",&nub);
for(i=0;i<nub;i++)
{
for(j=0;j<nub;j++)
printf(" %d",out++);
printf("\n");


}
return 0;

}
coverallwangp 2009-05-06
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;

void main()
{
int N;
cin >> N;
int a = 1;
for (int i = 0;i < N;i++)
{

for (int j = 0;j < N;j++)
{
cout << a << " ";
a++;
}

cout << endl;
}

}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧