题目链接->link
题目描述
给出n个学生姓名,性别,id,成绩,输出有三行,分别要求输出成绩最高的女学生信息、成绩最低的男学生信息以及两者成绩差的绝对值,如果输入的学生中无男或无女则再对应行输出Absent,最后一行输出NA。
思路
- 依照题意做即可,统计男、女学生数目做判断,保存、更新成绩最大、最小值以及对应学生结构体数组下标。
代码
#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;
}
philwu000
发布了18 篇原创文章 · 获赞 1 · 访问量 245
私信
关注