选夫婿--加强版

发布时间 2023-05-19 21:01:25作者: harper886

今天在学校oj上面碰到的题,用到了结构体和冒泡排序,因为我只会冒泡排序



排版不好凑活着看吧
下面上代码里面有注释

#include <stdio.h>
#include <string.h>

typedef struct{
	char mame[999];
	int h;
	int kg;
}data;//定义一个结构体用来储存 名字 身高 体重


/*
1.该函数是用来排序的
2.需要一个结构体数组,以及该结构体数组的长度
3.该函数没有返回结果
*/

void bubble(data arr[],int len)

{
	while(len!=1){
		len--;//冒泡排序准备
		int temp;
		char temp1[999];
		int kgtemp;
	//定义的3个临时变量	
		
		
		for(int i=0;i<len;i++){
			if(arr[i].h>arr[i+1].h){  //以身高值为准进行排序 
				temp=arr[i].h;
				arr[i].h=arr[i+1].h;
				arr[i+1].h=temp;
				
				strcpy(temp1,arr[i].mame);
				strcpy(arr[i].mame,arr[i+1].mame);
				strcpy(arr[i+1].mame,temp1);//同时交换名字,以便于可以与身高一一对应
				//注意strcpy的使用
			kgtemp=arr[i].kg;
			arr[i].kg=arr[i+1].kg;
			arr[i+1].kg=kgtemp;
			//同时交换体重

			}
		}
	}
}

int main()
{
	
	int n;
	int count=0;//用来输出符合题目要求的数据模板
	
	scanf("%d",&n);
	data arr[n];//定义结构体数组
	int hmin;
	int hmax;
	int kgmin;
	int kgmax;
	
	for(int i=0;i<n;i++){
		scanf("%s",arr[i].mame);
		scanf("%d",&arr[i].h);
		scanf("%d",&arr[i].kg);
		
		
	}//读取这些数据并且写入结构体
bubble(arr,n);//调用函数


	scanf("%d %d",&hmin,&hmax);
	scanf("%d %d",&kgmin,&kgmax);//读入符合条件的身高和体重
	
	for(int i=0;i<n;i++){
		if((arr[i].h>=hmin && arr[i].h<=hmax) && (arr[i].kg>=kgmin && arr[i].kg<=kgmax)){//对满足条件的数据进行输出
			if(count!=0){
				printf("\n");
			}
			count++;
			printf("%s %d %d",arr[i].mame,arr[i].h,arr[i].kg);//打印满足条件的数据
			
			
		}
	}
	if(count==0){
		printf("No");//如果没有输出no
	}

	return 0;
}