C语言结构体怎么在一个函数中赋值后被另外函数调用进行输出.下面代码刚写的输出结果是最后录入的那个信息

2024-12-22 22:00:13
推荐回答(3个)
回答1:

试试改成这样

# 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;iInputStudent(&st, len);
OutputStudent(&st, len);}
}
return 0;
}

回答2:

这个问题主要是内存覆盖,所以你只能看到最后输入的那个信息,这里建议你考虑链表编程,即结构体中,增加一个 student* nextstudent; 另一个方法是,你用你定义的结构体类型定义一个数组也可以解决问题比如 student std[10]。

回答3:

可以用vector保存输入的结构体数据