22/1/5/2

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct {
    char name[11];
    int score;
} Student;

// 比较函数,用于决定排序规则
int compare(const void *a, const void *b, void *order) {
    Student *student_a = (Student *)a;
    Student *student_b = (Student *)b;
    int sort_order = *(int *)order;

    if (student_a->score == student_b->score) {
        return 0; // 相同分数的学生保持原来的顺序
    }

    if (sort_order == 0) { // 从高到低排序
        return student_b->score - student_a->score;
    } else { // 从低到高排序
        return student_a->score - student_b->score;
    }
}

int main() {
    int n, sort_order;
    scanf("%d %d", &n, &sort_order);

    Student *students = (Student *)malloc(n * sizeof(Student));
    for (int i = 0; i < n; i++) {
        scanf("%s %d", students[i].name, &students[i].score);
    }

    // 使用 qsort_r 进行排序,可以传递额外的参数给比较函数
    qsort_r(students, n, sizeof(Student), compare, &sort_order);

    for (int i = 0; i < n; i++) {
        printf("%s %d\n", students[i].name, students[i].score);
    }

    free(students);
    return 0;
}

#include <stdio.h>
#include <stdlib.h>

typedef struct {
    int id;     // 学生学号
    int score;  // 学生分数
} Student;

// 比较函数,用于排序
int compare(const void *a, const void *b) {
    Student *student_a = (Student *)a;
    Student *student_b = (Student *)b;
    
    // 首先按分数排序
    if (student_a->score != student_b->score) {
        return student_a->score - student_b->score;
    }
    // 如果分数相同,则按学号排序
    return student_a->id - student_b->id;
}

int main() {
    int n;
    scanf("%d", &n);

    Student *students = (Student *)malloc(n * sizeof(Student));
    for (int i = 0; i < n; i++) {
        scanf("%d %d", &students[i].id, &students[i].score);
    }

    // 使用 qsort 进行排序
    qsort(students, n, sizeof(Student), compare);

    for (int i = 0; i < n; i++) {
        printf("%d %d\n", students[i].id, students[i].score);
    }

    free(students);
    return 0;
}

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAX 1000 // 假设最大长度为1000

// 用于模拟vector的功能
typedef struct {
    int arr[MAX];
    int size;
} Vector;

// 初始化Vector
void init_vector(Vector *v) {
    v->size = 0;
}

// 向Vector中添加元素
void push_back(Vector *v, int val) {
    if (v->size < MAX) {
        v->arr[v->size++] = val;
    }
}

// 反转Vector中的元素
void reverse(Vector *v) {
    int temp;
    for (int i = 0; i < v->size / 2; i++) {
        temp = v->arr[i];
        v->arr[i] = v->arr[v->size - 1 - i];
        v->arr[v->size - 1 - i] = temp;
    }
}

// 从高位开始除以b
Vector div_and_mod(Vector *A, int b, int *r) {
    Vector C;
    init_vector(&C);
    *r = 0;
    for (int i = A->size - 1; i >= 0; i--) {
        *r = *r * 10 + A->arr[i];
        push_back(&C, *r / b);
        *r %= b;
    }
    reverse(&C);
    // 删除前导零
    while (C.size > 1 && C.arr[C.size - 1] == 0) {
        C.size--;
    }
    return C;
}

int main() {
    char s[MAX];
    while (scanf("%s", s) != EOF) {
        Vector A;
        init_vector(&A);
        int n = strlen(s);
        for (int i = n - 1; i >= 0; i--) {
            push_back(&A, s[i] - '0');
        }
        int r = 0;
        Vector res, C;
        init_vector(&res);
        C = div_and_mod(&A, 2, &r);
        do {
            push_back(&res, r);
            if (C.size == 1 && C.arr[0] == 0) break;
            C = div_and_mod(&C, 2, &r);
        } while (1);

        for (int i = res.size - 1; i >= 0; i--) {
            printf("%d", res.arr[i]);
        }
        printf("\n");
    }
    return 0;
}

#include<iostream>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
int r=0;
//m进制的除法
vector<int> divide(vector<int> & in,int n,int m)
{
    vector<int> res;
    for(int i=in.size()-1;i>=0;i--)
    {
        //两位转换为10进制
        in[i]=r*m+in[i];
        res.push_back(in[i]/n);
        r = in[i]%n;
    }
    reverse(res.begin(),res.end());
    while(res.size() && res.back()==0) res.pop_back();
    return res;
}
int main()
{
    int m,n;
    string x,res;
    vector<int> save;
    cin>>m>>n>>x;
    //存储x到save中,从个位开始
    for(int i=x.size()-1;i>=0;i--)
    {
        if(x[i]<='9') save.push_back(x[i]-'0');
        else save.push_back(x[i]-'A'+10);
    }

    //开始处理x,将m进制的x转换为n进制的数
    while(save.size())
    {
        save = divide(save,n,m);
        if(r<=9) res+=r+'0';
        else res+=r-10+'a';
        //重新初始化余数为0
        r=0;
    }
    //处理完成,输出结果
    for(int i=res.size()-1;i>=0;i--) 
        cout<<res[i];
    cout<<endl;
    return 0;
}

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值