pascal二维数组(要思路)

输入:n当n=5时输出:12345109876111213141520191817162122232425... 输入:n

当n=5时 输出:1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16
21 22 23 24 25
展开
 我来答
h1415926535
2013-07-05 · TA获得超过3139个赞
知道小有建树答主
回答量:675
采纳率:100%
帮助的人:395万
展开全部

对于这题,有两种思路:

  1. 在二维数组中顺序存放数据,而在输出时动一下脑筋;

  2. 存放数据时已经按照题目中要求的顺序,然后直接输出。


下面,对于第一种思路进行讲解。

先附上代码:

var a:array[1..100,1..100]of longint;         //这是估计的数据范围;
    i,j,s,n:longint;
begin
 readln(n);


 for i:=1 to n do
  for j:=1 to n do
  begin
   inc(s);
   a[i,j]:=s;
  end;                                    //这部分是读入,不用考虑什么“要转个弯读入”啊之类的;


 for i:=1 to n do
 begin
  if odd(i) then for j:=1 to n do write(a[i,j],' ')
            else for j:=n downto 1 do write(a[i,j],' ');
  writeln;
 end;                                    //这部分是输出,只要考虑是奇数行还是偶数行就行了;


 readln;
end.
  

在所有数据都读入之后,比如当n=5,此时的二维数组内是这个样子:

1 2 3 4 5

6 7 8 9 10

11 12 13 14 15

16 17 18 19 20

21 22 23 24 25


然后在输出时用一点技巧吧,注意到,如果是奇数行(即 if odd(i) ,odd(n) 表示判断n是否是奇数),就从左往右输出,偶数行就从右往左输出,因此输出语句是上面那一段。

l00oy
2013-07-05 · TA获得超过1239个赞
知道小有建树答主
回答量:611
采纳率:78%
帮助的人:199万
展开全部

这一个例子还真没有把题目描述清楚。请从下面的题目选择一个

  1. 输出n行n列,第一个元素为1。往后递增。

  2. 输出n行5列,其中第一元素为1。往后递增。

  3. 输出5行n列,其中第一个元素为1,往后递增。

  4. ……

在此我先选择(或者说假设)是题1。

主要代码(主要是示意,非完整)

for i:=0 to n-1 do
    begin
        for j:=1 to n-1 do
            write(i*n+j,' ');
        writeln(i*n+n);
    end;

解释:

依据题1及样例。数学好的人能马上敏锐的觉察到每一个元素的值与其所在的行及列的关系是一定的(这里视n为常量,因为,输入后,n值是具体一定的)

且极易发现及证明

值=(行-1)*n+列

追问
不好意思
他的程序比较详细
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式