改错题 【程序功能】程序建立一个固定大小数组,通过随机数方式对数组内的元素进行赋值。通过函数BubbleSort对数组内的数据按照非递减方式进行排序。最终输出排序后的结果。 【程序调试要求】在给定的程序中,只允许在原语句上进行修改,不能增加或删除整条语句或修改算法。 【运行结果】排序前数组内的所有数据,排序后的按非递减排列的整数 #include <stdlib.h> #include <time.h> #include <iostream.h> int N = 10; void BubbleSort(int a,int n); int main() { srand((unsigned int)time(0)); int a[N]={0}; int i; for(i=0;i<N;i++) a[i] = rand()%100; cout << "The Data Befor Sort:"<< endl; for(i=0;i<N;i++) cout << a[i] << "\t"; cout << endl; BubbleSort(a[N],N); cout << "The Data After Sort:"<< endl; for(i=0;i<=N;i++) cout << a[i] << "\t"; cout << endl; return 0; } void BubbleSort(int a,int n) { int i,k,t; int flag=0; i=0; while(i<n-1) { k = n-1; while(k>i) { if(a[k-1]>a[k]) { t = a[k-1]; a[k-1] = a[k]; a[k] = t; flag = 1; } k--; } i++; if(flag = 0) break; else flag = 0; } }
时间: 2024-01-19 21:04:46 浏览: 19
修改后的代码如下:
```
#include <stdlib.h>
#include <time.h>
#include <iostream.h>
const int N = 10; //将变量N修改为常量const int N
void BubbleSort(int a[],int n); //修改函数BubbleSort的参数
int main() {
srand((unsigned int)time(0));
int a[N]={0};
int i;
for(i=0;i<N;i++)
a[i] = rand()%100;
cout << "The Data Before Sort:"<< endl; //将Befor修改为Before
for(i=0;i<N;i++)
cout << a[i] << "\t";
cout << endl;
BubbleSort(a,N); //修改函数调用
cout << "The Data After Sort:"<< endl;
for(i=0;i<N;i++) //修改循环边界
cout << a[i] << "\t";
cout << endl;
return 0;
}
void BubbleSort(int a[],int n) { //修改参数
int i,k,t;
int flag=0;
i=0;
while(i<n-1)
{
k = n-1;
while(k>i)
{
if(a[k-1]>a[k])
{
t = a[k-1];
a[k-1] = a[k];
a[k] = t;
flag = 1;
}
k--;
}
i++;
if(flag == 0) //将=修改为==
break;
else
flag = 0;
}
}
```
修改说明:
1. 将变量N修改为常量const int N,避免在程序运行中修改变量,保证程序稳定性。
2. 修改函数BubbleSort的参数,将数组参数a的类型修改为int a[],表示传入的是一个数组。
3. 将Befor修改为Before,修正输出信息的拼写错误。
4. 修改函数调用,将参数a[N]修改为a和N。
5. 修改循环边界,将输出循环的边界修改为N。
6. 修改if语句中的判断条件,将=修改为==,避免赋值操作误判为判断操作。