标题:[求助]问大家个C编程的题??
只看楼主
jiangxiao
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-11-9
 问题点数:0 回复次数:24 
[求助]问大家个C编程的题??


请教高手给编个程序,用C
将自然数按下图所示的次序存到N×N的二维数组A中
举例(5×5的),在数组中这样放
1 2 9 10 25

4 3 8 11 24

5 6 7 12 23

16 15 14 13 22

17 18 19 20 21

搜索更多相关主题的帖子: 编程 自然数 
2007-11-09 11:54
kuteboy
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-11-8
得分:0 
#include<stdio.h>
#define N 5
main()
{ int A[N][N];
int i,j;
for(i=0;i<N;i++)
{ printf("enter %d integer:",N);
for(j=0;j<N;j++)
scanf("%d",&A[i][j]);
}
for(i=0;i<N;i++)
{ for(j=0;j<N;j++)
{ printf("%d ",A[i][j]);
}
printf("\n");
}
}
运行后按你想存储的顺序输入数据就行了.

[此贴子已经被作者于2007-11-9 13:02:21编辑过]


2007-11-09 13:01
蓝羽翼
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-11-9
得分:0 


2007-11-09 13:17
wuzhenyu
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-11-9
得分:0 
1楼正解
2007-11-09 13:41
clwang
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-11-8
得分:0 
1lou强
2007-11-09 14:15
混混亮仔
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-6-10
得分:0 
应该是说输入的数存入的位置是那样子吧
2007-11-09 15:09
jisg_57
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-11-3
得分:0 

晕,用两个for 循环不就行了吗?

2007-11-09 19:52
yybruce
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-11-10
得分:0 
路过,学习
2007-11-10 15:04
jiangxiao
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-11-9
得分:0 
1楼的兄弟,你这样是可以的,但你看看我题的意思,是要输出N×N的
但是不是你先放到数组,再输出,这个谁也会
题中输入条件(也就是已知条件)就一个,那就是N
要求你输入10就得输出10×10得
看看题了
不过谢谢你
2007-11-12 18:48
codelet
Rank: 2
来 自:广东深圳
等 级:论坛游民
帖 子:61
专家分:37
注 册:2007-11-6
得分:0 

你说的是魔方阵的问题吧?我可以发一个我自己写的,没验过输入大奇数会不会造成内存空间失败


#include <iostream.h>
#include <iomanip.h>
void magic(int n)
{
//如果是偶数,返回
if((n % 2 == 0) || n <= 1)
return;
int i, j;

//定义两个矩阵,由它们确定输出结果
int **I, **J;
I = new int*[n];
J = new int*[n];
for (i = 0; i < n; i++)
{
I[i] = new int[n];
J[i] = new int[n];
}

//求矩阵I 和 J 的值
int t = (n - 1) / 2;
for(i = 0; i < n; i ++)
I[0][i] = J[0][n-1-i] = (t + i) % n + 1;
for(i = 1; i < n; i ++)
for(j = 0; j < n; j++)
{
I[i][j] = J[i][n - 1 - j] = I[i - 1][(n - 1 + j)%n];
}
//输出结果,是N * N 的矩阵
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
cout << setw(3) << n * (I[i][j] - 1) + J[i][j] << ' ';
}
cout << endl;
}
// cout << endl << "每行每列之和为: ";
// for (i = 0, t = 0; i < n; i++)
// t += n * (I[0][i] - 1) + J[0][i];
// cout << t << endl;

//释放空间
for(i = 0; i < n; i++)
{
delete []I[i];
delete []J[i];
}
delete []I;
delete []J;
}


Losing emotion, Finding devotion.
2007-11-13 10:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-184758-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.754893 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved