我的冒泡排序程序遇到了问题。我已经完成了所有工作,除非我遇到问题,我的函数调用我的swap()
函数..然后将输入用作参数... < / p>
我尝试了很多不同的方法,下面是我最近的尝试。
我需要将交换作为单独的函数。 - - - - - - - - - 编辑 - - - - - - - - - - - - - - - 根据你的建议,尤其是Haris和BLUEPIXY,我的代码似乎正在运行..
虽然它有一些错误,并说它无法启动(我假设这与代码块有关,因为它给了我一些问题)
澄清其系统错误而非codeblocks错误 没有更多的错误代码
这是我的代码:
#include <stdio.h>
#define MAX 9
//moved values up here so it would be declared before its used below
int values[] = {7, 3, 9, 4, 6, 1, 2, 8, 5};
//functions
void printValues(){
int i;
printf ("{");
for(i = 0;i < 9;i ++){//small for loop to iterate through each element in array
printf("%d ", values[i]);
}//end for loop
printf("}");
} //end printValues
void swap(int *x, int *y){
int* temp;
*temp = *x;
*x = *y;
*y = *temp;
} //end swap function
void sort(){
int i;
int j;
for (i=0;i<9;i++){ // starts our loop; loops 9 times, one for each int, increments for each loop.
for (j=0;j<9-i-1;j++){//starts at max length minus 1 minus i's current pass
if (values[j] > values[j + 1]){
swap(&values[j] , &values[j+1]);
}//end if statement
}//end secondary for loop
}//end main for loop
} //end sort function
//# list; 9 integers
int main(){
printf("Before: \n");
printValues();
sort();
printf("After: \n");
printValues();
return(0);
} // end main
答案 0 :(得分:1)
我可以在您的代码中发现两个问题..
1)额外的半结肠
void swap(*x, *y){
temp = x;
x = y;
y = temp;
}; //end swap function
// ^ Should not have a semi-colon there
在函数原型的末尾给出了分号,在代码中也缺少。其他功能也是如此。
2)变量未定义
temp
变量在swap()
中未声明。做
int* temp;
3)
中的参数类型swap()
函数
将swap()
功能更改为
void swap(int* x,int* y)
4)您将整数传递给
swap()
函数。最好将变量的地址传递给swap()
,然后使用它进行交换。与评论中的BLUEPIXY建议一样。
你的功能应该是
void swap(int *x, int *y)
{
int temp = *x;
*x = *y;
*y = temp;
}
而且,你应该把它称为,
swap(&values[j] , &values[j+1]);