#include<bits/stdc++.h> using namespace std; #define MAXSIZE 1001 int main(){ int a[1001]; int n; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ if(a[i]==a[j]){ n--; a[j]=0;} } } for(int i=1;i<=n;i++){ if(a[i]!=0) { sort(a+1,a+n);} cout<<a[i]<<' '; }cout<<n; return 0; } 修改代码
时间: 2023-06-22 22:33:25 浏览: 108
这段代码存在一些问题,先列出一下:
1. 定义数组大小应该使用 MAXSIZE 而不是 1001。
2. 在第三个 for 循环中,应该使用 n 而不是 MAXSIZE。
3. 在第三个 for 循环中,应该先判断 a[i] 是否为 0 再输出。
4. 在第三个 for 循环中,应该在排序前使用一个 if 判断,判断是否需要排序。
修改后的代码如下:
```c++
#include<bits/stdc++.h>
using namespace std;
#define MAXSIZE 1001
int main(){
int a[MAXSIZE];
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
if(a[i]==a[j]){
n--;
a[j]=0;
}
}
}
if(n > 0) {
sort(a+1,a+n+1);
for(int i=1;i<=n;i++){
if(a[i]!=0) {
cout<<a[i]<<' ';
}
}
}
cout<<n;
return 0;
}
```
修改后代码中,第 3 个 for 循环中,先判断 a[i] 是否为 0,如果不为 0 再输出,这样可以避免输出错误。另外,在进行排序之前,先判断 n 是否大于 0,因为如果 n 为 0,那么就不需要进行排序和输出了。
阅读全文