首页 > 代码库 > 结构体

结构体

哦,今天学了结构体哦,先贴代码吧,搞懂了再说

#include <algorithm>
#include <iostream>
#include <string.h>
using namespace std;

const int N=50;

struct stu{
char a[10];
int b;
};
stu ch[N];

bool cmp(stu a1, stu b1)
{
    int k=strcmp(a1.a, b1.a);
    if(k>0) return false;
    if(k<0) return true;
    else return a1.b < b1.b;
}

int main()
{
    int n;
    cin >> n;
    for(int i=0; i<n; i++)
        cin >> ch[i].a >> ch[i].b;
    sort(ch, ch+n, cmp);
    for(int i=0; i<n; i++)
        cout << ch[i].a << " " << ch[i].b << endl;
    return 0;
}

 

#include <algorithm>
#include <iostream>
#include <string.h>
using namespace std;

const int N=50;

struct stu{
    int a, b;

    bool operator < (const stu& other) const {
        return a == other.a ? b < other.b : a < other.a;
    }
};
stu p[N];

int main(){
    int n;
    cin >> n;
    for(int i=0; i<n; i++)
        cin >> p[i].a >> p[i].b;
    sort(p, p+n);
    for(int i=0; i<n; i++)
        cout << p[i].a << " " << p[i].b << endl;
    return 0;
}

 

由此强行做一题水题实践

Problem Description:

   在一个平面坐标系上有很多的点,你的任务是将它们按到原点的距离从近到远排序。

Input:

输入包含多组数据。每组数据第一行一个n,代表点的数量。接下来有n行,每行两个整数x,y,代表点的坐标。(n<=1000,0<=x,y<=10000)

Output:

对于每组数据,输出n行,每行两个整数,空格隔开。如果出现距离一样的,优先输出x坐标小的。

Sample Input:

3
1 2
2 3
3 2

Sample Output:

1 2
2 3
3 2
#include<iostream>
#include<algorithm>
using namespace std;

struct stu{
int a, b;
};
stu ch[1002];

bool cmp(stu x, stu y){
    if(x.a*x.a+x.b*x.b == y.a*y.a+y.b*y.b) return x.a < y.a;
    return x.a*x.a+x.b*x.b < y.a*y.a+y.b*y.b;
}
int main()
{
    int n;
    while(cin>>n)
    {
        for(int i=0; i<n; i++)
            cin >> ch[i].a>> ch[i].b;
        sort(ch, ch+n, cmp);
        for(int i=0; i<n; i++)
            cout << ch[i].a << " " <<ch[i].b << endl;
    }
    return 0;
}

 

 

结构体