首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

教科书上的一道例题,在TC上运行不正确,why?解决方案

2012-02-26 
教科书上的一道例题,在TC上运行不正确,why?题目如下:编写3*3数组交换第二列与第三列数据的程序。程序书写如

教科书上的一道例题,在TC上运行不正确,why?
题目如下:
    编写3*3数组交换第二列与第三列数据的程序。
程序书写如下:
#include   <stdio.h>
#define   M   3
#define   L1   1
#define   L2   2
column(int   (*a)[M],int   i,int   j)
{
  int   *p,*r,*y,x;
  p=*a+i;y=*a+j;r=*(a+M);
  while(y <r)
    {x=*p;*p=*y;*y=x;p+=M;y+=M;}
}
main()
{
  int   k[M][M],(*p)[M],i,j,n=0;
  p=k;
  for(i=0;i <M;i++)
        for(j=0;j <M;j++)
        scanf( "%d ",p[i]+j);
  column(k,L1,L2);
  for(i=0;i <M;i++)
        for(j=0;j <M;j++)
          {
            printf( "%d   ",*((*p+i)+j));
            n+=1;
            if(n%M==0)   printf( "\n ");
          }
}
本人原原本本将书上的程序拓印下来,可在TC上运行总得不到意想中的结果,很是郁闷!高手给看看原因是啥?

[解决办法]
那个函数交换是正确的,只是你打印的表达式printf( "%d ",*((*p+i)+j))不对,可改为:
printf( "%d ",*(p+i*M+j));

热点排行