c - C : How to properly call function inside main 中的问题

标签 c data-structures

所以这个学期我必须处理数据结构中的这个项目,它要求我必须用 C 编写代码。问题是我对 C 有点生疏,我正在处理基本问题。其中一个问题是我必须用 C 语言编写一个简单的程序来实现 BubbleSort。 BubbleSort 算法必须是一个单独的函数并在主程序中调用它。这是我的努力。问题是它不键入排序数组。我希望你可以帮助我 。

代码:

int calculateRand()
{
    int num;
    num = (rand())%(UPPER-LOWER+1)+LOWER;
    return num;
}

void swap(int *xp, int *yp)
{
    int temp=*xp;
    *xp=*yp;
    *yp=temp;
}

void BubbleSort(int S[], int n)
{
    int up=n;
    int i,j;

    while(up>1)
    {
        j=0;
        for(i=1; i<up-1; i++)
        {
            if(S[i]>S[i+1])
            {
                swap(&S[i], &S[i+1]);
                j++;
            }
        }
    }
    for(i=0; i<n; i++)
    {
        printf("%d\n", S[i]);
    }

}


int main()
{
    int n,i;
    printf("Parakalw dwste mia timh sto n: \n");
    scanf("%d", &n);

    int S[sizeof(n)];


    printf("O mi taxinomimenos pinakas einai o exis \n");
    for(i=0; i<n-1; i++)
    {
        S[i]=calculateRand();
        printf("%d\n", S[i]);
    }

    printf("O pinakas meta thn taxinomisi einai \n");
    BubbleSort(S[sizeof(n)], n);


    return 0;
}

最佳答案

因此,如果我们从顶部开始,calculateRand() 中就会出现问题功能,因为你没有声明 UPPERLOWER变量或将它们作为参数传递给函数。 交换功能没问题。 在BubbleSort()您需要减少 up 的功能for 循环后的变量值。

while(up>1)
{
    for(i=1; i<up-1; i++)
    {
        if(S[i]>S[i+1])
        {
            swap(&S[i], &S[i+1]);
            j++;
        }
    }
    up--;
}

此外,此时您应该从 0 而不是 1 开始迭代,因为数组从索引 0 开始。所以 for(i=0; i<up-1; i++)才是正确的做法。

最后在 main()声明数组变量时的函数 S你不应该通过 sizeof(n)n是一个整数,整数的大小是 4。相反,您想使用 n因为它是int S[n];

填充数组的 For 循环应该达到 n不是n-1如果你想填充数组的所有元素。但是,如果您更改此设置,则需要在 BubbleSort() 中进行类似的更改。功能。

最后在 BubbleSort() 中函数调用你传递的是数组的最后一个元素,它是一个整数,而函数期望你传递一个数组。它应该看起来像这样 BubbleSort(S, n);相反。

关于c - C : How to properly call function inside main 中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55283536/

相关文章:

c - PCRE 二进制文件?

objective-c - 为什么 Objective C 对象的 isa 字段与其类指针有 1 个偏移量?

c - C中的链表数组

algorithm - 散列技术中散列值的均匀分布是什么意思

c - 循环在完成之前会重复自身

c - 是否有提供优先队列的 C 库?

c - 内联汇编问题

c - 为什么添加新元素后所有元素都被替换在堆栈中?

java - java中的数据结构

c - 我正在尝试从链接列表末尾的列表中添加数字