| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 842 人关注过本帖
标题:5*5矩阵转变函数问题
取消只看楼主 加入收藏
Danser
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-8-28
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:0 
5*5矩阵转变函数问题
新手做题,大家帮忙看看。。。。
题目:将一个5*5的矩阵中最大的元素放在中心,4个叫分别放4个最小的元素(顺序为从左到右、从上到下、从小到打依次存放)。。。。
void exchange(int (*p)[5])  //转变的函数
{
 int i,j,k=0,l,*p1,temp,a[4];
 //下面为求出最大的元素,并存放,这里应该没问题//
 p1=*p;
 for(i=0;i<5;i++)
  for(j=0;j<5;j++)
  {
      if(*p1<*(*(p+i)+j))
          p1=*(p+i)+j;
  }
 temp=*(*(p+2)+2);
 *(*(p+2)+2)=*p1;
 *p1=temp;
     
 //下面为求出4个最小元素,问题就出在这里了//
 p1=*p;
 while(k<4)  //k表示求出的最小元素的个数,值从0到3//
 {
     for(i=0;i<5;i++)  //寻找最小元素//
         for(j=0;j<5;j++)
         {
             for(l=0;a[l]!='\0';l++)   //我把前面找出的最小元素值存放在一个数组a[4]里//
                if(*(*(p+i)+j)==a[l])
                     continue;    //如果出现了跟前面求出的最小元素的值相同的情况,
                                    直接跳过下面的判断//
             if(*p1>*(*(p+i)+j)) //判断最小元素//
                p1=*(p+i)+j;
         }
  a[k]=*p1;  //把找出的最小元素值存入a,但问题就出现在这里,就是赋值失败,
                我试过printf出a[k],但得不到预期的结果//
  if(k==0)  //这里是确定最小元素存放的位置//
      i=0,j=0;
  if(k==1)
      i=0,j=4;
  if(k==2)
      i=4,j=0;
  if(k==3)
      i=4,j=4;
  temp=*(*(p+i)+j);
  *(*(p+i)+j)=*p1;
  *p1=temp;
  k++;  //求下一个最小元素//
 }
}
void main()
{
    int a[5][5];
 int i,j;
 for(i=0;i<5;i++)  //输入矩阵
  for(j=0;j<5;j++)
   scanf("%d",*(a+i)+j);
 exchange(a);
 printf("\n");
 for(i=0;i<5;i++)  //输出结果
 {
  for(j=0;j<5;j++)
   printf("%d ",*(*(a+i)+j));
  printf("\n");
 }
}
就是我标有颜色那里,应该有问题吧。。。。
我找不出错误的原因。。。。
麻烦各路老手帮忙指点一下,主要是说出哪里错误,和改怎样修改此处就行了。。。。
不用另外写出新函数的,我只想知道为什么会出错。。。。
先谢谢了。。。。
搜索更多相关主题的帖子: 函数 矩阵 
2009-08-28 16:18
快速回复:5*5矩阵转变函数问题
数据加载中...
 
   



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

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