C 需要帮助解决功能问题吗
我正在练习我的C语言技能,尝试编写一个程序,使用一个名为Bubbleswap的创建函数按升序重新排列数组元素。为了填充数组,我使用了随机数生成器 当我使用下面的代码时,我将得到一条消息,即Bubblesort函数缺少返回值,而它不需要返回值。因此,我认为使用bubbleswap函数的请求不能正常工作C 需要帮助解决功能问题吗,c,sorting,C,Sorting,我正在练习我的C语言技能,尝试编写一个程序,使用一个名为Bubbleswap的创建函数按升序重新排列数组元素。为了填充数组,我使用了随机数生成器 当我使用下面的代码时,我将得到一条消息,即Bubblesort函数缺少返回值,而它不需要返回值。因此,我认为使用bubbleswap函数的请求不能正常工作 //Opgave bubblesort functie #include "toolbox.h" #include <ansi_c.h> #include <stdio.h>
//Opgave bubblesort functie
#include "toolbox.h"
#include <ansi_c.h>
#include <stdio.h>
#include <time.h>
// functies //
double bubblesort (double arrayA[], int n)
{
int a,b,swap;
for (a =0;a<(n - 1);a++)
{
for (b=0;b<(n - a - 1);b++)
{
if(arrayA[b]>arrayA[b+1]) // for decreasing order use <
{
swap = arrayA[b];
arrayA[b]= arrayA[b+1];
arrayA[b+1]=swap;
}
}
}
}
// main script //
int main()
{
int aantal,i; //variables
double arrayA[1000],arrayB[1000] ;
float r;
srand(time(NULL)); // to start the random seeds
printf(" Typ het aantal getallen in. \n"); //request the elements
scanf("%d", &aantal);
for(i=0; i<aantal;i++) // fill the array with random numbers
{
arrayA[i]=rand();
}
printf("Getallen in volgorde \n"); //re-arrange the numbers with the help of bubblesort
for (i=0; i<aantal;i++)
{
r = bubblesort(arrayA, aantal); //request the function bubblesort //r =arrayA[i];
printf("%.0f \n", r);
}
getchar();
getchar();
}
函数的签名如下
double bubblesort(double arrayA[], int n)
^
arguments
^
function name
^
return value
所以您声明bubblesort返回double类型的值,但代码中没有return语句
有两种情况可能发生这种情况:
您确实希望函数返回一个值,但是您忘记了返回它,或者某些代码路径没有返回它
您为函数选择了错误的返回类型
在这种情况下,像bubblesort这样的函数根据其规范不应该返回任何内容,所以您应该将double更改为void以显式地声明这一点
但是排队
r = bubblesort(arrayA, aantal); //request the function bubblesort //r =arrayA[i];
printf("%.0f \n", r);
存储函数bubblesort的返回值。
因此,在更改返回值类型时,还必须删除这两行。函数的签名如下
double bubblesort(double arrayA[], int n)
^
arguments
^
function name
^
return value
所以您声明bubblesort返回double类型的值,但代码中没有return语句
有两种情况可能发生这种情况:
您确实希望函数返回一个值,但是您忘记了返回它,或者某些代码路径没有返回它
您为函数选择了错误的返回类型
在这种情况下,像bubblesort这样的函数根据其规范不应该返回任何内容,所以您应该将double更改为void以显式地声明这一点
但是排队
r = bubblesort(arrayA, aantal); //request the function bubblesort //r =arrayA[i];
printf("%.0f \n", r);
存储函数bubblesort的返回值。
因此,在更改返回值类型时,还必须删除这两行。您将函数声明为
double bubblesort (double arrayA[], int n)
因此编译器需要一个返回值。如果不需要,则不要以这种方式声明函数。您将函数声明为
double bubblesort (double arrayA[], int n)
因此编译器需要一个返回值。如果不需要,就不要这样声明函数。您需要使用bubblesort函数对数组进行排序,对吗?然后,您不必从函数返回任何内容。因为通过将数组发送到函数,您可以发送它们的引用,数组的元素将按排序顺序设置。但是,如果您希望从函数中返回任何东西,就像您编写的那样,您将从数组中返回一个双精度值,那么您必须返回该数据类型的值。但你没有这么做。这就是程序没有正确编译的原因 您需要使用bubblesort函数对数组进行排序,对吗?然后,您不必从函数返回任何内容。因为通过将数组发送到函数,您可以发送它们的引用,数组的元素将按排序顺序设置。但是,如果您希望从函数中返回任何东西,就像您编写的那样,您将从数组中返回一个双精度值,那么您必须返回该数据类型的值。但你没有这么做。这就是程序没有正确编译的原因 如果由于您的评论,我理解正确//r=arrayA[I];,要实现这一点,您可以改变:
r = bubblesort(arrayA, aantal,i);
以及:
如果由于您的评论,我理解正确//r=arrayA[I];,要实现这一点,您可以改变:
r = bubblesort(arrayA, aantal,i);
以及:
谢谢,我现在明白了