标志哪个国家的车:有关C语言选择排序法问题寻求帮助

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/30 17:00:49
我想用函数调用来编写选择排序法,因为我的函数调用应用不熟练,所以程续有好多错误,请求高人帮忙解答一下,下面得程序错在那里,非常感谢!!
#include <stdio.h>
void main()
{
int i,j,a[11],k,temp;
for(i=1;i<=10;i++)
{
for(j=i+1;j<=10;j++)
{
if(a[j]>a[i])//判断有无比a[i]大的值,如果没有,则a[i]就是最小的,输出
printf("%d",a[i]);
else
{ k=f(i+1,10);//函数调用
temp=k;
k=a[i];
a[i]=temp;}//把a[i+1]到a[10]内求出的最小值与a[i]互换
}

}
}

int f(int x, int y)//求从a[x]到a[y]的最小值函数
{
int n,z,temp2,temp3,a[y];
for(n=X;n<=y;n++)
{
temp2=a[n];
if(a[n]<a[n+1])
{
temp3=a[n];
a[n]=a[n+1];
a[n+1]=temp3;
}

}
return(a[n]);

}

下面是编译后的错误提示:
-------------------Configuration: 2 - Win32 Debug--------------------
Compiling...
7-2'2.c
D:\练习\2\7-2'2.c(12) : warning C4013: 'f' undefined; assuming extern returning int
D:\练习\2\7-2'2.c(22) : error C2057: expected constant expression
D:\练习\2\7-2'2.c(22) : error C2466: cannot allocate an array of constant size 0
D:\练习\2\7-2'2.c(22) : error C2133: 'a' : unknown size
D:\练习\2\7-2'2.c(23) : error C2065: 'X' : undeclared identifier
Error executing cl.exe.

7-2'2.obj - 4 error(s), 1 warning(s)

1、f的定义既然写在了main后面,那么就要在main里面加入f的声明。可以在int i,j,a[11],k,temp;后面加上int f(int,int);
2、C语言声明数组时,数组大小不允许使用变量,必须使用常量。
3、你把x写成了X。

你的函数f 没有声明,要在前边声明
int f(int x, int y) ;
a[y] 不能这样声明
y要用一个常量来替换,知道是10,直接用10就可以了

大写 X 改成 小写x

D:\练习\2\7-2'2.c(12) : warning C4013: 'f' undefined; assuming extern returning int
f函数要放在 MAIN函数上边
a在主函数定义了 只能在主函数内用
其他函数里即使定义A了 也和主函数的不一样 这点要搞明白

undefined 未定义

undeclared 未声明

unknown size 未知大小

还有一些小的错误

实现的也有一些问题

比如循环
for(i=1; i<=10; i++)
for(j=i+1; j<=10; j++)

想一下, 第一个循环, 循环到9就可以了

把整个程序再改改吧, 加油:)

1、变量f没定义