首页 > 学院 > 开发设计 > 正文

PAT-A 1036. Boys vs Girls (25)

2019-11-08 03:25:29
字体:
来源:转载
供稿:网友

题目链接在此。

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

题意理解

给出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;}

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表