pat-A1036-Boys vs Girls

题目链接->link

题目描述

给出n个学生姓名,性别,id,成绩,输出有三行,分别要求输出成绩最高的女学生信息、成绩最低的男学生信息以及两者成绩差的绝对值,如果输入的学生中无男或无女则再对应行输出Absent,最后一行输出NA。

思路

  1. 依照题意做即可,统计男、女学生数目做判断,保存、更新成绩最大、最小值以及对应学生结构体数组下标。

代码

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

using namespace std;
const int maxn=1005;
struct person{
    char name[11];
    char gender;
    char id[11];
    int score;
}per[maxn];

int main(){
    int n,i;
    scanf("%d",&n);
    int num_male=0,num_female=0,min_male=101,max_female=-1,flag1=0,flag2=0;
    for(i=0;i<n;i++){
        scanf("%s %c %s %d",per[i].name,&per[i].gender,per[i].id,&per[i].score);
        if(per[i].gender=='M')
        {
            num_male++;
            if(per[i].score<min_male){
                min_male=per[i].score;
                flag1=i;
            }
            
        }
        else {
            num_female++;
            if(per[i].score>max_female){
                max_female=per[i].score;
                flag2=i;
            }
        }
    }
    if(num_female==0)printf("Absent\n");
    else printf("%s %s\n",per[flag2].name,per[flag2].id);
    if(num_male==0)printf("Absent\n");
    else printf("%s %s\n",per[flag1].name,per[flag1].id);
    if(num_male==0||num_female==0)printf("NA\n");
    else if(num_male!=0&&num_female!=0)printf("%d\n",abs(min_male-max_female));
    return 0;
}

发布了28 篇原创文章 · 获赞 1 · 访问量 585

猜你喜欢

转载自blog.csdn.net/MichealWu98/article/details/104060689