| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 514 人关注过本帖
标题:麻烦看下程序哪有错误.
只看楼主 加入收藏
tangxuyuan
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-3-28
收藏
 问题点数:0 回复次数:2 
麻烦看下程序哪有错误.

麻烦看下程序哪有错误. 最好帮编一下谢谢

/*将一个5*5的矩阵中最大的元素放在中心,四个角分别放四个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一个函数实现之,用main函数调用*/
#include<stdio.h>
exchange(int*p,int*min_max,int n)
{
int temp;
temp=*(p+n);
*(p+n)=*min_max;
*min_max=temp;
}

adjust(int*p)
{
int i,j,temp,flag;
int*max,*min;
max=p;
min=p;//最大值地址赋给max,最小值地址赋给min
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(*max<*(p+5*i+j)) max=p+5*i+j;
if(*min>*(p+5*i+j)) min=p+5*i+j;
}
exchange(*p,max,12);//最大值与中心值交换
exchange(*p,min,0);//最小值与左上角元素交换
/*以下是第二个最小值赋给min*/
min=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(((p+5*i+j)!=p)&&(*min>*(p+5*i+j)))
min=p+5*i+j;
exchange(*p,*min,4);
/*以下是第三个最小值地址赋给min*/

min=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
flag=((p+5*i+j)!=p)&&((p+5*i+j)!=p+4);
if(flag&&(*min>*(p+5*i+j)))
min=p+5*i+j;
}
/* if((((p+5*i+j)!=p)&&((p+5*i+j)!=p+4)))&&(*min>*(p+5*i+j)))*/
exchange(*p,*min,20);//第三个最小值与左下角元素交换
/*以下是第四个最小值赋给min*/
min=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
flag=((p+i*5+j)!=p)&&((p+i*5+j)!=p+4)&&((p+i*5+j)!=p+20);
if (flag&&(*min>*(p+5*i+j))) min=p+5*i+j;
exchange(*p,*min,20);
}
}
main()
{
int a[5][5],i,j;
printf("please input a 5*5 matrix by line:\n");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
adjust(&a[0][0]);
printf("the adjusted matrix is:\n");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
printf("%d\n",a[i][j]);
printf("\n");}

[此贴子已经被作者于2006-4-8 15:24:21编辑过]

搜索更多相关主题的帖子: exchange include adjust 最大的 
2006-04-08 15:24
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 

错误很多
函数没有返回值
这里不是C ,是C++啊
最后面写的不规范
ADJUST函数里TEMP没用上
EXCHANGE
你传递的是内容不是地址
我改了 你看一看吧
#include<stdio.h>
void exchange(int*p,int*min_max,int n)
{
int temp;
temp=*(p+n);
*(p+n)=*min_max;
*min_max=temp;
}

void adjust(int*p)
{
int i,j,flag;
int*max,*min;
max=p;
min=p;//最大值地址赋给max,最小值地址赋给min
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(*max<*(p+5*i+j)) max=p+5*i+j;
if(*min>*(p+5*i+j)) min=p+5*i+j;
}
exchange(p,max,12);//最大值与中心值交换
exchange(p,min,0);//最小值与左上角元素交换
/*以下是第二个最小值赋给min*/
min=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(((p+5*i+j)!=p)&&(*min>*(p+5*i+j)))
min=p+5*i+j;
exchange(p,min,4);
/*以下是第三个最小值地址赋给min*/

min=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
flag=((p+5*i+j)!=p)&&((p+5*i+j)!=p+4);
if(flag&&(*min>*(p+5*i+j)))
min=p+5*i+j;
}
/* if((((p+5*i+j)!=p)&&((p+5*i+j)!=p+4)))&&(*min>*(p+5*i+j)))*/
exchange(p,min,20);//第三个最小值与左下角元素交换
/*以下是第四个最小值赋给min*/
min=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
flag=((p+i*5+j)!=p)&&((p+i*5+j)!=p+4)&&((p+i*5+j)!=p+20);
if (flag&&(*min>*(p+5*i+j))) min=p+5*i+j;
exchange(p,min,20);
}
}
void main()
{
int a[5][5],i,j;
printf("please input a 5*5 matrix by line:\n");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
adjust(&a[0][0]);
printf("the adjusted matrix is:\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
}


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-04-08 16:58
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
我大致看一下
不过 你这里思路有问题呀
自己再想想
思路问题最好自己解决
我要下了

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-04-08 17:02
快速回复:麻烦看下程序哪有错误.
数据加载中...
 
   



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

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