将主函数分到子函数中

#include
typedef struct student
{
char name[10];
char id[10];
int scord1;
int scord2;
double scord3;
}student;
int main()
{
FILE *fp=NULL, *ftp=NULL;
int i = 0, a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0;
double average = 0;
student s[28];
fp = fopen("e:\read.txt", "r");
if (fp == 0)
{
printf("error");
exit(1);
}
for (i = 0; i < 28; i++)
{
fscanf(fp, "%s%s%d%d", s[i].name, s[i].id, &s[i].scord1, &s[i].scord2);
s[i].scord3 = 0.3*s[i].scord1 + 0.7*s[i].scord2;
average += s[i].scord3;
}
fclose(fp);
ftp = fopen("e:\write.txt", "w");
if (ftp == 0)
{
printf("error");
exit(1);
}
for (i = 0; i < 28; i++)
{
fprintf(ftp, "%-10s%-10s%-4d%-4d%-4.2f\n", s[i].name, s[i].id, s[i].scord1, s[i].scord2, s[i].scord3);
}
for (i = 0; i < 28; i++)
{
if (s[i].scord3 >= 90)
a++;
if (s[i].scord3 >= 80 && s[i].scord3 < 90)
b++;
if (s[i].scord3 >= 70 && s[i].scord3 < 80)
c++;
if (s[i].scord3 >= 60 && s[i].scord3 < 70)
d++;
if (s[i].scord3 >= 50 && s[i].scord3 < 60)
e++;
if (s[i].scord3 >= 40 && s[i].scord3 < 50)
f++;
if (s[i].scord3 < 40)
g++;
}
fprintf(ftp, "总 90分以上 %d人 %.2lf%% 应考 28\n成 80--89分 %d人 %.2lf%% 实考 28\n绩 70--79分 %d人 %.2lf%% 缓考 0分\n 60--69分 %d人 %.2lf%% 作弊 0\n析 50--59分 %d人 %.2lf%% 旷考 0\n40--49分 %d人 %.2lf%% 免考 0\n40分以下 %d人 %.2lf%% 平均分 %.2lf", a, (double)100 * a / 28, b, (double)100 * b / 28, c, (double)100 * c / 28, d, (double)100 * d / 28, e, (double)100 * e / 28, f, (double)100 * f / 28, g, (double)100 * g / 28, average / 28);
fclose(ftp);
return 0;
}

另一个

#include
typedef struct student
{
char name[10];
char id[10];
int scord1;
int scord2;
double scord3;
}student;
FILE fp=NULL, *ftp=NULL;
int i, a=0, b=0, c=0, d=0, e=0, f=0,g=0;
double average=0;
student s[28];
**void aa()
*
{
fp = fopen("e://read.txt", "r");
for (i = 0; i < 28; i++)
{
fscanf(fp, "%s%s%d%d", s[i].name, s[i].id, &s[i].scord1, &s[i].scord2);
s[i].scord3 = 0.3*s[i].scord1 + 0.7*s[i].scord2;
average += s[i].scord3;
}
fclose(fp);
}
void bb()
{
ftp = fopen("e://write.txt", "w");
for (i = 0; i < 28; i++)
{
fprintf(ftp, "%-10s%-10s%-4d%-4d%-4.2f\n", s[i].name, s[i].id, s[i].scord1, s[i].scord2, s[i].scord3);

}
fclose(ftp);

}
** void cc()**
{
for (i = 0; i < 28; i++)
{
if (s[i].scord3 >= 90)
a++;
if (s[i].scord3 >= 80 && s[i].scord3 < 90)
b++;
if (s[i].scord3 >= 70 && s[i].scord3 < 80)
c++;
if (s[i].scord3 >= 60 && s[i].scord3 < 70)
d++;
if (s[i].scord3 >= 50 && s[i].scord3 < 60)
e++;
if (s[i].scord3 >= 40 && s[i].scord3 < 50)
f++;
if (s[i].scord3 < 40)
g++;
}
}
void dd()
{
ftp = fopen("e://write.txt", "w");
fprintf(ftp, "总 90分以上 %d人 %.2lf%% 应考 28\n成 80--89分 %d人 %.2lf%% 实考 28\n绩 70--79分% d人 %.2lf%% 缓考 0分\n 60--69分 %d人 %.2lf%% 作弊 0\n析 50--59分 %d人 %.2lf%% 旷考 0\n40--49分 %d人 %.2lf%% 免考 0\n40分以下 %d人 %.2lf%% 平均分 %.2lf", a, (double)100 * a / 28, b, (double)100 * b / 28, c, (double)100 * c / 28, d, (double)100 * d / 28, e, (double)100 * e / 28, f, (double)100 * f / 28, g, (double)100 * g / 28, average / 28);
fclose(ftp);
}
int main()
{
void aa();
void bb();
void cc();
void dd();
}
第一个对的第二个错了,不知为什么

太长 没看完
你第一个FILE fp=NULL就错了 应该是FILE *fp=NULL

你这个是程序本身就比较混乱的,文件操作什么的功能你就可以抽象出来放到函数里面,单独的功能就可以抽象啊。
//**void aa()*这种是啥啊?

你把错误信息贴出来看看?