本人想请教一下各位帮忙看下结构体处的错误怎么修改。主要错误是在子函数Chinese_rank中,我不明白为什么在将主函数的结构体传递给子函数进行运算时程序会报错,主要是不知道该怎么修改传递方式。报错内容已经在下边列出,相同类型的错误都用红色标出了。多谢各位了。在线等。
报错位置是:student_rank[i].name = p_student[i].student1.name;
内容是:“ '=' : left operand must be l-value”已将错误部分用红色标出。
struct studentinfo //学生个人信息结构
{
char name [NAME]; //学生姓名
char sex [SEX]; //学生性别
char birth [BIRTH]; //出生日期
char adddr [ADDDR]; //学生地址
char poto [POTO]; //联系电话
char dak [DAK]; //邮证编码
char school[SCHOOL]; //所在学校
};
struct studentsorc //学生成绩结构
{
char name[NAME]; //学生姓名
int ID; //学生学号
float sorc[6]; //记录学生成绩
float aver; //平均分
float sum; //总分
};
struct allstudentinfo //学生全部结构
{
struct studentinfo student;
struct studentsorc student1;
};
struct studentrank
{
char name[NAME];
float score;
int rank;
}student_rank[STUDENTMAX];
struct studenttemp
{
char name[NAME];
float score;
}temp;
int main(void)
{
struct allstudentinfo studentmax[STUDENTMAX]; //最大学生人数
struct allstudentinfo *p_student; //指向结构指针
int in;
p_student=studentmax;
…………
…………
…………
}
void Chinese_rank(struct allstudentinfo *p_student , int count)
{
int i, j;
int rank = 1;
system("cls");
for( i = 0; i < count; i ++ )
{
student_rank[i].name = p_student[i].student1.name;
student_rank[i].score = p_student[i].student1.sorc[0];
}
for( i = 0; i < count - 1; i ++ )
{
for( j = i + 1; j < count; j ++ )
{
if(student_rank[i].score < student_rank[j].score)
{
temp.name = student_rank[i].name;
temp.score = student_rank[i].score;
student_rank[i].name = student_rank[j].name;
student_rank[i].score = student_rank[j].score;
student_rank[j].name = temp.name;
student_rank[j].score = temp.score;
}
}
}
for( i = 0; i < count; i ++ )
{
student_rank[i].rank = rank;
if( student_rank[i].score == student_rank[i + 1].score )
{
student_rank[i + 1].rank = rank;
i++;
}
rank++;
}
printf("\t\t语文成绩的排名表\n\n");
printf("------------------------------------------------\n");
printf("姓名\t成绩\t名次\t\n");
printf("------------------------------------------------\n");
for( i = 0; i < count; i ++ )
{
printf( "%s\t" , student_rank[i].name );
printf( "%f\t" , student_rank[i].score);
printf( "%d\n" , student_rank[i].rank);
}
printf("------------------------------------------------\n");
printf("查询结束......");
printf("\n请按任意键返回!");
getch();
system("cls");
return ;
}
[此贴子已经被作者于2007-6-2 20:14:10编辑过]