6-3 结构体的最值 (5分)##C语言

6-3 结构体的最值 (5分)
学生类型ST的定义如下:

typedef struct student{ char name[10],id[10]; int gender; int age; double scored; } ST;

编写函数,返回指定学生数组中的男生或女生的最高分的地址(约定:整数0和1分别代表男和女)。

函数接口定义:

ST* MaxST(ST d[],int n,int k);//k=0|1

其中 d 是学生数组的初地址, n是数组的长度, k 是查找的性别描述(值确保是0或1),函数须返回指定类型学生中的最高分者的地址,如果不存在,返回空地址。

裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:

#include <stdio.h>
#include <stdlib.h>
typedef struct student{
char name[10],id[10];
int gender;
int age;
double scored;
} ST;
void output(ST d){//输出一个记录
if(d==NULL) {printf(“null\n”);return;}
printf("%s,%s,%d,%d,%4.2f\n",d->name,d->id,d->gender,d->age,d->scored);
}
ST
InitData(int n);//从输入设备上输入相关数据,略去不表
ST* MaxST(ST d[],int n,int k);//k=0|1 <–需要完成的函数:找最值
int main(){
int i,n;scanf("%d\n",&n);
ST p=InitData(n);
output(MaxST(p,n,0));
output(MaxST(p,n,1));
free§;
return 0;
}
/
请在这里填写答案 */

输入样例:
第一行是记录个数,余下若干行是相关数据(以空格分隔,每行一个)。

6
Marry.MK 20201125 0 19 92.86
J.Mark 20201185 0 17 90.93
rouh.M 20201102 1 18 79.51
byi.beee 20201129 1 17 90.28
floyd.Fd 20201150 0 17 81.16
grdda 20201146 1 19 85.52

输出样例:
输出男,女同学中的最高分(只需要找出并返回其地址,输入,输出由测试程序完成)。

Marry.MK,20201125,0,19,92.86
byi.beee,20201129,1,17,90.28

ST* MaxST(ST d[],int n,int k)
{
    int i=0 , cnt=0;
    ST *q=(ST*)malloc(sizeof(struct student));//申请动态内存
    q->scored=-1;//分数为非负数,一定会大于-1
    for(i=0 ; i<n ; i++)
    {
        if(d[i].gender==k)
        {
            if(d[i].scored>q->scored)
            {
                *q=d[i];
            }
        }
        else{
            cnt++;
        }
    }
    if(cnt==n){
        return 0;//不存在该性别时返回空地址
    }
    return q;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值