改正错误#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 10:54:18 浏览: 78
vc++2008编译不了#include<iostream.h>头文件
4星 · 用户满意度95%
修改后的代码如下:
```
#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] < 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;
}
```
主要修改如下:
1. `#include<iostream>`,头文件名应该去掉“.h”;
2. `using namespace std;`,添加命名空间;
3. `relist(int b[N], int N)`,函数调用时不需要再次定义参数类型;
4. `b[k]=a[i++];`,应该改为 `b[k++]=a[i];`,否则会跳过奇数位置;
5. `cout<<setw(8)<<b[k];`,应该改为 `cout<<setw(8)<<b[j];`,否则输出有误。
同时,建议在函数和变量名中使用有意义的单词,以提高代码的可读性。
阅读全文