首页 > 其他分享 >浙江工商大学 ZJGSU OJ 2514. 我找还是你找

浙江工商大学 ZJGSU OJ 2514. 我找还是你找

时间:2024-12-18 10:26:48浏览次数:13  
标签:ZJGSU int void dia 棍子 工商大学 2514 sb include

目录

题面

思路

重点

代码


题面

2514. 我找还是你找

描述

某公司仓库从有很多刚生产出来的棍子,小Y要从仓库中找到这样一根棍子,这根棍子的要求如下(优先级1>2>3):

1、 这根棍子一定要是仓库中最长的;

2、 这根棍子一定要是最长的棍子中最细的;

3、 这根棍子一定要是符合前两条的棍子中编码最大的(每根棍子都有一个互不相同的编码,越大表示生产日期越近)。

相关的资料到是有,可是,手工从几百份棍子材料中选出符合要求的那根……

要不,还是请你编写个程序来帮他解决这个问题吧。

输入

第一行是一个整数N(N<=10)表示测试数据的组数)

每组测试数据的第一行 有一个整数m(m<=1000),表示仓库中所有棍子的数量,

之后m行,每行三个整数,分别表示一根棍子的长度(以毫米为单位)、直径(以毫米为单位)和编码(一个9位整数)。

输出

对应每组测试数据的输出只有一个9位整数,表示选出的那根钢管的编码,

每个输出占一行

输入样例 1 

2
2
2000 30 123456789
2000 20 987654321
4
3000 50 872198442
3000 45 752498124
2000 60 765128742
3000 45 652278122

输出样例 1

987654321
752498124

思路

创建结构体bar,保存棍子的属性。

通过qsort(<stdlib.h>)排序,输出首位。

重点

掌握qsort,结构体的使用。

在C语言中,qsort 函数要求比较函数cmp接收两个const void*类型的参数,这两个参数实际上是qsort函数内部将要比较的两个元素的地址。由于void*是一种通用指针类型,它不包含任何类型信息,因此在cmp函数内部不能直接将其解引用为特定类型的变量。

这是因为void*指针可以被指向任何类型的数据,而编译器不知道这个指针在运行时具体指向哪种类型的数据。直接解引用可能会导致类型不匹配,进而导致未定义行为,比如读取错误的内存区域,这可能会引发程序崩溃或其他安全问题。

因此,你需要做的是将传入的void*指针强制转换为正确的类型指针,在本例中就是sb*类型的指针。通过这种方式,你可以确保在比较函数中有正确的类型信息,并且可以安全地访问结构体sb的成员。

代码

#include<ctype.h>
#include<limits.h>
#include<math.h>
#include<stdbool.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define sb struct bar //方便后续定义

struct bar{
	int len;
	int dia;
	char s[10]; 
};

sb a[100];

// 返回值大于0表示交换,小于0表示不交换
int cmp(const void *a, const void *b){
	sb *pa = (sb*)a;
	sb *pb = (sb*)b;
	
	if (pa->len != pb->len) return (pa->len < pb->len) ? 1 : -1; // 比较长度(降序)
	if (pa->dia != pb->dia) return (pa->dia > pb->dia) ? 1 : -1; // 比较直径(升序)
	return (strcmp(pb->s,pa->s));                                // 比较编号(降序)
}

void solve(){
	int n;scanf("%d",&n);
	for (int i = 0; i < n; i++){
		scanf("%d %d %s",&a[i].len,&a[i].dia,a[i].s);
	}
  
	qsort(a,n,sizeof(sb),cmp);
	
	printf("%s\n",a[0].s);
	return ;
}

int main(){
	int t;scanf("%d",&t);
	while(t--){
		solve();
	}
	return  0;
}

标签:ZJGSU,int,void,dia,棍子,工商大学,2514,sb,include
From: https://blog.csdn.net/Kyrie_xiang/article/details/144552757

相关文章