#include <stdio.h>
#include <stdlib.h>
#define num 30
#define NO 12
#define NAMELEN 30
struct student
{
char no[NO + 1];
char namelen[NAMELEN + 1];
int age;
float score;
};
struct student createdata();
struct student findmaxscore(struct student*);
int main()
{
struct student stu[num], stumax;
for (int i = 0; i < num; ++i)
stu[i] = createdata();
stumax = findmaxscore(stu);
printf("成绩最高的学生的信息为\n");
printf("%s%s%d%4.2f", stumax.no, stumax.namelen, stumax.age, stumax.score);
fflush(stdin);//晓不得这个是搞啥子的
return 0;
}
struct student createdata()
{
struct student stu;//对于每次进行调用的时候,这个结构体都是新的,在取地址符号以及,在结构体的详述中体现的尤为突出
printf("请输入学号\n");
scanf_s("\n%s", stu.no);
printf("请输入姓名\n");
scanf_s("\n%s", stu.namelen);
printf("请输入年龄\n");
scanf_s("\n%d", &stu.age);
printf("请输入分数\n");
scanf_s("%f", &stu.score);
return stu;//返回值是一个结构体变量,用它来为main函数中的结构体数组进行赋值
}//实现对每一个结构体进行遍历,在for循环里面就能实现
struct student findmaxscore(struct student*s)
{
int i, j;
struct student stu;//装最高分的数组
struct student* p;//作为一个结构体指针,计算偏移量的
p = s;//初始值为零
float k=0;
k = p->score;
j = 0;
for (int i = 0; i < num; ++i, ++p) {
if (p->score > k)
{
k = p->score;
j = i;
}
}
stu = *(s + j);//偏移量
return stu;//返回值也是一个 结构体变量
}
学生系统LOW版
最新推荐文章于 2024-06-27 19:08:30 发布