PAT A1036 Boys vs Girls

PAT A1036 Boys vs Girls

在这里插入图片描述

Sample Input 1:

3
Joe M Math990112 89
Mike M CS991301 100
Mary F EE990830 95

Sample Output 1:

Mary EE990830
Joe Math990112
6

Sample Input 2:

1
Jean M AA980920 60

Sample Output 2:

Absent
Jean AA980920
NA
  • 思路1:
    找Famle最大值,Male最小值,设置Fmax,Mmin存储当前最大、最小 ,不断遍历更新

  • code1:

#include <cstdio>
#include <iostream>
using namespace std;
int n, cntF = 0, cntM = 0;
struct Stu{
	char gender, id[12], name[12];
	int grade;	
}Fmax, Fmin, Mmax, Mmin, tmp;
void init(){
	Fmax.grade = -1;
	Mmin.grade = 101; 
}
int main(){
	init();
	scanf("%d", &n);
	for(int i = 0; i < n; ++i){
		scanf("%s %c %s %d", &tmp.name, &tmp.gender, &tmp.id, &tmp.grade);
		if(tmp.gender == 'F'){
			if(tmp.grade > Fmax.grade){
				Fmax = tmp; 
				cntF++;
			}	
		} 
		else{
			if(tmp.grade < Mmin.grade){
				Mmin = tmp;
				cntM++;
			}
		} 
	}
	if(cntF != 0){
		printf("%s %s\n", Fmax.name, Fmax.id);
	}else printf("Absent\n");
	if(cntM != 0){
		printf("%s %s\n", Mmin.name, Mmin.id);
	}else printf("Absent\n");
	if(cntF == 0 || cntM == 0) printf("NA\n");
	else printf("%d", Fmax.grade - Mmin.grade);
	return 0;
}
  • T2 code :
#include <bits/stdc++.h>
using namespace std;
struct Stu{
	string name, id;
}male_lowest, female_highest;
int main(){
	int n, f_max = -1, m_min = 101;
	scanf("%d", &n);
	for(int i = 0; i < n; ++i){
		string _name, _id;
		char _gender;
		int _score;
		cin >> _name >> _gender >> _id >> _score;
		if(_gender == 'M' && _score < m_min){
			m_min = _score;
			male_lowest.name = _name;
			male_lowest.id = _id;
		}
		if(_gender == 'F' && _score > f_max){
			f_max = _score;
			female_highest.name = _name;
			female_highest.id = _id;
		}
	}
	if(f_max == -1) printf("Absent\n");
	else printf("%s %s\n", female_highest.name.c_str(), female_highest.id.c_str());
	if(m_min == 101) printf("Absent\n");
	else printf("%s %s\n", male_lowest.name.c_str(), male_lowest.id.c_str());
	if(f_max == -1 || m_min == 101) printf("NA");
	else printf("%d", f_max-m_min);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值