文件输入输出题目
有8个学生,有如下信息:名字,年龄,成绩。从键盘输入8位同学的信息,存入cs.txt,再从文件中读取数据,对8位同学按成绩由高到低排序,输出成绩第二高的学生的信息
整个代码:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
using namespace std;
typedef struct student//用结构体保存学生信息
{
string name;
int age;
int grade;
}student;
student stu[8];
student tmp;
int main() {
FILE* fp;
int i,j;
fp = fopen("student.txt", "w");
for (i = 0; i < 8; i++) {
cin >> stu[i].name;
cin >> stu[i].age;
cin >> stu[i].grade;
}
for (i = 0; i < 8; i++) {
fprintf(fp, "%s %d %d\n", stu[i].name.c_str(), stu[i].age, stu[i].grade);
}
fclose(fp);
for(i=0;i<8;i++)
for (j = 0; j < 7; j++)
if (stu[j].grade < stu[j+1].grade) {
tmp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = tmp;
}
printf("第二名是:\n");
printf("%s %d %d\n", stu[1].name.c_str(), stu[1].age, stu[1].grade);
return 0;
}
子函数分离代码:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
using namespace std;
typedef struct student//用结构体保存学生信息
{
string name;
int age;
int grade;
}student;
student stu[8];
student tmp;
void set_data_into_file(student stu[8]) {
int i;
FILE* fp;
fp = fopen("student.txt", "w");
for (i = 0; i < 8; i++) {
cin >> stu[i].name;
cin >> stu[i].age;
cin >> stu[i].grade;
}
for (i = 0; i < 8; i++) {
fprintf(fp, "%s %d %d\n", stu[i].name.c_str(), stu[i].age, stu[i].grade);
}
fclose(fp);
}
void bubble_sort(student stu[8]) {
int i, j;
for (i = 0; i < 8; i++)
for (j = 0; j < 7; j++)
if (stu[j].grade < stu[j + 1].grade) {
tmp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = tmp;
}
}
int main() {
set_data_into_file(stu);
bubble_sort(stu);
printf("第二名是:\n");
printf("%s %d %d\n", stu[1].name.c_str(), stu[1].age, stu[1].grade);
return 0;
}