#include
#include
#include
struct student
{
int number;
char name[30];
char sex[3];
int age;
student *next;
};
student* fileInput(char* fileName);
void traversal(student* phead);
int main()
{
student *phead;
char *fileName;
strcpy(fileName,"C:\Users\88450\桌面\周四\students.dat");
phead=fileInput(fileName);
traversal(phead);
return 0;
}
student* fileInput(char* fileName)
{
student s,*pnew,*phead,*ptail;
FILE fp;
fp=fopen("students.dat","rb");
int i=0;
while(fread(&s,sizeof(student),1,fp)!=0)
{
pnew=(student)malloc(sizeof(student));
pnew->number=s.number;
strcpy(pnew->name,s.name);
strcpy(pnew->sex,s.sex);
pnew->age=s.age;
pnew->next=NULL;
if(i==0)
{
phead=pnew;
ptail=pnew;
}
else
{
ptail->next=pnew;
ptail=ptail->next;
}
i++;
}
fclose(fp);
return phead;
}
void traversal(student* phead)
{
student *p;
p=phead;
while(p!=NULL)
{
printf ("学号:%d 姓名:%s 性别:%s 年龄:%d\n",p->number,p->name,p->sex,p->age);
p=p->next;
}
}
如何编一个自定义函数,查找出年龄最大的学生(要可实现可找出多个最大年龄的学生),谢谢各位大佬了!
student* findoldest(student* phead)
{
int maxage = 0;
student *pnew,*poldest,*ptail,*p;
p=phead;
while(p!=NULL)
{
if (p->age >= maxage) {
pnew=(student)malloc(sizeof(student));
pnew->number=p->number;
strcpy(pnew->name,p->name);
strcpy(pnew->sex,p->sex);
pnew->age=p->age;
pnew->next=NULL;
if (p->age > maxage) {
if (poldest != NULL) {
}
poldest = pnew;
ptail = pnew;
maxage = p->age;
} else {
ptail->next=pnew;
ptail=ptail->next;
}
}
p=p->next;
}
return poldest;
}
找出年龄最大的学生然后输出年龄和他相同的学生
从你给的代码看不出怎么找到最大年龄的学生的,并没有看到比较语句啊
线性表中由头至尾依次遍历,设置max变量记录学生中最大的年龄,这是第一次遍历。第二次,同样遍历,比较年龄,如果和max值相等,就可以输出相关信息了。
线性表中由头至尾依次遍历,设置max变量记录学生中最大的年龄,这是第一次遍历。第二次,同样遍历,比较年龄,如果和max值相等,就可以输出相关信息了。
比较年龄,如果和max值相等,就可以输出相关信息了
找出年龄最大的学生然后输出年龄和他相同的学生
设置一个临时比较年龄的变量tmpmax = 0;一个临时存放学生信息的对象数组 vector tmpstu;一次遍历得出结果。
1、遇到年龄大于tmpmax的,先清空tmpstu数组,然后将当前学生信息加入
2、遇到年龄等于tmpmax的,将tmpmax更新为当前学生年龄,并添加当前学生信息进入tmpstu数组,
3、遇到年龄小于tmpmax的,不作改变
遍历完所有学生信息后可以得到年龄最大的学生信息的数组tmpstu即所求。
用循环结构来做,找出最大即可
你自己贴出来的程序到处都是错误!!!
全部问答 悬赏 待回答 已解决 标签 专家问答
我要提问
问答规则说明
2 summeraaaaaaaa summeraaaaaaaa 于 2017.12.07 19:20 提问
找出链表中年龄最大的学生 5C
链表
#include
#include
#include
struct student
{
int number;
char name[30];
char sex[3];
int age;
student next;
};
student fileInput(char* fileName);
void traversal(student* phead);
int main()
{
student phead;
char *fileName;
strcpy(fileName,"C:\Users\88450\桌面\周四\students.dat");
phead=fileInput(fileName);
traversal(phead);
return 0;
}
student fileInput(char* fileName)
{
student s,*pnew,*phead,*ptail;
FILE fp;
fp=fopen("students.dat","rb");
int i=0;
while(fread(&s,sizeof(student),1,fp)!=0)
{
pnew=(student)malloc(sizeof(student));
pnew->number=s.number;
strcpy(pnew->name,s.name);
strcpy(pnew->sex,s.sex);
pnew->age=s.age;
pnew->next=NULL;
if(i==0)
{
phead=pnew;
ptail=pnew;
}
else
{
ptail->next=pnew;
ptail=ptail->next;
}
i++;
}
fclose(fp);
return phead;
}
void traversal(student* phead)
{
student *p;
p=phead;
while(p!=NULL)
{
printf ("学号:%d 姓名:%s 性别:%s 年龄:%d\n",p->number,p->name,p->sex,p->age);
p=p->next;
}
}
如何编一个自定义函数,查找出年龄最大的学生(要可实现可找出多个最大年龄的学生),谢谢各位大佬了!
同问0 |浏览85| 收藏0 |分享
14个回答
按赞数排序
GongJZhou GongJZhou 2017.12.07 20:00
找出年龄最大的学生然后输出年龄和他相同的学生
0 1 评论 4 |分享
回复 GongJZhou
评论 qq_41310673 qq_41310673 5123工具箱东方既白 比偶 大约一小时之前 回复 qq_41310673 qq_41310673 找出年龄最大的学生然后输出年龄和他相同的学生就对了 大约一小时之前 回复 qq_41310838 newblue_nn 定义一个 max 变量 把最大的赋值给他,然后定义一个数组,把和他相等的存进数组,最后打印数组,就好了 大约一小时之前 回复 summeraaaaaaaa summeraaaaaaaa 能有具体的代码解释吗?就这么说我不懂 大约 3 小时之前 回复
ZY_Looking ZY_Looking 2017.12.07 20:29
线性表中由头至尾依次遍历,设置max变量记录学生中最大的年龄,这是第一次遍历。第二次,同样遍历,比较年龄,如果和max值相等,就可以输出相关信息了。
0 1 评论 0 |分享
jljooipu9u09 jymmmd 2017.12.07 21:29
设置一个临时比较年龄的变量tmpmax = 0;一个临时存放学生信息的对象数组 vector tmpstu;一次遍历得出结果。
1、遇到年龄大于tmpmax的,先清空tmpstu数组,然后将当前学生信息加入
2、遇到年龄等于tmpmax的,将tmpmax更新为当前学生年龄,并添加当前学生信息进入tmpstu数组,
3、遇到年龄小于tmpmax的,不作改变
遍历完所有学生信息后可以得到年龄最大的学生信息的数组tmpstu即所求。
0 1 评论 0 |分享
qq_41310053 qq_41310053 2017.12.07 20:11
找出年龄最大的学生然后输出年龄和他相同的学生
0 0 评论 1 |分享
回复 qq_41310053
评论 summeraaaaaaaa summeraaaaaaaa 你们能详细点吗 萌新小白 大约 2 小时之前 回复
zw123wu zw123wu 2017.12.07 20:23
student* findoldest(student* phead)
{
int maxage = 0;
student *pnew,*poldest,*ptail,*p;
p=phead;
while(p!=NULL)
{
if (p->age >= maxage) {
pnew=(student)malloc(sizeof(student));
pnew->number=p->number;
strcpy(pnew->name,p->name);
strcpy(pnew->sex,p->sex);
pnew->age=p->age;
pnew->next=NULL;
if (p->age > maxage) {
if (poldest != NULL) {
}
poldest = pnew;
ptail = pnew;
maxage = p->age;
} else {
ptail->next=pnew;
ptail=ptail->next;
}
}
p=p->next;
}
return poldest;
}
0 0 评论 0 |分享
qq_34432960 暖风_lin 2017.12.07 20:24
从你给的代码看不出怎么找到最大年龄的学生的,并没有看到比较语句啊
0 0 评论 0 |分享
qq_41310784 qq_41310784 2017.12.07 21:13
线性表中由头至尾依次遍历,设置max变量记录学生中最大的年龄,这是第一次遍历。第二次,同样遍历,比较年龄,如果和max值相等,就可以输出相关信息了。
0 0 评论 0 |分享
qq_41310658 qq_41310658 2017.12.07 21:18
比较年龄,如果和max值相等,就可以输出相关信息了
0 0 评论 0 |分享
qq_23606855 qq_23606855 2017.12.07 21:18
找出年龄最大的学生然后输出年龄和他相同的学生
0 0 评论 0 |分享
qq_40090022 qq_40090022 2017.12.07 21:18
if.....erse语句
定义一个max值,赋初值为0,定义一个ans数组,定义一个num=0,作为ans的长度,然后遍历时,更新max值,如果和当前max相等,则将其编号加入ans数组中,即ans[num++]=i;如果,比当前max值大,则将max更新,且num=0,ans[num++]=i;,最后将ans数组输出。
给年龄复值tem 再作比较,if(tem>=max)值 就输出相关信息了
设置一个临时比较年龄的变量tmpmax = 0;一个临时存放学生信息的对象数组 vector tmpstu;一次遍历得出结果。
1、遇到年龄大于tmpmax的,先清空tmpstu数组,然后将当前学生信息加入
2、遇到年龄等于tmpmax的,将tmpmax更新为当前学生年龄,并添加当前学生信息进入tmpstu数组,
3、遇到年龄小于tmpmax的,不作改变
遍历完所有学生信息后可以得到年龄最大的学生信息的数组tmpstu即所求。
这个楼上的兄弟解释的很清楚了,你按这个来没错。 非要别人贴出代码就没意思了,思路都给你了 贴出代码后你就懂了么