我对bubble排序很好奇,所以我制作了一个函数,它接受用户输入,并将值存储在数组的位置上,但它一直输出一些垃圾值。

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

void sort(int*z);
void swap(int* element1Ptr,int* element2Ptr);

int main(void)
{
    int number[10];
    int input;
    int* sorting;

    sorting = number;
    printf("Please enter a number less than 10 digits long");
    scanf_s("%d", &input);
    for (int i=0; i<10;i++)
    {
        number[9-i]=input%10;
        input/=10;
    }
    printf("\n");
    sort(sorting);
    printf("%d\n",number[0]);
}

我是错误的气泡排序代码还是传递错误的变量?
void sort(int* z)
{
    int pass; /* pass counter */
    int j; /* comparison counter */

    /* loop to control passes */
    for ( pass = 0; pass < 11; pass++ )
    {
        /* loop to control comparisons during each pass */
        for ( j = 0; j < 10; j++ )
        {
             /* swap adjacent elements if they are out of order */
             if ( z[ j ] > z[ j + 1 ] )
             {
                 swap( &z[ j ], &z[ j + 1 ] );
             } /* end if */
        } /* end inner for */
    } /* end outer for */
}/* end function bubbleSort */

void swap(int* element1Ptr,int* element2Ptr)
{
    int hold = *element1Ptr;
    *element1Ptr = *element2Ptr;
    *element2Ptr = hold;
} /* end function swap */

最佳答案

我在尝试打印数组中的第一个值时遇到的错误,如果没有0数字编号,则该值始终为10

 printf("%d\n", number[0]);

应该读
 printf("%d\n", number[9]);

我要放置这些值的循环是把它们放错了地方,所以我就这样固定了
for (int i=0; i<10; i++)
{
     number[i] = input % 10;
     input /= 10;
}

这就是我所改变的一切,一切都很好。

10-04 21:58
查看更多