#include<iostream> #include<fstream> using namespace std; struct people{ int gonghao; char name[10]; char bumen[10]; int salary; }; int main() { int i=0,j,n=0; people p[20],q; ifstream ifs,ifa; ifs.open("a.txt",ios::in); while(!ifs.eof()) { ifs>>p[i].gonghao>>p[i].name>>p[i].bumen>>p[i].salary; i++; n++; } ifs.close(); ifa.open("b.txt",ios::in); while(!ifa.eof()) { ifa>>p[i].gonghao>>p[i].name>>p[i].bumen>>p[i].salary; i++; n++; } ifa.close(); for(i=0;i<n;i++) { for(j=1;j<n;i++) { if(p[i].salary>p[j].salary) { q=p[j].salary; p[j].salary=p[i].salary; p[i].salary=p[j].salary; } } } ofs.open("c.txt",ios::out); for(i=0;i<n;i++) { ofs<<p[i].gonghao>>p[i].name>>p[i].bumen>>p[i].salary; } return 0; }
时间: 2024-03-10 09:46:50 浏览: 61
这段代码存在一些问题。主要包括:
1. 结构体 people 中的 salary 变量在排序时被赋值给了结构体变量 q,应该将 q.salary 赋值为 p[j].salary,而不是将 q 赋值为 p[j].salary。
2. 在排序时,内层循环的变量 j 未正确更新,应该是 j++,而不是 i++。
3. 在写入文件时,应该使用 << 而不是 >>。
4. 在写入文件时,应该在每个数据项之间加上空格或者其他分隔符,否则数据会被写在同一行。
修改后的代码如下所示:
```c++
#include <iostream>
#include <fstream>
using namespace std;
struct people {
int gonghao;
char name[10];
char bumen[10];
int salary;
};
int main() {
int i = 0, j, n = 0;
people p[20], q;
ifstream ifs, ifa;
ifs.open("a.txt", ios::in);
while (!ifs.eof()) {
ifs >> p[i].gonghao >> p[i].name >> p[i].bumen >> p[i].salary;
i++;
n++;
}
ifs.close();
ifa.open("b.txt", ios::in);
while (!ifa.eof()) {
ifa >> p[i].gonghao >> p[i].name >> p[i].bumen >> p[i].salary;
i++;
n++;
}
ifa.close();
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (p[i].salary > p[j].salary) {
q = p[j];
p[j] = p[i];
p[i] = q;
}
}
}
ofstream ofs;
ofs.open("c.txt", ios::out);
for (i = 0; i < n; i++) {
ofs << p[i].gonghao << " " << p[i].name << " " << p[i].bumen << " " << p[i].salary << endl;
}
ofs.close();
return 0;
}
```
希望这个回答能够帮到您!
阅读全文