(结构体) 设一个班有若干学生(如10人),请定义学生结构包含以下信息:学生学号、学生姓名、高级语言程序课的成绩,请写程序完成以下功能:
(1)定义函数以学生结构指针(指向学生数组)为参数,逐个录入该班集的学生信息;
(2)定义函数以学生结构指针(指向学生数组)为参数,求出该班高级语言程序课的排名第一的学生,并输出该第一名学生的学号、姓名及高级语言程序课成绩。
(3)在主程序中完成测试。
我感觉我写的程序没有什么问题,但是没办法运行
#include
struct student
{
int number;
char name[100];
int score;
};
int main()
{
struct student* grade;
grade = (struct student*)malloc(sizeof(struct student));
struct student max;
int n;
scanf_s("%d", &n);
for (int i = 1; i <= n; i++)
{
scanf_s("%d", &grade[i].number);
gets(grade[i].name);
scanf_s("%d", &grade[i].score);
}
max = grade[1];
for (int i = 1; i <= n; i++)
{
if ((grade->score) > max.score)
{
max = grade[i];
}
}
printf("%d", max.number);
puts(max.name);
printf("%d", max.score);
return 0;
}
grade 分配的长度不对 后面要乘以n 上面只分了一个区间
你越界访问了。
你可以参考我博客中的通讯录,如果要排序的话,你可以看qsort函数的博客。