我通过使用名为Bubbleswap的创建函数编写程序来重新排列数组元素,从而练习我的C技能。为了填充数组,我使用了随机数生成器。
当我使用下面的代码时,我会得到Bubblesort函数缺少返回值的消息,而它不应该需要一个。因此我认为使用bubbleswap功能的请求无法正常工作。
//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();
}
答案 0 :(得分:1)
该功能的签名如下
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的返回值。 因此,在更改返回值类型时,您还必须删除这两行。
答案 1 :(得分:1)
您将该函数声明为
double bubblesort (double arrayA[], int n)
因此编译器需要返回值。如果你不需要,那么不要那样声明这个函数。
答案 2 :(得分:1)
您需要使用spark-submit \
--class Hello \
--master spark://master:7077 \
--num-executors 6 \
--conf spark.executor.extraJavaOptions="-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseCompressedOops" \
first.jar
函数对数组进行排序,对吗?然后你不必从函数返回任何东西。因为通过将数组发送到函数,您可以发送它们的引用,并且将按排序顺序设置数组的元素。但是如果你想从函数中返回任何东西(就像你写的那样你将从数组中返回一个double值),你必须返回该数据类型的值。但你没有这样做。这就是程序没有正确编译的原因。
答案 3 :(得分:1)
如果由于你的评论//r =arrayA[i];
我理解正确,那么你可以改变:
r = bubblesort(arrayA, aantal,i);
和
double bubblesort (double arrayA[], int n,int i)
{
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;
}
}
}
return arrayA[i];
}