解题思路:

结构体,冒泡排序法

参考代码:

冒泡排序算法

//冒泡排序
void sort(int& array) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n - 1 - i; j++) {
            if (array[j] > array[j + 1]) {//从小到大排序
                int temp;
                temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    }
}

参考代码:

#include<iostream>
//#include<bits/stdc++.h>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<malloc.h>
using namespace std;

bool cmp(int a, int b) {
    return a > b;
}

struct student {
    int id;
    int score;
};

student stu1[100];
student stu2[100];
student stu3[200];

int n, m;

void input1() {
    cin >> n >> m;
    for (int i = 0; i < n; i++) {
        cin >> stu1[i].id >> stu1[i].score;
    }
    for (int i = 0; i < m; i++) {
        cin >> stu2[i].id >> stu2[i].score;
    }
}

void listUnit() {
    for (int i = 0; i < n; i++) {
        stu3[i].id = stu1[i].id;
        stu3[i].score = stu1[i].score;
    }
    for (int i = 0; i < m; i++) {
        stu3[n + i].id = stu2[i].id;
        stu3[n + i].score = stu2[i].score;
    }
}

int main() {
    input1();
    listUnit();
    student min;
    for (int i = 0; i < n + m; i++) {//此处冒泡排序
        for (int j = 0; j < n + m - 1 - i; j++) {
            if (stu3[j].id > stu3[j + 1].id) { 
                min.id = stu3[j].id;
                min.score = stu3[j].score;
                stu3[j].id = stu3[j + 1].id;
                stu3[j].score = stu3[j + 1].score;
                stu3[j+1].id = min.id;
                stu3[j+1].score = min.score;
            }
        }
    }
    for (int i = 0; i < n + m; i++) {
        cout << stu3[i].id << " " << stu3[i].score << endl;
    }
    return 0;
}


点赞(0)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 2 条评论

你tm劈我代码是吧 3年前 回复TA
@你tm劈我代码是吧 return 0; }  void creat(Linklist head, int N) {     Lnode *p, *q;     p = head;     for (int i = 0; i < N; i++)     {         q = (Linklist)malloc(sizeof(Lnode));         q->next = NULL;         scanf("%d%d", &q->data.num, &q->data.g);         p->next = q;         p = p->next;     } }  void conect(Linklist p1, Linklist p2) {     while (p1->next)     {         p1 = p1->next;     }     p1->next = p2->next; }  void sort(Linklist a, int N, int M) {     Lnode *x;     x = a->next;     for (int i = N + M - 1; i >= 1; i--)     {         x = a->next;         for (int j = 1; j <= i; j++)         {             if (x->data.num > x->next->data.num)             {                 Lnode *t;                 t = (Linklist)malloc(sizeof(Lnode));                 t->data = x->data;                 x->data = x->next->data;                 x->next->data = t->data;                 free(t);             }             x = x->next;         }     } }  void print(Linklist a) {     Linklist p;     p = a->next;     while (p)     {         printf("%d %d
", p->data.num, p->data.g);         p = p->next;     } }
你tm劈我代码是吧 3年前 回复TA
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
    int num;
    int g;
} elem;

typedef struct lnode
{
    elem data;
    struct lnode *next;
} Lnode, *Linklist;

int main()
{
    void creat(Linklist head, int N);
    void conect(Linklist p1, Linklist p2);
    void sort(Linklist a, int N, int M);
    void print(Linklist a);
    Linklist a, b;
    a = (Lnode *)malloc(sizeof(Lnode));
    a->next = NULL;
    b = (Lnode *)malloc(sizeof(Lnode));
    b->next = NULL;
    int N, M;
    scanf("%d%d", &N, &M);
    creat(a, N);
    creat(b, M);
    conect(a, b);
    sort(a, N, M);
    print(a);