#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 12:54:46 浏览: 59
这段代码有一些问题,比如:
1. `iostream.h` 库已经过时,应该使用 `iostream` 库;
2. `main()` 函数的返回值类型应该是 `int`,而不是 `void`;
3. `relist()` 函数的定义和调用方式有误,应该将参数类型和变量名分开,例如 `void relist(int a[], int num)` 和 `relist(b, k)`;
4. 在 `relist()` 函数中,第二个循环的条件应该是 `j>=0` 而不是 `j>0`;
5. 在 `relist()` 函数中,交换数组元素的语句有误,应该是 `t=a[j]; a[j]=a[j-1]; a[j-1]=t;`;
6. 在输出排好序的偶数时,应该输出 `b[j]` 而不是 `b[k]`。
下面是修改后的代码:
```
#include <iostream>
#include <iomanip>
#include <cstdlib>
#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] < a[j + 1]) {
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];
k++;
}
}
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;
}
```
阅读全文