#include<stdio.h> #include<stdlib.h> void Bubblesort(int data[],int dataArrlength) { int i,j,n,t; for(i=1;i<=n;i++) for(j=i+1;j<=n;j++) { if(data[i]>data[j]) { t=data[j]; data[j]=data[i]; data[i]=t; } } printf("排序后的数为:\n"); for(i=1;i<=n;i++) { printf("%5d",data[i]); } } int main() { int data[20],i; int n; printf("请输入排序数个数:\n"); scanf("%d",&n); printf("请输入要排序的数据:\n"); for(i=1;i<=n;i++) { scanf("%d",&data[i]); } printf("请选择排序:\n"); Bubblesort(data,n); return 0; }
时间: 2024-03-10 09:43:40 浏览: 48
这段代码的问题在于 `for(i=1;i<=n);` 中的 `n` 没有被定义,因此会导致代码运行时出错。应该将 `n` 定义并初始化,例如在 `main()` 函数中加入 `int n = 0;`,并在输入数据时给 `n` 赋值。另外,冒泡排序中的两个循环的循环变量也应该从 0 开始,因为数组下标是从 0 开始的。修改后的代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
void Bubblesort(int data[], int dataArrlength) {
int i, j, t;
for (i = 0; i < dataArrlength - 1; i++)
for (j = i + 1; j < dataArrlength; j++)
if (data[i] > data[j]) {
t = data[j];
data[j] = data[i];
data[i] = t;
}
printf("排序后的数为:\n");
for (i = 0; i < dataArrlength; i++) {
printf("%5d", data[i]);
}
}
int main() {
int data[20], i;
int n = 0;
printf("请输入排序数个数:\n");
scanf("%d", &n);
printf("请输入要排序的数据:\n");
for (i = 0; i < n; i++) {
scanf("%d", &data[i]);
}
printf("请选择排序:\n");
Bubblesort(data, n);
return 0;
}
```
阅读全文