问题描述
我正在学习如何声明函数并在 C 中使用它们。我尝试用 C 编写砖排序算法,但无法使其工作。当我在 main 函数中编写所有内容时,算法本身工作正常,所以我认为问题在于我如何尝试声明函数。正如我所说,我是这方面的新手,所以如果我遗漏了一些明显的东西,请原谅我,并提前感谢您抽出时间帮助我。我真的很感激。
这是我的代码
#include <stdio.h>
int n,i,a[100],temp,isSorted;
int brickSort(a[],n)
{
isSorted=0;
while(isSorted==0)
{
isSorted=1;
for(i=0; i<=n-2; i=i+2)
{
if(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
isSorted=0;
}
}
for(i=1; i<=n-2; i=i+2)
{
if(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
isSorted=0;
}
}
}
for(i=0; i<n; i++)
{
printf("%d ",a[i]);
}
}
int main()
{
printf("Enter the amount of numbers ");
scanf("%d",&n);
for(i=0; i<n; i++)
{
printf("Enter number ");
scanf("%d",&a[i]);
}
return brickSort(a[],n);
return 0;
}
这是我收到的错误信息
int brickSort(a[],n)
^
main.c:5:20: error: expected declaration specifiers or ‘...’ before ‘n’
int brickSort(a[],n)
^
main.c: In function ‘main’:
main.c:53:12: warning: implicit declaration of function ‘brickSort’ [-Wimplicit-function-declaration]
return brickSort(a[],n);
^~~~~~~~~
main.c:53:24: error: expected expression before ‘]’ token
return brickSort(a[],n);
^
解决方法
你必须把参数的类型放在参数列表中。
int brickSort(int a[],int n)
,
您必须指定参数的类型来声明参数,例如:
int brickSort(int a[],int n)
并从函数调用中删除额外的 []
,例如:
return brickSort(a,n);
在这种情况下,所有变量都被声明为全局变量(设计不好),因此您实际上不需要这些参数,您可以像这样删除它们:
int brickSort(void)
return brickSort();