本文共 1193 字,大约阅读时间需要 3 分钟。
问题描述】有 n 个学生,从键盘输入学生数据(包括学号、姓名、成绩),学号输入为负数时代表输入结束,将学生数据按成绩由高到低进行排序处理,并将已排序的学生数据存入文件 stu-sort.txt 中。
【输入形式】从键盘输入学生数据。
【输出形式】输出排序好的数据到屏幕和指定文件。
【样例输入】
1000 tss 69
101 hgf 72
2 ius 60
-1
【样例输出】
屏幕和文件的内容为:
101 hgf 72
1000 tss 69
2 ius 60
【样例说明】学生数据定义为结构体,学号和成绩定义为整型即可
我的代码
include
include
struct student {
int num;
char name[10];
int grade;
}stu[10];
void pai(struct student stu[], struct student temp,int n)
{
int i = 0, j = 0;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (stu[j].grade < stu[j + 1].grade) {
temp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = temp;
}
}
}
}
void save(int n)
{
FILE *fp;
int i;
if ((fp = fopen("stu-sort.txt", "wb")) == NULL)
{
printf("ERROR\n");
return;
}
for (i = 0; i < n; i++) {
if (fwrite(&stu[i], sizeof(struct student), 1, fp) != 1)
printf("ERROR\n");
}
fclose(fp);
}
int main()
{
int i;
int n=0;
for (i = 0;; i++)
{
scanf("%d", &stu[i].num);
if (stu[i].num < 0)
break;
scanf(" %s %d", stu[i].name, &stu[i].grade);
n++;
}
struct student temp = { 0,"0",0 };
pai(stu, temp,n);
save(n);
for (i = 0; i < n; i++) {
printf("%d %s %d\n", stu[i].num, stu[i].name, stu[i].grade);
}
system("pause");
return 0;
}
为什么我输出是对的 在文件里显示的是乱码呢??请大神指出错误 谢谢!!!
转载地址:http://zrnrp.baihongyu.com/