用一个for循环从学生结构数组的下标为1的结构开始访问,直到最后一个。
然后在for循环里面,用if语句判断当前年龄最大的结构的年龄是否小于当前数组下标的学生年龄,如果小于,则把这个结构赋值给年龄最大的结构变量stu_max,直到比较完学生结构数组所有元素就得出最大年龄的结构stu_max。
最后打印stu_max存放的最大年龄的学生信息。
代码如下:
#include <stdio.h>
#include <string.h>
struct person{
char name[20];
char sex[4];
int age;
};
typedef struct person PERSON;
int main(void){
int i;
PERSON stu[4]={
{"li","女?",18},
{"wang","男D",20},
{"zhang","男D",20},
{"sun","女?",22},
};
PERSON stu_max = stu[0];
for(i=1;i<4;i++){
if(stu_max.age<stu[i].age){
stu_max=stu[i];
}
}
printf("年龄最大的学生信息:姓名:%s, 性别:%s, 年龄:%d. \n",stu_max.name,stu_max.sex,stu_max.age);
return 0;
}
循环比较,找出年龄最大的输出就可以了
参考:
#include<stdio.h>
//定义结构体
struct student
{
char name[20];//存储学生的个人姓名信息
int birth;//用于存储学生的出生年份
int year;//用于存储学生的出生月份
int day;//用于存储学生的出生日
}student[100],t;//定义结构体,数组变量
int main()
{
int i,n,j;
scanf("%d",&n);
//对学生的信息进行录入包括姓名,出生年月以及日
for(i=0;i<n;i++)
scanf("%s%d%d%d",student[i].name,&student[i].year,&student[i].birth,&student[i].day);
for(i=0;i<n;i++)
{
//找出所有学生中年龄最大的那位学生并将其信息保存在student[0]中
if(student[0].year!=student[i].year&&student[0].year>student[i].year)
{
t=student[0];
student[0]=student[i];
student[i]=t;
}
if(student[0].year==student[i].year)//出生年份相同
{
if(student[0].birth>student[i].birth)
{
//找出年份相同时月份最小的那个学生信息
t=student[0];
student[0]=student[i];
student[i]=t;
}
}
if(student[0].year==student[i].year&&student[0].birth==student[i].birth)//出生年份和月份相同
{
//若俩个学生出生年份和月份都一样则进行出生日的比较找出出生日最小的那个
if(student[0].day>student[i].day)
{
t=student[0];
student[0]=student[i];
student[i]=t;
}
}
}
//输出年龄最大的学生的信息
printf("%s %d-%d-%d\n",student[0].name,student[0].year,student[0].birth,student[0].day);
return 0;
}