我做了修改,用Turbo C编译和运行都没有问题。请留意看。
# include
#include
# include
# include
struct Student
{
int S_number; //学号
char Name[10]; //姓名
float E_score; //英语分数
float M_score; //数学分数
float C_scorer; //计算机分数
};
int main(void)
{
FILE *pFile = fopen("学生原始数据.txt", "wb"); //文件指针,指向系统创建的学生原始数据.txt文本
FILE *fp = fopen("学生排序后数据.txt", "wb"); //同文件指针一样
struct Student * pArr;
struct Student t;
int len, i, j;
char *str;
int num;
float fnum;
printf("输入要建立的多少学生: ");
scanf("%d", &len);
pArr = (struct Student *)malloc(len * sizeof(struct Student)); //动态分配内存
//输入学生数据
for (i = 0; i < len; i++)
{
printf("请输入第 %d 个学生的信息:\n", i+1);
printf("姓名是: ");
scanf("%s", str); strcpy(pArr[i].Name, str);
printf("学号是: ");
scanf("%d", &num); pArr[i].S_number = num;
printf("英语分数: ");
scanf("%f", &fnum); pArr[i].E_score = fnum;
printf("数学分数: ");
scanf("%f", &fnum); pArr[i].M_score = fnum;
printf("计算机分数: ");
scanf("%f", &fnum); pArr[i].C_scorer = fnum;
}
//把学生数据输出到文本里(文件名:学生原始数据.txt),默认的是本地目录
fprintf(pFile, "输出学生信息:\r\n");
for (i = 0; i < len; i++)
{
fprintf(pFile, "第 %d 个学生信息:\r\n", i+1);
fprintf(pFile, "姓名是: %s\r\n", pArr[i].Name);
fprintf(pFile, "学号是: %d\r\n", pArr[i].S_number);
fprintf(pFile, "英语分数: %.2f\r\n", pArr[i].E_score);
fprintf(pFile, "数学分数: %.2f\r\n", pArr[i].M_score);
fprintf(pFile, "计算机分数: %.2f\r\n\r\n", pArr[i].C_scorer);
}
fclose(pFile); //关闭文件
//对学生的的成绩进行排序。
for(i=0; i
for(j=0; j
if( (pArr[j].C_scorer + pArr[j].E_score + pArr[j].M_score) <
(pArr[j+1].C_scorer + pArr[j+1].E_score + pArr[j+1].M_score))
{
t = pArr[j];
pArr[j] = pArr[j+1];
pArr[j+1] = t;
}
}
}
//把排序好的学生数据输出到文本里(学生排序后数据.tx),默认的是本地目录
fprintf(fp, "输出排序后的学生信息:\r\n");
for (i = 0; i < len; i++)
{
fprintf(fp, "第 %d 个学生信息:\r\n", i+1);
fprintf(fp, "姓名是: %s\r\n", pArr[i].Name);
fprintf(fp, "学号是: %d\r\n", pArr[i].S_number);
fprintf(fp, "英语分数: %.2f\r\n", pArr[i].E_score);
fprintf(fp, "数学分数: %.2f\r\n", pArr[i].M_score);
fprintf(fp, "计算机分数: %.2f\r\n", pArr[i].C_scorer);
fprintf(fp, "总分数: %.2f\r\n\r\n", pArr[i].E_score+pArr[i].M_score+pArr[i].C_scorer);
}
fclose(fp); //关闭文件
printf("\n\n");
free(pArr); //释放内存
return 0;
}