我如何使用指针表示法和 C 中的冒泡排序算法对函数中的数组进行排序
How do i sort an array in a function using pointer notation and the bubble sort algorithm in C
我正在尝试使用冒泡排序算法对用户输入的 6
个数字进行排序。我的程序必须是模块化的,所以我将程序编写为一个单独的函数,但我不断收到两个错误,而且我不知道如何更正它们。
Error 1.
Lvalue required in function sort_Nums(int *)
Error 2.
Expression syntax in function sort_Nums(int *)
这是我的代码:
void sort_Nums(int*picked_nums)
{
int i,step,temp;
for(step=0; step<SIZE-1; ++step)
for(i=0; i<SIZE-step-1; ++i)
{
if(*(picked_nums+i) > *(picked_nums+i)+1)
{
temp=*(picked_nums+i);
*(picked_nums+i) = *(picked_nums+i)+1;
*(picked_nums+i)+1 = temp;
}
}
printf("The numbers you chose in order are:\n");
for(i=0; i=<SIZE; ++i)
{
printf("%d\n", *(picked_nums+i));
}
printf("Press any key to return to main menu");
getchar();
}
提前致谢,如果这是一个愚蠢的问题,我很抱歉,它只是一个语法错误或其他什么,但我几乎已经编码了 9
个小时,这个作业明天到期,所以这是一种不得已的事情。
您好,您的 if
病情 if(*(picked_nums+i)>*(picked_nums+i)+1)
错了应该是if(*(picked_nums+i)>*(picked_nums+i+1))
。根据 bubble short 逻辑,您需要与数组中的下一个元素进行比较。喜欢
if (arr[1] > arr[2] )
你正在做
if (arr[1] > arr[1] + 1 ) which is wrong.
假设 arr[1] = 4 且 arr[2]=3
在以下 if
条件下它应该刷卡
if (arr[1] > arr[1+1] )
因为 if (4 > 3)
是真的
但是您的 if 条件如下所示
if (arr[1] > arr[1] + 1) 等于 if (4 > 3+1 )
为 false
此处您将 1
添加到值,而不是指针,第二行导致左值错误:
*(picked_nums+i)=*(picked_nums+i)+1;
*(picked_nums+i)+1=temp;
更正后的代码如下:
*(picked_nums+i)=*(picked_nums+i+1);
*(picked_nums+i+1)=temp;
我正在尝试使用冒泡排序算法对用户输入的 6
个数字进行排序。我的程序必须是模块化的,所以我将程序编写为一个单独的函数,但我不断收到两个错误,而且我不知道如何更正它们。
Error 1.
Lvalue required in function sort_Nums(int *)
Error 2.
Expression syntax in function sort_Nums(int *)
这是我的代码:
void sort_Nums(int*picked_nums)
{
int i,step,temp;
for(step=0; step<SIZE-1; ++step)
for(i=0; i<SIZE-step-1; ++i)
{
if(*(picked_nums+i) > *(picked_nums+i)+1)
{
temp=*(picked_nums+i);
*(picked_nums+i) = *(picked_nums+i)+1;
*(picked_nums+i)+1 = temp;
}
}
printf("The numbers you chose in order are:\n");
for(i=0; i=<SIZE; ++i)
{
printf("%d\n", *(picked_nums+i));
}
printf("Press any key to return to main menu");
getchar();
}
提前致谢,如果这是一个愚蠢的问题,我很抱歉,它只是一个语法错误或其他什么,但我几乎已经编码了 9
个小时,这个作业明天到期,所以这是一种不得已的事情。
您好,您的 if
病情 if(*(picked_nums+i)>*(picked_nums+i)+1)
错了应该是if(*(picked_nums+i)>*(picked_nums+i+1))
。根据 bubble short 逻辑,您需要与数组中的下一个元素进行比较。喜欢
if (arr[1] > arr[2] )
你正在做
if (arr[1] > arr[1] + 1 ) which is wrong.
假设 arr[1] = 4 且 arr[2]=3
在以下 if
条件下它应该刷卡
if (arr[1] > arr[1+1] )
因为 if (4 > 3)
是真的
但是您的 if 条件如下所示
if (arr[1] > arr[1] + 1) 等于 if (4 > 3+1 )
为 false
此处您将 1
添加到值,而不是指针,第二行导致左值错误:
*(picked_nums+i)=*(picked_nums+i)+1;
*(picked_nums+i)+1=temp;
更正后的代码如下:
*(picked_nums+i)=*(picked_nums+i+1);
*(picked_nums+i+1)=temp;