1.改错题 【程序功能】程序建立一个固定大小数组,通过随机数方式对数组内的元素进行赋值。通过函数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-21 15:03:08 浏览: 61
修改后的代码如下:
```
#include <stdlib.h>
#include <time.h>
#include <iostream>
using namespace std;
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 Before Sort:" << endl;
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. BubbleSort 函数的参数类型改为 int a[],表示接收一个整数数组。
2. 修改 BubbleSort 函数内的 if(flag=0) 为 if(flag == 0),修正了赋值为比较的错误。
3. 修改 main 函数调用 BubbleSort 函数的参数,将 a[N] 改为 a。
4. 修改 main 函数输出排序后的数据时,for 循环条件将 <=N 改为 <N,否则会多输出一个元素。
注:本次修改仅为演示修改错误程序的过程,实际编程中应该避免出现这样的错误。
阅读全文