试试改成这样
# include
struct Student
{ char name[100];
char sex[2];
float result;};
// 录入学生信息函数
void InputStudent(struct Student * pst, int len)
{
printf ("第%d位学生信息:\n", i+1);
printf ("名字: "); scanf ("%s", pst->name);
printf ("性别: "); scanf ("%s", pst->sex);
printf ("成绩: "); scanf ("%f", &pst->result);
printf ("\n\n\n"); }
// 输出按成绩排序好的学生信息
void OutputStudent (struct Student * pst, int len)
{
printf ("成绩第%d名学生信息:\n", i+1);
printf ("名字: %s\n", pst->name);
printf ("性别: %s\n", pst->sex);
printf ("成绩: %f\n", pst->result);
printf ("\n"); }
int main(void)
{ int len;
struct Student st;
printf ("请输入学生个数: ");
scanf ("%d", &len);
printf ("\n");
for(int i=0;i
OutputStudent(&st, len);}
}
return 0;
}
这个问题主要是内存覆盖,所以你只能看到最后输入的那个信息,这里建议你考虑链表编程,即结构体中,增加一个 student* nextstudent; 另一个方法是,你用你定义的结构体类型定义一个数组也可以解决问题比如 student std[10]。
可以用vector保存输入的结构体数据