选择排序...遇到了一点麻烦...

LC942685848 2011-12-24 11:11:11
我的程序是
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#define max 10

int EstablishList() //利用随机函数产生数组
{
int list[max],i;
for(i=0;i<max;i++)
{
list[i]=rand()%max+1;
printf("%3d",list[i]); //打印原来的数组元素
}
return list; //本行的错误提示是“cannot convert from 'int [10]' to 'int'”
}

int SelectMinKey(int list[max],int i)
{
int j;
for(i=1,j=0;i<max;i++)
{
if(list[i]<list[j])
j=i;
}
return j;
}

int SelectSort(int list[],int j)
{
int i,t;
for(i=0;i<max;++i)
{
for(i=1,j=0;i<max;i++) //找到最小值
{
if(list[i]<list[j])
j=i;
}

j=SelectMinKey(list,j);
if(i!=j) //交换位置,将最小值一道最前面
{
t=list[i];
list[i]=list[j];
list[j]=t;
}
}
return list; //本行的错误提示是cannot convert from 'int [10]' to 'int'
}

int main() //最终目的是将数组由小到大输出
{
int list[max],i,j;
EstablishList();
printf("\n");
SelectSort(list,j);
for(i=0;i<max;++i) //打印排序后的数组元素
{
printf("%3d",list[i]);
}
getchar();
return 0;
}
求高手解答...感激不尽...
...全文
72 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯本 2011-12-24
  • 打赏
  • 举报
回复
1.
max在系统中已有定义,全部改为大写的
2.
int EstablishList() //定义的是返回int的函数
...
return list; //返回的是int []数组
这样是不可以的
定义成
void EstablishList( int list[MAX])
{
...
return;
}

调用时
EstablishList(list);
3.
SelectSort同样处理
4.
程序逻辑上也有问题,SelectSort不能实现你要的,自己参考书上或网上的改下
尘缘udbwcso 2011-12-24
  • 打赏
  • 举报
回复
改成
void SelectSort(int list[],int j)
{
}

LC942685848 2011-12-24
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#define MAX 5

int main()
{
int i,t,temp,j,list[5]={2,1,4,5,3};
for(i=0;i<MAX;++i)
{
for(t=1,j=0;t<MAX;t++) //找到最小值
{
if(list[t]<list[j])
j=t;
}
if(i!=j) //交换位置,将最小值一道最前面
{
temp=list[i];
list[i]=list[j];
list[j]=temp;
}
}
for(i=0;i<MAX;++i) //打印排序后的数组元素
{
printf("%3d",list[i]);
}
getchar();
return 0 ;
}
这是我将中间排序的代码修改成了一个函数,对上面的错误有了修改,但是运行还是不对,我又找不到问题,你能不能帮帮我!!谢谢了!!

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧