PAT-A 1036. Boys vs Girls (25)

题目链接在此

这是《算法笔记 上机训练实战指南》纸质版(附录二维码中可能有更新内容)中“入门模拟–查找元素”章节的最后一道题,这里有我做撸这一部分题目总结和心得。

题意理解

给出N个同学的信息,输出女生中最高分数获得者、男生中最低分数获得者的信息,以及两者的分数差。如果某一性别学生不存在,则对应获得者信息输出Absent,同时分数差处输出NA。

思路

做到这题,发现这一章节的思路几乎是一致的,可以参看总结与心得,此处不多叙述。

AC代码

#include<stdio.h>
#include<string.h>

int main(){

    int N;
    scanf("%d",&N);

    char Mname[10],Fname[10], temp[10];
    char gender;
    char FID[11], MID[11], temp_ID[10];
    int temp_grade,Fgrade = -1,Mgrade = 101;
    int Mflag = 0, Fflag = 0; //男女性别是否都有人的标志 

    for(int i = 0; i < N; i++){
        scanf("%s %c %s %d",&temp,&gender,&temp_ID,&temp_grade);
        if(gender == 'F'){
            Fflag = 1; 
            if(temp_grade > Fgrade){
                Fgrade = temp_grade;    //更新女性的分数 
                strcpy(Fname,temp);     //更新女性的名字
                strcpy(FID,temp_ID);    //更新女性的学号 
            }
        }
        if(gender == 'M'){
            Mflag = 1;
            if(temp_grade < Mgrade){
                Mgrade = temp_grade;    //更新男性的分数 
                strcpy(Mname,temp);     //更新男性的名字 
                strcpy(MID,temp_ID);    //更新男性的学号 
            }
        }       
    }

    //打印女生相关信息 
    if(Fflag){
        printf("%s %s\n",Fname,FID);
    }else{
        printf("Absent\n");
    }

    //打印男生相关信息 
    if(Mflag){
        printf("%s %s\n",Mname,MID);
    }else{
        printf("Absent\n");
    }

    //计算差值并打印
    if(!Fflag || !Mflag){
        printf("NA\n");
    } else{
        printf("%d\n",Fgrade-Mgrade);
    }

    return 0;
} 

注:本章节所有题目都可以用结构体来实现,也可以像上面一样定义比较多的变量……自行考量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值