排序基础题二
(2018-09-19 20:50:24)分类: 排序 |
一)openjudge甲流病人初筛选
目前正是甲流盛行时期,为了更好地进行分流治疗,医院在挂号时要求对病人的体温和咳嗽情况进行检查,对于体温超过37.5度(含等于37.5度)并且咳嗽的病人初步判定为甲流病人(初筛)。现需要统计某天前来挂号就诊的病人中有多少人被初筛为甲流病人。
输入
第一行是某天前来挂号就诊的病人数n。(n < 200)
其后有n行,每行是病人的信息,包括三个信息:姓名(字符串,不含空格,最多8个字符)、体温(float)、是否咳嗽(整数,1表示咳嗽,0表示不咳嗽)。每行三个信息之间以一个空格分开。
输出
按输入顺序依次输出所有被筛选为甲流的病人的姓名,每个名字占一行。之后在输出一行,表示被筛选为甲流的病人数量。
样例输入
5
Zhang 38.3
0
Li 37.5
1
Wang 37.1
1
Zhao 39.0
1
Liu 38.2
1
样例输出
Li
Zhao
Liu
3
using namespace std;
struct man
{
char name[100];
float l;
int s;
int y;
} m[201];
//使用了未教的struct,不过这里确实适合用struct;
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%s %f %d",m[i].name,&m[i].l,&m[i].s);
if(m[i].l>=37.5 && m[i].s==1) m[i].y=1;
else m[i].y=0;
}
int cnt=0;
for(int i=1;i<=n;i++)
if(m[i].y==1) printf("%s\n",m[i].name),cnt++;
printf("%d",cnt);
return 0;
}
二)openjudge病人排队
openjudge病人排队
描述
病人登记看病,编写一个程序,将登记的病人按照以下原则排出看病的先后顺序:
1. 老年人(年龄
>= 60岁)比非老年人优先看病。
2.
老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。
3.
非老年人按登记的先后顺序看病。
输入
第1行,输入一个小于100的正整数,表示病人的个数;
后面按照病人登记的先后顺序,每行输入一个病人的信息,包括:一个长度小于10的字符串表示病人的ID(每个病人的ID各不相同且只含数字和字母),一个整数表示病人的年龄,中间用单个空格隔开。
输出
按排好的看病顺序输出病人的ID,每行一个。
样例输入
5
021075
40
004003
15
010158
67
021033
75
102012
30
样例输出
021033
010158
021075
004003
102012
using namespace std;
struct per
{
int
num;
string
id;
int
age;
};
int score_comp(const per &a,const per &b)
{
if((a.age>=60)||(b.age>=60))
{
if(a.age
> b.age)return 1;
if(a.age
< b.age)return 0;
}
if(a.num
< b.num)return 1;
return
0;
}
int main()
{
int n;
cin>>n;
per
a[100];
for(int
i=1;i<=n;i++)
{
cin>>a[i].id>>a[i].age;
a[i].num=i;
}
输入
输出
样例输入
样例输出
using namespace std;
struct man
{
}
二)openjudge病人排队
openjudge病人排队
描述
输入
输出
样例输入
样例输出
using namespace std;
struct per
{
};
int score_comp(const per &a,const per &b)
{
}
}
int main()
{