您的位置:首页 > 编程语言 > C语言/C++

选夫婿1

2016-07-25 20:48 183 查看
题目描述

**

选夫婿1

输入数据的第一行是一个正整数N(0 < N < 1000)。然后N行数据,每行包含三部分,用空格隔开。第一部分是报名者的姓名name(长度小于20的字符串),然后是整数身高h(0 < h < 300),第三部分是整数体重w (0 < w < 200)。最后一行是四个整数a,b,c,d.表示身高的合格范围是[a,b],体重的合格范围是[c,d](0 < a < b < 200, 0 < c < d < 300)。你需要把合格的信息按照身高从低到高输出,格式每行三个信息,共N行,如果身高相同则按体重从轻到重输出,若没有合格人选则输出No.**

#include<stdio.h>
struct sdut
{
char name[21];
int h,w;
}s[1001],t;
int main()
{
int n,i,a,b,c,d,j,k=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%s%d%d",&s[i].name,&s[i].h,&s[i].w);
scanf("%d%d%d%d",&a,&b,&c,&d);
for(i=1;i<=n;i++)
{
if(a<=s[i].h&&b>=s[i].h&&c<=s[i].w&&d>=s[i].w)
{
k++;
s[k]=s[i];
}
}
for(i=1;i<=k;i++)
{
for(j=1;j<=k-i;j++)
{
if(s[j].h>s[j+1].h)
{
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
else if(s[j].h==s[j+1].h&&s[j].w>s[j+1].w)
{
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
}
}
if(k==0)
printf("No\n");
else
for(i=1;i<=k;i++)
printf("%s %d %d\n",s[i].name,s[i].h,s[i].w);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言