|
发表于 2023-11-14 22:19:38
|
显示全部楼层
这段代码存在一些问题,首先是 gets 函数已经被废弃,不建议使用。其次,在 main 函数中调用 arr 函数时,应该使用 arr(a) 而不是 void arr(int a[10]) 。最后,在 arr 函数中,循环的终止条件应该是 i < 9 而不是 i < 10 ,因为在比较 a[ i] 和 a[i + 1] 时, i 的最大值只能是8,否则会超出数组范围。
修正后的代码如下所示:
- #include <stdio.h>
- void arr(int a[10]);
- int main()
- {
- int j;
- int a[10];
- for (j = 0; j < 10; j++)
- {
- scanf("%d", &a[j]);
- }
- arr(a);
- for (j = 0; j < 10; j++)
- {
- printf("%d ", a[j]);
- }
- return 0;
- }
- void arr(int a[10])
- {
- int i, j, c;
- for (i = 0; i < 9; i++)
- {
- for (j = 0; j < 9 - i; j++)
- {
- if (a[j] > a[j + 1])
- {
- c = a[j];
- a[j] = a[j + 1];
- a[j + 1] = c;
- }
- }
- }
- }
复制代码
这样修改后的代码将会正确地使用气泡排序对输入的数组进行排序,并输出排序后的结果。 |
|