注:本题无需写的像我一样复杂,使用结构体数组 动态内存分配 等手段的目的是减少占用内存和加强对这些手段的理解,一般解决本题不需要以上手段。
直接上代码!
#include <stdio.h>
#include<stdlib.h>
//结构体定义
struct condition {
char name[11];
char id[11];
int score;
};
int main(void)
{
int n = 0;
int max = 0;
int min = 0;
int count = 0;
scanf("%d", &n);
//动态内存分配结构体数组
struct condition* ptr = (struct condition*)malloc(n * sizeof(struct condition));
//为结构体数组成员赋值
for (count = 0;count < n;count++)
{
scanf(" %s %s %d",ptr[count].name, ptr[count].id, &ptr[count].score);
}
//最简单的查找最大值和最小值算法
for (count = 1;count < n;count++)
{
if (ptr[count].score > ptr[max].score)
{
max = count;
}
if (ptr[count].score < ptr[min].score)
{
min = count;
}
}
/*输出,此处%s不可写为% s(vs2019会自动将%s变为% s),会报警告,原因是pat使用gcc编译器,gcc中printf的%s加空格有作用,但我们没有使用这个性质,而vs2019没有这个性质*/
printf("%s %s\n", ptr[max].name, ptr[max].id);
printf("%s %s", ptr[min].name, ptr[min].id);
free(ptr);
return 0;
}