平时成绩=基准分+小组奖惩分+个人全班奖惩分+个人小组奖惩分;
小组奖惩分=(小组得分-小组平均分)*d1
个人全班奖惩分=(个人分-个人全班平均分)*d2
个人小组奖惩分=(个人分-组内个人平均分)*d3
基准分为80d1=0.35,d2=0.25,d3=0.3
#include
#include
struct STU_info
{
int group;
char stunum[10];
char name [8];
int grade;
};
struct NEWSTU_info
{
int group;
char stunum[10];
char name [8];
int ngrade;
};
void main ()
{
FILE *fp1,*fp2;
int i,j,total,tave,gave,pgave[9],gtotal[9],std=80;
double group_grade[53],pggrade[53],ptgrade[53],fgrade[53];
double d1=0.35,d2=0.25,d3=0.3;
fp1=fopen ("desktop:\stu_score1.txt","r");
if (fp1==NULL)
{
printf ("the file : stu_score1.txt not found!");
exit (-1);
}
STU_info stu[53],nstu[53];
for (i=0;i<53;i++)
fgets (stu[i],20,fp1);
for (i=0,total=0;i<53;i++)
total+=stu[i].grade;
gave=total/9;
tave=total/53;
for (i=0,j=0;i<9;i++)
{
for (;j<6;j++)
{
gtotal[i]+=stu[j].grade;
}
j+=6;
}
for (i=0;i<9;i++)
pgave[i]=gtotal[i]/6;
for (i=0;i<53;i++)
{
group_grade[i]=(gtotal[i]-gave)*d1;
ptgrade[i]=(stu[i].grade-tgave)*d2;
pggrade[i]=(stu[i].grade-pgave)*d3;
fgrade[i]=std+group_grade[i]+ptgrade[i]+pggrade[i];
}
fclose(fp1);
fp2=fopen ("desktop:\stu_score2.txt","w");
for (i=0;i<53;i++)
{
nstu[i].group=stu[i].group;
nstu[i].stunum=stu[i].stunum;
nstu[i].name=stu[i].name;
nstu[i].grade=fgrade[i];
}
for (i=0;i<53;i++)
fputs(nstu[i],fp2);
}求解哪些地方错了
C:\\Users\\Administrator\\Desktop\\
明显的是路径错了。。。
fp1=fopen ("desktop:\stu_score1.txt","r");
struct STU_info
{
int group;
char stunum[10];
char name [8];
int grade;
};
struct NEWSTU_info
{
int group;
char stunum[10];
char name [8];
int ngrade;
};
void main ()
{
FILE *fp1,*fp2;
int i,j,total,tave,gave,pgave[9],gtotal[9],std=80;
double group_grade[53],pggrade[53],ptgrade[53],fgrade[53];
double d1=0.35,d2=0.25,d3=0.3;
fp1=fopen ("1.txt","r");
if (fp1==NULL)
{
printf ("the file : stu_score1.txt not found!");
exit (-1);
}
STU_info stu[53],nstu[53];
for (i=0;i < 53;i++)
{
fscanf(fp1,"%d %s %s %d",&stu[i].group,stu[i].stunum,stu[i].name,&stu[i].grade);
//fgets(stu[i],20,fp1);
}
for (i=0,total=0;i<53;i++)
{
total += stu[i].grade;
}
gave=total/9;
tave=total/53;
for (i=0,j=0;i<9;i++)
{
for (;j<6;j++)
{
gtotal[i]+=stu[j].grade;
}
j+=6;
}
for (i=0;i<9;i++)
{
pgave[i]=gtotal[i]/6;
}
for (i=0;i<53;i++)
{
group_grade[i]=(gtotal[i]-gave)*d1;
ptgrade[i]=(stu[i].grade-gave)*d2;
pggrade[i]=(stu[i].grade-gave)*d3;
fgrade[i]=std+group_grade[i]+ptgrade[i]+pggrade[i];
}
fclose(fp1);
fp2=fopen ("desktop:\stu_score2.txt","w");
for (i=0;i<53;i++)
{
nstu[i].group=stu[i].group;
strcpy(nstu[i].stunum,stu[i].stunum);
//nstu[i].stunum = stu[i].stunum;
strcpy(nstu[i].name,stu[i].name);
//nstu[i].name = stu[i].name;
nstu[i].grade = fgrade[i];
}
for (i=0;i<53;i++)
{
char buf[100] = {0};
sscanf(buf,"%d %s %s %d",nstu[i].group,nstu[i].stunum,nstu[i].name,nstu[i].grade);
fwrite(buf,sizeof(buf),0,fp2);
}
fclose(fp2);
}