目录
问题分析
*首先对问题进行分析:
学生年龄最大要求(1)该学生的出生年份必须最早
(2)该学生的出生月份必须最早
(3)该学生的出生日必须最早
若学生出生年份相同则进行出生月份的比较若出生月份相同则继续比较其出生日
*代码构思:首先这个学生作为一个整体定义时必须要包含该学生的出生年份,其次进行月份以及出生日信息的存储最容易想到利用结构体来实现:
定义一个数组来存放学生的名字
定义一个长整型变量或者数组来保存学生的个人出生年份
定义一个整形变量用于存储学生的个人出生月份
同样定义一个整形变量用于存储学生的出生日
*这个问题实现的关键在于学生信息的存储及对最大年龄学生的筛选
代码实现
#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;
}