今天在学校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;
}