| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 517 人关注过本帖
标题:运行正常,但是有很多警告,请大侠给完善一下
只看楼主 加入收藏
xdh0817
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:193
专家分:195
注 册:2011-10-20
结帖率:92.86%
收藏
已结贴  问题点数:1 回复次数:5 
运行正常,但是有很多警告,请大侠给完善一下
#include<stdio.h>
void process(int (*p)[5])
{
  int i,j,k,m,*max,*min[25];
  max=*p;
  for(i=0;i<=4;i++)
  for(j=0;j<=4;j++)
  if((*(p+i)+j)>*max) max=*(p+i)+j;
  k=*(*(p+2)+2);
  *(*(p+2)+2)=*max;
  *max=k;
  for(i=0;i<=4;i++)
  for(j=0;j<=4;j++)
  min[i*5+j]=*(p+i)+j;
  for(i=0;i<=3;i++)
  {
         k=i;
         for(j=i+1;j<=24;j++)
         if(*min[j]<*min[k]) k=j;
         if(k!=i)
         {
          m=min[i];min[i]=min[k];min[k]=m;
         }
  }
  k=**p;**p=*min[0];*min[0]=k;
  k=*(*p+4);*(*p+4)=*min[1];*min[1]=k;
  k=**(p+4);**(p+4)=*min[2];*min[2]=k;
  k=*(*(p+4)+4);*(*(p+4)+4)=*min[3];*min[3]=k;
}
void main()
{
 int i,j,*p,a[5][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};
     p=a;
    process(p);
    for(i=0;i<=4;i++)
  {for(j=0;j<=4;j++)
  printf("%4d",a[i][j]);
  printf("\n");
  }
}
搜索更多相关主题的帖子: include process 
2011-11-05 20:56
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
收藏
得分:1 
a的类型是char (*)[5],p的类型是char *
p=a会被警告
*((*p+i)+j)可以简化为p[i][j]方便理解。
其他不想说太多 理解第一条就不会犯那么多警告
收到的鲜花
  • xdh08172011-11-06 01:27 送鲜花  1朵   附言:~~
2011-11-06 00:12
xdh0817
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:193
专家分:195
注 册:2011-10-20
收藏
得分:0 
以下是引用khaz在2011-11-6 00:12:35的发言:

a的类型是char (*)[5],p的类型是char *
p=a会被警告
*((*p+i)+j)可以简化为p[j]方便理解。
其他不想说太多 理解第一条就不会犯那么多警告




多谢指点~~~
2011-11-06 01:12
xdh0817
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:193
专家分:195
注 册:2011-10-20
收藏
得分:0 
回复 3楼 xdh0817
#include<stdio.h>
void process(int (*p)[5])
{
  int i,j,k,*m,*max,*min[25];
  max=*p;
  for(i=0;i<=4;i++)
  for(j=0;j<=4;j++)
  if(p[i][j]>*max) max=&p[i][j];
  k=p[2][2];
  p[2][2]=*max;
  *max=k;
  for(i=0;i<=4;i++)
  for(j=0;j<=4;j++)
  min[i*5+j]=*(p+i)+j;
  for(i=0;i<=3;i++)
  {
         k=i;
         for(j=i+1;j<=24;j++)
         if(*min[j]<*min[k]) k=j;
         if(k!=i)
         {
          m=min[i];min[i]=min[k];min[k]=m;
         }
  }
  k=p[0][0];p[0][0]=*min[0];*min[0]=k;
  k=p[0][4];p[0][4]=*min[1];*min[1]=k;
  k=p[4][0];p[4][0]=*min[2];*min[2]=k;
  k=p[4][4];p[4][4]=*min[3];*min[3]=k;
}
void main()
{
int i,j,(*p)[5],a[5][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};
     p=a;
    process(p);
    for(i=0;i<=4;i++)
  {for(j=0;j<=4;j++)
  printf("%4d",a[i][j]);
  printf("\n");
  }
}
 
 
warning 全部消除了~
2011-11-06 01:24
xdh0817
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:193
专家分:195
注 册:2011-10-20
收藏
得分:0 
以下是引用khaz在2011-11-6 00:12:35的发言:

a的类型是char (*)[5],p的类型是char *
p=a会被警告
*((*p+i)+j)可以简化为p[j]方便理解。
其他不想说太多 理解第一条就不会犯那么多警告
还有一个地方:
指针不要直接赋给int 要设一个指针变量
2011-11-06 01:26
qizhongshun
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:26
注 册:2011-9-16
收藏
得分:0 
.
2011-11-06 10:23
快速回复:运行正常,但是有很多警告,请大侠给完善一下
数据加载中...
 
   



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

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