冒泡排序函数调用
#include<stdio.h> //冒泡排序#define N 100
int arr = {0};
#define bool int
#define true 1
#define false 0
/*typedef enum
{
true = 1, false = 0
}bool;*/
void bubble_sort(int arr[], int n)
{
int i;
bool sorted = false;
for(;sorted = !sorted;n--)
{
for(i=0;i<n-1;i++)
{
if(arr>arr)
{
int temp = arr;
arr = arr;
arr = temp;
sorted = false;
}
}
}
}
int main()
{
int n;
scanf("%d", &n);
int i;
for(i=0;i<n;i++)
{
scanf("%d", &arr);
}
bubble_sort(arr, n);
for(i=0;i<n-1;i++)
{
printf("%d ", arr);
}
printf("%d\n", arr);
return 0;
}
以上是正确的代码
以下是希望的到改善的代码,我想问题就是在局部变量的问题上(希望能够通过函数调用实现!最近有点短路!!!望解决!!!!!)
#include<stdio.h> //冒泡排序
#define N 100
int arr = {0};
#define bool int
#define true 1
#define false 0
/*typedef enum
{
true = 1, false = 0
}bool;*/
void swap(int a,int b)
{
int temp = a;
a = b;
b = temp;
}
void bubble_sort(int arr[], int n)
{
int i;
bool sorted = false;
for(;sorted = !sorted;n--)
{
for(i=0;i<n-1;i++)
{
if(arr>arr)
{
swap(arr, arr);
sorted = false;
}
}
}
}
int main()
{
int n;
scanf("%d", &n);
int i;
for(i=0;i<n;i++)
{
scanf("%d", &arr);
}
bubble_sort(arr, n);
for(i=0;i<n-1;i++)
{
printf("%d ", arr);
}
printf("%d\n", arr);
return 0;
}
要用指针才可以改变调用者的变量
void swap(int *a,int *b)
{
int temp =* a;
*a = *b;
*b = temp;
} rencaixiaomeng 发表于 2019-1-3 21:57
要用指针才可以改变调用者的变量
void swap(int *a,int *b)
{
嗯,我之前试过了,吧swap哪里的参数变量改成int 型的指针也没有用 void swap(int &a, int &b)
{
int temp = a;
a = b;
b = temp;
} Mountain_gs 发表于 2019-1-4 11:46
还是不行!!!?
如图所示的问题 lemon3 发表于 2019-1-4 12:11
还是不行!!!?
如图所示的问题
c语言不支持引用,我之前不知道。
你用二楼的方法,swap()用的时候加上取地址符试试。
void swap(int *a,int *b)
{
int temp =* a;
*a = *b;
*b = temp;
}
.
.
.
swap(&arr, &arr);
.
.
. #include<stdio.h> //冒泡排序
#define N 100
int arr = { 0 };
#define bool int
#define true 1
#define false 0
/*typedef enum
{
true = 1, false = 0
}bool;*/
void swap(int *a, int *b) //这里要改
{
int temp = *a;
*a = *b;
*b = temp;
}
void bubble_sort(int arr[], int n)
{
int i;
bool sorted = false;
for (;sorted = !sorted;n--)
{
for (i = 0;i<n - 1;i++)
{
if (arr>arr)
{
swap(&arr, &arr); ////这里要改
sorted = false;
}
}
}
}
int main()
{
int n;
scanf("%d", &n);
int i;
for (i = 0;i<n;i++)
{
scanf("%d", &arr);
}
bubble_sort(arr, n);
for (i = 0;i<n - 1;i++)
{
printf("%d ", arr);
}
printf("%d\n", arr);
return 0;
} rencaixiaomeng 发表于 2019-1-4 13:43
#include //冒泡排序
#define N 100
int arr = { 0 };
还是有bug lemon3 发表于 2019-1-4 14:22
还是有bug
而且swap也是照你的换的
Mountain_gs 发表于 2019-1-4 13:41
c语言不支持引用,我之前不知道。
你用二楼的方法,swap()用的时候加上取地址符试试。
emmm还是不行呀 lemon3 发表于 2019-1-4 14:26
emmm还是不行呀
26,28行arr if (arr>arr)
{
swap(&arr, &arr);
sorted = false;
} Mountain_gs 发表于 2019-1-4 14:40
索引没传上来 Mountain_gs 发表于 2019-1-4 14:41
索引没传上来
结果好像是地址(但是又没0X!!!/ lemon3 发表于 2019-1-4 15:33
结果好像是地址(但是又没0X!!!/
main函数里的索引没改吧 Mountain_gs 发表于 2019-1-4 15:45
main函数里的索引没改吧
main函数要怎么改呀,从来没改过这儿啊!!!
#include<stdio.h> //冒泡排序
#define N 100
int arr = { 0 };
#define bool int
#define true 1
#define false 0
/*typedef enum
{
true = 1, false = 0
}bool;*/
void swap(int *a, int *b) //这里要改
{
int temp = *a;
*a = *b;
*b = temp;
}
void bubble_sort(int arr[], int n)
{
int i;
bool sorted = false;
for (;sorted = !sorted;n--)
{
for (i = 0;i<n - 1;i++)
{
if (arr>arr)
{
swap(&arr, &arr); ////这里要改
sorted = false;
}
}
}
}
int main()
{
int n;
scanf("%d", &n);
int i;
for (i = 0;i<n;i++)
{
scanf("%d", &arr);
}
bubble_sort(arr, n);
for (i = 0;i<n - 1;i++)
{
printf("%d ", arr);
}
printf("%d\n", arr);
return 0;
}
int main()
{
int n;
scanf("%d", &n);
int i;
for (i = 0; i<n; i++)
{
scanf("%d", &arr);//1
}
bubble_sort(arr, n);
for (i = 0; i<n - 1; i++)
{
printf("%d ", arr);//2
}
printf("%d\n", arr);//3
}
网页上传的时候把代码里原来的【i】给抹掉了。 Mountain_gs 发表于 2019-1-4 19:06
网页上传的时候把代码里原来的【i】给抹掉了。
谢谢大葛
页:
[1]