程序功能:已知一个数据文件a.txt中保存了若干个学生的计算机等级考试成绩,包括学号、姓名和成绩。请编程读出显示文件内容并分类统计各等级人数,最后显示统计结果。成绩等级规则:大于等于90-A,大于等于80-B,大于等于70-C,大于等于60-D,60以下-E。
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE* fp;
int xh, grade, A = 0, B = 0, C = 0, D = 0, E = 0;
char xm[32];
if ((fp = fopen("C:\\Users\\12283\\Desktop\\a.txt", "w+")) == NULL) //路径根据自己情况改
{
printf("不能打开文件!\n");
exit(0);
}
while (1)
{
printf("请输入学生成绩(输入负数表示结束):");
scanf("%d", &grade);
if (grade < 0) {
break;
}
if (grade >= 90)
A++;
else if (grade >= 80)
B++;
else if (grade >= 70)
C++;
else if (grade >= 60)
D++;
else
E++;
printf("请输入该学生学号:");
scanf("%d", &xh);
printf("请输入该学生姓名:");
scanf("%s", xm);
fprintf(fp, "%d %s %d\n", xh, xm, grade);
}
rewind(fp); //将文件指针指回开头
printf("----------------------\n");
printf("学号 姓名 成绩\n");
while (fscanf(fp, "%d %s %d", &xh, xm, &grade) != -1)
{
printf("%d %s %d\n", xh, xm, grade);
}
printf("A:%d B:%d C:%d D:%d E:%d", A, B, C, D, E);
if (fclose(fp))
{
printf("不能正常关闭文件!\n");
exit(0);
}
return 0;
}