qsort 结构体排序class quan //x,y两点间的权{public:int dis;int x;int y;
![](images/u2507.png)
qsort 结构体排序
class quan //x,y两点间的权
{
public:
int dis;
int x;
int y;
void cal(int c1,int r1,int c2,int r2);
};
··································
vectorw;
quan s;
for ( i=1;i
class quan //x,y两点间的权
{
public:
int dis;
int x;
int y;
void cal(int c1,int r1,int c2,int r2);
};
··································
vectorw;
quan s;
for ( i=1;i
已提交,审核后显示!提交回复
共1条回复
NT舞扬 共回答了21个问题
|采纳率85.7%- 七种qsort排序方法
<本文中排序都是采用的从小到大排序>
一、对int类型数组排序
int num[100];
Sample:
int cmp ( const void *a , const void *b )
{
return *(int *)a - *(int *)b;
}
qsort(num,100,sizeof(num[0]),cmp);
二、对char类型数组排序(同int类型)
char word[100];
Sample:
int cmp( const void *a , const void *b )
{
return *(char *)a - *(int *)b;
}
qsort(word,100,sizeof(word[0]),cmp);
三、对double类型数组排序(特别要注意)
double in[100];
int cmp( const void *a , const void *b )
{
return *(double *)a > *(double *)b ? 1 : -1;
}
qsort(in,100,sizeof(in[0]),cmp);
四、对结构体一级排序
struct In
{
double data;
int other;
}s[100]
//按照data的值从小到大将结构体排序,关于结构体内的排序关键数据data的类型可以很多种,参考上面的例子写
int cmp( const void *a ,const void *b)
{
return (*(In *)a).data > (*(In *)b).data ? 1 : -1;
}
qsort(s,100,sizeof(s[0]),cmp);
五、对结构体二级排序
struct In
{
int x;
int y;
}s[100];
//按照x从小到大排序,当x相等时按照y从大到小排序
int cmp( const void *a , const void *b )
{
struct In *c = (In *)a;
struct In *d = (In *)b;
if(c->x != d->x) return c->x - d->x;
else return d->y - c->y;
}
qsort(s,100,sizeof(s[0]),cmp);
六、对字符串进行排序
struct In
{
int data;
char str[100];
}s[100];
//按照结构体中字符串str的字典顺序排序
int cmp ( const void *a , const void *b )
{
return strcmp( (*(In *)a)->str , (*(In *)b)->str );
}
qsort(s,100,sizeof(s[0]),cmp);
七、计算几何中求凸包的cmp
int cmp(const void *a,const void *b) //重点cmp函数,把除了1点外的所有点,旋转角度排序
{
struct point *c=(point *)a;
struct point *d=(point *)b;
if( calc(*c,*d,p[1]) < 0) return 1;
else if( !calc(*c,*d,p[1]) && dis(c->x,c->y,p[1].x,p[1].y) < dis(d->x,d->y,p[1].x,p[1].y)) //如果在一条直线上,则把远的放在前面
return 1;
else return -1;
}
PS:
其中的qsort函数包含在的头文件里,strcmp包含在 的头文件里
另外,站长团上有产品团购,便宜有保证 - 1年前
相关推荐
- 结构体,共用体和枚举类型的基本特点及区别
王一中1年前1
-
良宵下1 共回答了21个问题
|采纳率100%结构体和数组一样都是构造型数据类型,和数组不同的是,结构体可以处理不同类型的数据.如下定义一个学生信息的结构体:
struct student{
int number;
char sex[3];
char name[10];
srtuct birthday birth;//birthday 是结构体类型的数据,这里没有写出来
char dep[20];
}这个结构体有三种类型的数据,可以看出结构体里还可以有结构体类型、共用体的类型的数据.
共用体是一种多变量共享存储空间的构造类型,它允许几种不同的变量共用同一存储空间.共用体和结构体的区别:1.结构体每一位成员都用来表示一种具体事务的属性,共用体成员可以表示多种属性(同一存储空间可以存储不同类型的数据).
2.结构体总空间大小,等于各成员总长度,共用体空间等于最大成员占据的空间.
3.共用体不能赋初值.
只要理解了共用体了结构体他们的区别应该能分清楚.
枚举类型是指变量的值可以全部列出,定义一个枚举变量后,变量的值确定在定义之中.它和结构体、共用体的区别在于,枚举元素是常量,只能在定义阶段赋值.枚举是比较特别的类型,有很多的细节,你可以翻阅书本继续理解.1年前查看全部
- 结构体 & 一个变量 表示什么意思
结构体 & 一个变量 表示什么意思
typedef struct _GUID
{
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
} GUID;
GUID& tag 这个语句表示什么意思?
45abc1271年前1
-
qct0305 共回答了17个问题
|采纳率94.1%引用,就是两个就绑定同名了, 和define有点像,详细请看百科1年前查看全部
- c#程序题,会的告诉下,重谢!1.( )是一个结构体,在二维平面中用来表示一个矩形.(5.0 分) a Paintb P
c#程序题,会的告诉下,重谢!
1.
( )是一个结构体,在二维平面中用来表示一个矩形.
(5.0 分)
a paint
b point
c pen
d brush
2.
c#中可以使用( )类和 rectanglef 类来表示一个矩形.
(5.0 分) a paint
b pen
c rectangle
d brush
3.
当窗体从最小化恢复时,会调用窗体的( )事件.
(5.0 分) a draw
b load
c paint
d brush
4.
以下说法错误的是( ).
(5.0 分) a 不能在一个方法体内声明另外一个方法
b 在方法调用中,实参列表中参数的数量、类型和顺序可以不与形参列表中的参数完全对应
c 在调用返回类型为void的方法时,不能在表达式中或赋值语句中使用其名称来调用它
d 区别方法和属性的方法是看它们后面是否带圆括号
5.
数组参数的修饰符为( ).
(5.0 分) a ref
b 无修饰符
c params
d out
6.
( )参数允许向方法传递个数变化的参数.
(5.0 分) a 引用参数
b 输出参数
c 值参数
d 数组型参数
7.
以下说法错误的是( ).
(5.0 分) a 方法的重载是指方法的名称相同,在调用时,编译器根据不同的方法签名调用不同的方法
b 如果一个方法采用ref或out参数,而另一个方法不采用这2类参数,则可以进行重载
c 如果一个方法采用ref参数,而另一个方法采用out参数,则无法重载这2个方法
d 如果2个方法只是返回类型不一致,则可以构成重载条件
8.
以下程序段运行结果是( ).
static long sumof(long n)
{
if (n == 0 || n == 1)
return 1l;
else
return n + sumof(n - 1);
}
static void main(string[] args)
{
console.writeline("1~100的和是{0} ",sumof(100));
console.readkey();
}
(5.0 分) a 100的和是5050
b 100的和***1
c 100的和是5051
d 100的和***0
9.
以下哪个事件是关闭窗体事件?( )
(5.0 分) a formclosed
b resize
c load
d doubleclick
10.
和c#中的所有对象一样,窗体也是对象,是( )类的实例
(5.0 分) a system
b form
c controls
d label
11.
如果要将窗体设置为透明的,则( ).
(5.0 分) a 要将locked 属性设置为true;
b 要将 enabled属性设置为true;
c 要将opacity属性设置为小于100%得值;
d 要将formboderstyle属性设置为none;
12.
winforms程序中,如果复选框控件的 checked属性值设置为 true,表示( ).
(5.0 分) a 该复选框不被选中
b 不显示该复选框的文本信息
c 该复选框被选中
d 显示该复选框的文本信息
13.
以下不属于列表类控件的是( ).
(5.0 分) a button
b combobox
c listbox
d checkedlistbox
二 判断题1.
text是用来设置窗体的标题属性的.
(5.0 分) a true
b false
2.
应用程序还可以分为单文档(sdi)应用程序 、双文档应用程序(tdi)和多文档(mdi)应用程序.
(5.0 分) a false
b true
3.
在try后的finally块是必选的.
(5.0 分) a false
b true
4.
throw语句可以抛出异常对象.
(5.0 分) a true
b false
5.
在try块后,必须有一个catch块处理异常.
(5.0 分) a false
b true
6.
每一个try后面只能跟一个catch语句.
(5.0 分) a false
b true
7.
异常对象是从exception类派生而来的.(5.0 分) a true
b false懒3151年前1
-
天雷IQQI紫 共回答了21个问题
|采纳率85.7%1.b.Point
2.c.Rectangle
3.c.Paint
4.d.区别方法和属性的方法是看它们后面是否带圆括号
5.c.params
6.d.数组型参数
7.c.如果一个方法采用ref参数,而另一个方法采用out参数,则无法重载这2个方法
8.a.100的和是5050
9.a FormClosed
10.Form
11.c 要将Opacity属性设置为小于100%得值;
12.c 该复选框被选中
13.a Button
二.
1.true
2.true
3.false
4 true
5 false
6 true
7.true1年前查看全部
- 请问结构体类型名加变量名定义的是什么?补充:结构体大括号分号之后的变量代表的是结构体类型名吧?
PQ8的未来1年前1
-
316271027 共回答了19个问题
|采纳率89.5%定义的是一个这个类型的对象
struct A{……};
A n;//类似于 int a;
只不过int类型很简单,而结构体类型要相对复杂,A是这个结构体的结构名
struct A{……}n,m;和
struct A{……};
A n;A m; 是一样的1年前查看全部
- C 语言中,在结构体前面加上非符号(!),
C 语言中,在结构体前面加上非符号(!),
例:struct context *set_ctx; set_ctx 表示什么?7q1ggh1年前1
-
乱世剑侠 共回答了12个问题
|采纳率91.7%这是一种不规范的写法,虽然编译器可以通过
也并不是针对结构体的,这只是针对指针的,一般用于条件判断语句中
在指针前加感叹号用于判断是否为空,例如:
char *p = NULL;
if (!p) // 如果p为空
{
printf("errorn");
}1年前查看全部
- 定义一个记录平面点坐标的结构体,编写一个函数求两点距离.
定义一个记录平面点坐标的结构体,编写一个函数求两点距离.
用C++程序做thetemp1231年前2
-
xcr1688 共回答了18个问题
|采纳率100%【C语言】
#include
#include
struct point
{
double x;
double y;
}point[2],*p1,*p2;//全局变量
double _distance()
{
p1=&point[1];
p2=&point[2];
double d;
d=sqrt(pow((p1->x-p2->x),2)+pow((p1->y-p2->y),2));
return (d);
}
void _scan()
{
int i;
for (i=0;i> p1.x >> p1.y >> p2.x >> p2.y;
cout1年前查看全部
- 设有定义语句“struct {int a;float b;char c;}abc,*p;”,则对结构体成员a的引用可以是
设有定义语句“struct {int a;float b;char c;}abc,*p;”,则对结构体成员a的引用可以是( ).
A、abc.a
B、abc->a
C、(*p).a
D、p->aSeabin771年前1
-
春天的燕子sxy 共回答了10个问题
|采纳率100%ACD都可以.1年前查看全部
- 函数的参数问题struct EngineerStruct //声明存储工程师信息的结构体 { unsigned int
函数的参数问题
struct EngineerStruct //声明存储工程师信息的结构体
{
unsigned int EngineerNo; //工程师编号
char EngineerName[20]; //工程师姓名
enum Sex EngineerSex; //工程师性别
struct DateStruct EngineerBirth; //工程师生日
char EngineerHometown[10]; //工程师籍贯
unsigned int EngineerEducation; //工程师学历
char EngineerAddress[30]; //工程师地址
char EngineerPhone[15]; //工程师电话
unsigned int EngineerWorkYears; //工程师工龄
float EngineerBaseSalary; //工程师基本薪水
};
int InputEngineerNo(struct EngineerStruct Engineer[].EngineerNo,int i)//这里的参数怎么填写?
{
printf("请输入工程师的编号");
scanf("%d",&i);
if(DataNo[i]==1)//DataNo测试编号是否重复
{
printf("此编号已存在请重新输入");
InputEngineerInformation();
}
else
{
DataNo[i]=1;//DataNo标记编号已使用
Engineer[i].EngineerNo=i;
}
return 0;
}
int InputEngineerInformation(struct EngineerStruct Engineer[])
{
int i;
InputEngineerNo(Engineer[i].EngineerNo,i);
}
最后那段写错了,应该是
int InputEngineerInformation(struct EngineerStruct Engineer[])
{
int i;
//编号输入
InputEngineerNo();
}张高生1年前1
-
蓝天的粉丝 共回答了20个问题
|采纳率95%这样写就可以了:
"int InputEngineerNo(EngineerStruct Engineer[],int i)“
这种写法等同于:
"int InputEngineerNo(EngineerStruct *Engineer,int i)”
对于C的编译起来说都等同于得到了一个EngineerStruct数组的头指针.1年前查看全部
- 岩体、岩石、结构面、结构体之间的关系
nvrkkvjkj1年前3
-
branda14 共回答了15个问题
|采纳率93.3%岩体:只是对岩浆岩中深成侵入岩的空间存在的一种称呼,比如花岗岩体、辉长岩体、闪长岩体.至于浅成侵入岩则用产状说,比如辉绿岩岩墙,不讲岩体;岩浆喷出后形成的喷出岩也用产状说,比如玄武岩岩被,也不讲岩体
岩石:矿物集合体.分为岩浆岩、变质岩、沉积岩三大类.
结构面:岩石或岩层中不连续的界面,比如节理裂隙面、层面、断层结构面.
结构体:被结构面围绕的岩块.
结构面和结构体是工程地质上常用的概念.岩石和岩体在所有地质学领域都在使用1年前查看全部
大家在问
- 1问个字,左边一个足字旁.右面是就,念什么
- 2若定义在R上的函数f(x)对任意x1,x2∈R,都有f(x1+x2)=f(x1)+f(x2)-1成立,且当x>0时,f(
- 3太阳的热主要是以什么的形式传送到地球上的
- 4将十进制数796.703125转换为八进制数.求过程.特别是小数部分的过程.
- 5氢氧根离子检验后回发生什么现象?
- 6小胖与同学们举行羽毛球比赛,每2个同学赛一场,比赛结束时共打了21场,问小胖邀请了多少人
- 7循规蹈矩的反义词
- 8正在装修房子,木工刚做好,这个木工工资清单合理吗
- 9跪求数学大神,速度 帮忙吧,.求解:把1-8这八个数字分别填入括号里 ,使得等式成立所有数都是2位数,数字不得重复:()
- 10一杯盐水300g,含盐率为10%,现在加入多少克的盐,才能使含盐率达到20%?
- 11英语作文30词10篇
- 12什么是中国文化史上的 三晚 时期? 中国文化的特殊品质有哪些?急啊
- 13如果人和别的动物杂交,会形成新的物种吗?
- 14小明的妈妈买了苹果与桔子.苹果的个数是桔子的2倍.全家每天吃五个苹果,4
- 15等体积的求和正方体,它们表面积大小关系是