在下面给定的程序中含有至少5个错误,调试时只允许在原语句上进行修改,不能增加或删除整条语句或修改算法。 #include<iostream.h> #include<stdlib.h> #include<iomanip.h> #define N 30 void relist(int a[ ],int num) { int t; for(int i=0; i<num+1;i++) { for(int j=num-1; j>0; j--) { if ( a[j]<a[j+1] ) { t=a[ j ]; a[ j ]=a[ j-1]; a[ j-1]=t; } } } } void main () { int a[N],b[N]; int k=0; for(int i=0;i<N;i++) { a[i]=rand()%1000; cout<<setw(6)<<a[i]<<" "; if( (i+1)%6==0 ) cout<<endl; if(a[i]%2==0) b[k]=a[i++]; } relist(int b[N], int N); cout<<"\n按升序排列的偶数:\n"; for(int j=0;j<k;j++) { cout<<setw(8)<<b[k]; if(j==k/2) cout<<'\n'; } cout<<endl; cout<<"偶数个数:"<<k<<endl; }
时间: 2023-11-27 22:54:19 浏览: 88
1. 头文件应该是 #include<iostream> 和 #include<iomanip>
2. main 函数的返回值类型应该是 int 而不是 void
3. relist 函数中,第 2 行和第 3 行的空格符可能是全角空格符,需要替换成半角空格符
4. relist 函数中,第 6 行应该是 j>=0 而不是 j>0
5. relist 函数中,第 8 行应该是 a[j+1]>a[j] 而不是 a[j]<a[j+1]
修改后的程序如下:
```cpp
#include<iostream>
#include<stdlib.h>
#include<iomanip>
#define N 30
using namespace std;
void relist(int a[ ],int num) {
int t;
for(int i=0; i<num+1;i++) {
for(int j=num-1; j>=0; j--) {
if ( a[j+1]>a[j] ) {
t=a[ j ];
a[ j ]=a[ j+1];
a[ j+1 ]=t;
}
}
}
}
int main () {
int a[N],b[N];
int k=0;
for(int i=0;i<N;i++) {
a[i]=rand()%1000;
cout<<setw(6)<<a[i]<<" ";
if( (i+1)%6==0 ) cout<<endl;
if(a[i]%2==0)
b[k++]=a[i];
}
relist(b, k);
cout<<"\n按升序排列的偶数:\n";
for(int j=0;j<k;j++) {
cout<<setw(8)<<b[j];
if(j==k/2) cout<<'\n';
}
cout<<endl;
cout<<"偶数个数:"<<k<<endl;
return 0;
}
```
阅读全文