标题:用指针来做二维数组回形遍历
只看楼主
bpl2011
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-12-4
结帖率:0
已结贴  问题点数:20 回复次数:2 
用指针来做二维数组回形遍历
如题,老师布置的作业。
用二维数组直接做可以做出来,但是怎么改成指针?(我只会把输出改成指针,但是主要思路根本没变。。)
用count这个变量来记录已经输出的个数。
用指针做我想了个思路:编四个函数“指针向上,向下,向左,向右”每运行一轮将row--,col--,但是最后编到崩溃。。希望各位大神帮助。。
#include <stdio.h>
int main()
{
 int a[100][100];
 int row,col;
 int i,j,n,count=0;
 scanf("%d%d",&row,&col);
 for(i=0;i<row;i++)
 {
     for(j=0;j<col;j++)
     {
         scanf("%d",&a[i][j]);
     }
 }
 for (n=0;;n++)
 {
   for(i=n;i<col-n;i++)
   {
    printf("%d\n",*(a[n]+i));
    count++;
   }
   if(count==row*col)
       break;
   for(j=n+1;j<row-n;j++)
   {
    printf("%d\n",*(a[j]+col-n-1));
    count++;
   }
   if(count==row*col)
       break;
   for(i=col-2-n;i>=n;i--)
   {
    printf("%d\n",*(a[row-n-1]+i));
    count++;
   }
   if(count==row*col)
       break;
   for(j=row-2-n;j>n;j--)
   {
    printf("%d\n",*(a[j]+n));
    count++;
   }
   if(count==row*col)
       break;
  }
  return 0;
}
搜索更多相关主题的帖子: 记录 include count 
2011-12-11 22:41
bpl2011
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-12-4
得分:0 
我是真心求教的,为什么没人帮助!
2011-12-12 18:09
a771270076
Rank: 2
等 级:论坛游民
帖 子:5
专家分:23
注 册:2011-12-9
得分:20 
#include <stdio.h>
int main(void)
{
    int arr[][3]={1,2,3,4,5,6};
    int (*p)[3]=arr;
    int i;
    for(;p<arr+2;p++)
    {
        for(i=0;i<3;i++)
            printf("%d\t",*(*p+i));
        putchar('\n');
    }
    return 0;
}



稍微写了一个,用指向二维数组的一维数组的指针去做好一点

[ 本帖最后由 a771270076 于 2011-12-14 12:02 编辑 ]
2011-12-13 20:03



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




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

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