PTA习题(C语言)

目录

素数对猜想

找出不是两个数组共有的元素

统计不同数字字符出现次数

 组个最小数

单词长度

IP地址转换

找鞍点

通讯录排序

统计期末成绩

选民投票

歌唱比赛计分

判断两个字符串是否为变位词

求矩阵的局部极大值

最长最短单词

 sdut-array2-5 打印“杨辉三角“ 品中国数学史 增民族自豪感(2)

1000以内所有各位数字之和为n的正整数

统计素数并求和

求一定范围内的所有完数

最大公约数和最小公倍数

求整数序列中出现次数最多的数

 求一批整数中出现最多的个位数字

简单选择排序显示第K趟

统计字符

统计大写辅音字母

字符串解压

 判断上三角矩阵

 字符串排序

学生信息的那些操作:(5)添加记录

学生信息的那些操作:(6) 删除记录

求一组数的平均值并按降序排序

过滤字符串只保留串中的数字字符

电码加密

从键盘读入一串字符后去除首尾字符后的字符串按降序排序

每个单词的首字母改为大写

按要求移动字符

查找二维数组中的最大值及其行列下标


素数对猜想

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free

void init(int n, bool *is, int *pre, int *cnt) {
    for (int i = 2; i <= n; i++) {
        if (!is[i]) pre[(*cnt)++] = i;
        for (int j = 0; j < *cnt; j++) {
            int product = pre[j] * i;
            if (product > n) break;
            is[product] = true;
            if (i % pre[j] == 0) break;
        }
    }
}

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

    // 动态分配数组
    bool *is = calloc(n + 1, sizeof(bool));  // 初始化为 false(分配内存并初始化)
    int *pre = malloc((n + 1) * sizeof(int));
    int cnt = 0;

    init(n, is, pre, &cnt);

    int ans = 0;
    for (int i = 1; i < cnt; i++) {
        if (pre[i] - pre[i-1] == 2) ans++;
    }
    printf("%d\n", ans);

    free(is);
    free(pre);
    return 0;
}

 在C语言中,malloc只需要一个参数,即要分配的总字节数。

calloc 不仅分配内存,还会将分配的内存初始化为零(对于数值类型,如 int 和 bool,这意味着初始化为 false)。

找出不是两个数组共有的元素

给定两个整型数组,本题要求找出不是两者共有的元素。

输入样例:

10 3 -5 2 8 0 3 5 -15 9 100
11 6 4 8 2 6 -5 9 0 100 8 1

输出样例: 

3 5 -15 6 4 1

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free

int main() {
    int n, m;

    scanf("%d", &n);
    int *a = malloc(n*sizeof(int));
    for (int i = 0; i<n; i++){
        scanf("%d", &a[i]);
    }
    scanf("%d", &m);
    int *b = malloc(m*sizeof(int));
    for (int i = 0; i<m; i++){
        scanf("%d", &b[i]);
    }
    int *c = malloc((n+m)*sizeof(int));
    int k =0;
    for (int i = 0; i<n; i++){
        int flag = 0;
        for (int j = 0; j<m; j++){
            if (a[i] == b[j]) {
                flag = 1;
                break;
            }
        }
        if (flag == 0) c[k++] = a[i];
    }
    for (int i = 0; i<m; i++){
        int flag = 0;
        for (int j = 0; j<n; j++){
            if (b[i] == a[j]) {
                flag = 1;
                break;
            }
        }
        if (flag == 0) c[k++] = b[i];                
    }
    for (int i = 0; i<k; i++){
        for (int j = i+1; j<k; j++){
            if (c[i] == c[j]){
                for (int l = j+1; l<k; l++){
                    c[l-1] = c[l];
                }
                k--;
            }
        }
    }
    for (int i = 0; i<k; i++){
        if (i == 0){
            printf("%d", c[i]);
        }
        else printf(" %d", c[i]);
    }
    return 0;
}

统计不同数字字符出现次数

从键盘读入一行字符(约定:字符数≤127字节),统计并显示该行字符中10个数字字符各自出现的次数,没有出现的字符不显示。如果没有数字字符,则输出"None!"。

输入样例

a053 JHSa 5we !=-)35xhyasei..df

 输出样例

0-1
3-2
5-3

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>

int main() {
    int n, m;

    char a[128];
    gets(a);
    int num[10] = {0};
    for (int i = 0; i<strlen(a); i++){
        if (a[i] >= '0' && a[i] <= '9'){
            num[a[i]-'0']++;
        }
    }
    int flag = 0;
    for (int i = 0; i<10; i++){
        if (num[i] != 0){
            printf("%d-%d\n", i, num[i]);
            flag = 1;
        }
    }
    if (!flag){
        printf("None!");
    }
    return 0;
}

 组个最小数

给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。

现给定数字,请编写程序输出能够组成的最小的数。

输入样例:

2 2 0 0 0 3 0 0 1 0

 输出样例:

10015558

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free

int main() {
    int n, m;

    int num[10] = {0};
    for (int i = 0; i<10; i++){
        scanf("%d", &num[i]);
    }
    for (int i = 1; i<10; i++){
        if (num[i] != 0){
            printf("%d", i);
            num[i]--;
            break;
        }
    }
    for (int i = 0; i<10; i++){
        while (num[i]){
            printf("%d", i);
            num[i]--;
        }
    }
    return 0;
}

单词长度

你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it's算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内。

输入样例:

It's great to see you here.

 输出样例:

4 5 2 3 3 4

 AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>

int main() {
    char ch;
    int num = 0, cnt = 0;
    int flag = 0;
    scanf("%c", &ch);
    while (ch != '.'){
        if (ch == ' '){
            if (num != 0){
                if (cnt == 0){
                    printf("%d", num);
                }
                else printf(" %d", num);
                cnt++;
            }
            num = 0;
        }
        else num++;
        scanf("%c", &ch);
    }
    if (num != 0){
        if (cnt == 0){
            printf("%d", num);
        }
        else printf(" %d", num);
    }
    return 0;
}

IP地址转换

一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。

输入样例:

11001100100101000001010101110010

 输出样例:

204.148.21.114

 AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>

int main() {
    char ch;
    for (int i = 0; i<4; i++){
        int s = 0;
        for (int j = 0; j<8; j++){
            scanf("%c", &ch);
            s = s*2+ch-'0';
        }
        printf("%d", s);
        if (i != 3){
            printf(".");
        }
    }
    return 0;
}

找鞍点

一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。

本题要求编写程序,求一个给定的n阶方阵的鞍点。

输入样例1:

4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9

 输出样例1:

2 1

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
struct node{
    int x, y;
};
int max(int a, int b){
    if (a > b){
        return a;
    }
    else return b;
}
int min(int a, int b){
    return (a < b) ? a : b;
}
int main() {
    int n;
    scanf("%d", &n);
    int a[n][n];
    for (int i = 0; i<n; i++){
        for (int j=0; j<n; j++){
            scanf("%d", &a[i][j]);
        }
    }
    int h[n], l[n];
    for (int i = 0; i<n; i++){
        int max_h = 0, min_l = 10000;
        for (int j = 0; j<n; j++){
            max_h = max(max_h, a[i][j]);
            min_l = min(min_l, a[j][i]);
        }
        h[i] = max_h;
        l[i] = min_l;
    }
    struct node *p = (struct node*)malloc((n*n)*sizeof(struct node));
    int cnt = 0;
    for (int i = 0; i<n; i++){
        for (int j = 0; j<n; j++){
            if (a[i][j] == h[i] && a[i][j] == l[j]){
                p[cnt].x = i;
                p[cnt++].y = j;
            }
        }
    }
   if (cnt == 0){
    printf("NONE");
   } 
   else{
        for (int i = 0; i<cnt; i++){
            printf("%d %d\n", p[i].x, p[i].y);
        }
   }
    return 0;
}

通讯录排序

输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。

输入样例:

3
zhang 19850403 13912345678
wang 19821020 +86-0571-88018448
qian 19840619 13609876543

 输出样例:

 wang 19821020 +86-0571-88018448
qian 19840619 13609876543
zhang 19850403 13912345678

 AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
struct student{
    char name[10];
    int birth;
    char phone[17];
}stu[10], stu1;
int main() {
    int n;
    scanf("%d", &n);
    for (int i = 0; i<n; i++){
        scanf("%s %d %s", stu[i].name, &stu[i].birth, stu[i].phone);
    }
    for (int i = 0; i<n-1; i++){
        for (int j = 0; j<n-1-i; j++){
            if (stu[j].birth > stu[j+1].birth){
                stu1 = stu[j];
                stu[j] = stu[j+1];
                stu[j+1] = stu1;
            }
        }
    }
    for (int i = 0; i<n; i++){
        printf("%s %d %s\n", stu[i].name, stu[i].birth, stu[i].phone);
    }
    return 0;
}
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
struct student{
    char name[10];
    int birth;
    char phone[17];
}stu[10], stu1;
int cmp(const void *a, const void *b){
    return (((struct student*)a)->birth - ((struct student*)b)->birth);
}
int main() {
    int n;
    scanf("%d", &n);
    for (int i = 0; i<n; i++){
        scanf("%s %d %s", stu[i].name, &stu[i].birth, stu[i].phone);
    }
    qsort(stu, n, sizeof(struct student), cmp);
    for (int i = 0; i<n; i++){
        printf("%s %d %s\n", stu[i].name, stu[i].birth, stu[i].phone);
    }
    return 0;
}

统计期末成绩

程序设计校选课期末计划安排在第十五周周五下午,有学生反映第十五周周末恰逢端午节假期,已请假提前回家。
经过协商,该课程期末考试共进行两次,分别在第十五周周五下午和第十六周周五下午。
如果学生两次考试都参加,则该课程期末成绩取两次成绩最高分。如果只参加了一次,则该次成绩即为期末考试成绩。
请你帮老师统计下每个学生该门课程的期末成绩。

输入样例:

3
201410300106 wanyun 70 88
201618050322 zhangyu 90 0
201509210118 lixiao 0 0

 输出样例:

201410300106 wanyun 88
201509210118 lixiao 0
201618050322 zhangyu 90

 AC代码:

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

#define MAX_NAME_LENGTH 21
#define MAX_STUDENTS 10

typedef struct {
    char id[16];
    char name[MAX_NAME_LENGTH];
    int score1;
    int score2;
} Student;

int compareStudents(const void *a, const void *b) {
    return strcmp(((Student *)a)->id, ((Student *)b)->id);
}

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

    Student students[MAX_STUDENTS];

    for (int i = 0; i < n; i++) {
        scanf("%s %s %d %d", students[i].id, students[i].name, &students[i].score1, &students[i].score2);
    }

    // 对学生按照学号进行排序
    qsort(students, n, sizeof(Student), compareStudents);

    for (int i = 0; i < n; i++) {
        int finalScore = (students[i].score1 > students[i].score2) ? students[i].score1 : students[i].score2;
        printf("%s %s %d\n", students[i].id, students[i].name, finalScore);
    }

    return 0;
}

qsort 函数

  • qsort 是 C 标准库中的一个函数,用于对数组进行排序。它的原型定义在 <stdlib.h> 头文件中。
  • 函数原型:
    ​​​​​​​void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
  • void *base:    这是指向要排序的数组的起始地址的指针。base 是一个 void* 类型的指针,因此它可以指向任何类型的数组。

  • size_t nmemb:   这是数组中元素的个数。nmemb 是一个 size_t 类型的值,表示数组中要排序的元素数量。

  • size_t size:   这是数组中每个元素的大小(以字节为单位)。size 是一个 size_t 类型的值,表示数组中每个元素占用的内存大小。

  • int (*compar)(const void *, const void *):    这是一个指向比较函数的指针。比较函数用于确定数组中两个元素的顺序。compar 函数接收两个 const void* 类型的指针,分别指向要比较的两个元素。

compareStudents 参数

  • compareStudents 是一个函数指针,指向一个比较函数。
  • 比较函数的原型:int compareStudents(const void *a, const void *b);
#include <stdio.h>
#include <string.h>

#define MAX_NAME_LENGTH 21
#define MAX_STUDENTS 10

typedef struct {
    char id[16];
    char name[MAX_NAME_LENGTH];
    int s1;
    int s2;
} Student;
int main() {
    int n;
    scanf("%d", &n);

    Student stu[MAX_STUDENTS], stu1;

    for (int i = 0; i < n; i++) {
        scanf("%s %s %d %d", stu[i].id, stu[i].name, &stu[i].s1, &stu[i].s2);
    }
    for (int i = 0; i<n-1; i++){
        for (int j = 0; j<n-i-1; j++){
            if (strcmp(stu[j].id, stu[j+1].id) > 0){
                stu1 = stu[j];
                stu[j] = stu[j+1];
                stu[j+1] = stu1;
            }
        }
    }
    for (int i = 0; i < n; i++) {
        int finalScore = (stu[i].s1 > stu[i].s2) ? stu[i].s1 : stu[i].s2;
        printf("%s %s %d\n", stu[i].id, stu[i].name, finalScore);
    }
    return 0;
}

选民投票

编程统计候选人的得票数。有若干位候选人(n<=10),候选人姓名从键盘输入(候选人姓名不区分大小写,姓名最长为9个字节),若干位选民,选民每次输入一个得票的候选人的名字(姓名最长为9个字节),若选民输错候选人姓名,则按废票处理。程序自动统计各候选人的得票结果,并按照得票数由高到低的顺序排序。最后输出各选票人得票结果和废票信息。

输入样例1:

3
zhang
li
wang
9
Wang
Zhang
zhuang
LI
Liao
ZHANG
WANG
Wang
wang

 输出样例1:

wang:4
zhang:2
li:1

invalid vote:
zhuang
Liao

 输入样例2:

2
liu
yang
5
Liu
liu
YANG
yang
Liu

 输出样例2:

liu:3
yang:2

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
struct candidate{
    char name[20];
    int sum;
};
int cmp(const void *a, const void *b){
    return (((struct candidate*)b)->sum) - (((struct candidate *)a)->sum);
}
int main() {
    int n;
    scanf("%d", &n);
    struct candidate s[n];
    for (int i = 0; i<n; i++){
        s[i].sum = 0;
    }  
    for (int i = 0; i<n; i++){
        scanf("%s", s[i].name);
    }
    int m, invalid_num = 0;;
    scanf("%d", &m);
    char invalid[86][10];
    for (int i = 0; i<m; i++){
        char name[20];
        int cnt = 0;
        scanf("%s", name);
        for (int j = 0; j<n; j++){
            int flag = 0;
            for (int k = 0; name[k]!= '\0'; k++){
                if (name[k]!= s[j].name[k] && name[k] != s[j].name[k]+32 && name[k]!= s[j].name[k]-32){
                    flag=1;
                    cnt++;
                    break;
                }
            }
            if (flag == 0){
                s[j].sum++;
                break;
            }
        }
        if (cnt == n){
            strcpy(invalid[invalid_num++], name);
        }
    }
    qsort(s, n, sizeof(struct candidate), cmp);
    for (int i = 0; i<n; i++){
        printf("%s:%d\n", s[i].name, s[i].sum);
    }
    if (invalid_num){
        printf("\ninvalid vote:\n");
        for (int i = 0; i<invalid_num; i++){
            printf("%s\n", invalid[i]);
        }
    }
    return 0;
}

歌唱比赛计分

设有10名歌手(编号为1-10)参加歌咏比赛,另有6名评委打分,每位歌手的得分从键盘输入,计算出每位歌手的最终得分(扣除一个最高分和一个最低分后的平均分),最后按最终得分由高到低的顺序输出每位歌手的编号及最终得分。

输入样例:

1 4 7 3 6 3
8 7 8 5 9 8
7 5 6 8 5 4
7 6 7 5 6 5
3 5 6 7 5 5
7 7 7 8 9 6
7 7 6 7 6 8
9 4 3 7 3 6
4 8 6 7 5 8
8 7 8 8 9 8

 输出样例:

No.10: 8.00
No.2 : 7.75
No.6 : 7.25
No.7 : 6.75
No.9 : 6.50
No.4 : 6.00
No.3 : 5.75
No.5 : 5.25
No.8 : 5.00
No.1 : 4.00

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
struct singer{
    int id;
    float s;
};
int max(int a, int b){
    return a > b?a : b;
}
int min(int a, int b){
    return a < b?a : b;
}
int main() {
    struct singer si[10], s1;
    for (int i = 0; i<10; i++){
        int l=0, r=10;
        float su = 0;
        for (int j = 1; j<=6; j++){
            int x;
            scanf("%d", &x);
            su += x;
            l = max(l, x);
            r = min(r, x);
        }
        su -= (l+r);
        si[i].id = i+1;
        si[i].s = su/4;
    }
    for (int i = 0; i<9; i++){
        for (int j = 0; j<10-1-i; j++){
            if (si[j].s < si[j+1].s){
                s1 = si[j];
                si[j] = si[j+1];
                si[j+1] = s1;
            }
        }
    }
    for (int i = 0; i<10; i++){
        printf("No.%-2d: %.2f\n", si[i].id, si[i].s);
    }
    return 0;
}

判断两个字符串是否为变位词

如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词。比如,”heart”与”earth”互为变位 词,”Mary”与”arMy”也互为变位词。

输入样例1:

Mary
arMy

 输出样例1

yes

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
void pai(char *s){
    char ch;
    for (int i = 0; i<strlen(s)-1; i++){
        for (int j = 0; j<strlen(s)-1-i; j++){
            if (s[j] > s[j+1]){
                ch = s[j];
                s[j] = s[j+1];
                s[j+1] = ch;
            }
        }
    }
}
int main() {
    char s1[100], s2[100];
    gets(s1);
    gets(s2);
    pai(s1);
    pai(s2);
    if (strcmp(s1, s2) == 0){
        printf("yes\n");
    }
    else printf("no\n");
    return 0;
}

求矩阵的局部极大值

给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。

 输入样例1:

4 5
1 1 1 1 1
1 3 9 3 1
1 5 3 5 1
1 1 1 1 1

 输出样例1:

9 2 3
5 3 2
5 3 4

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
struct node{
    int val, x, y;
};
int main() {
    int n, m;
    scanf("%d %d", &m, &n);
    int dx[4] = {0, 1, 0, -1};
    int dy[4] = {1, 0, -1, 0};
    struct node submax[500];
    int a[m][n];
    for (int i = 0; i<m;i++){
        for (int j = 0; j<n; j++){
            scanf("%d", &a[i][j]);
        }
    }
    int cnt = 0;
    for (int i = 1; i<m-1; i++){
        for (int j = 1; j<n-1; j++){
            int flag = 0;
            for (int k = 0; k<4; k++){
                if (a[i][j] <= a[i+dx[k]][j+dy[k]]){
                    flag = 1;
                    break;
                }
            }
            if (!flag) {
                submax[cnt].val = a[i][j];
                submax[cnt].x= i+1;
                submax[cnt++].y=j+1;
            }
        }
    }
    if (!cnt){
        printf("None %d %d\n", m, n);
    }
    else {
        for (int i=0; i<cnt; i++){
            printf("%d %d %d\n", submax[i].val, submax[i].x, submax[i].y);
        }
    }
    return 0;
}

最长最短单词

输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。

试输出第1个最长的单词和第1个最短单词。

输入样例:

I am studying Programming language C in Peking University

 输出样例:

Programming
I

 

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>

int main() {
    char str[220][101], chstr[101];
    gets(chstr);
    int len = strlen(chstr);
    int str_num = 0, num = 0;
    for (int i = 0; i<len; i++){
        if (chstr[i] == ' ' || chstr[i] == ','){
            if (num > 0) str_num++;
            num = 0;
        }
        else {
            str[str_num][num++] = chstr[i];
        }
    }
    char max_str[101];
    strcpy(max_str, str[0]);
    char min_str[101];
    strcpy(min_str, str[0]);
    int max_num = strlen(max_str);
    int min_num = strlen(min_str);
    for (int i = 0; i<str_num; i++){
        if (strlen(str[i]) > max_num){
            max_num = strlen(str[i]);
            strcpy(max_str, str[i]);
        }
        if (strlen(str[i]) < min_num){
            min_num = strlen(str[i]);
            strcpy(min_str, str[i]);
        }
    }
    puts(max_str);
    puts(min_str);
    return 0;
}

 sdut-array2-5 打印“杨辉三角“ 品中国数学史 增民族自豪感(2)

输入样例:

5

 输出样例:

        1   
      1   1   
    1   2   1   
  1   3   3   1   
1   4   6   4   1   

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>

int main() {
    int n;
    scanf("%d", &n);
    int a[n][n];
    for (int i = 0; i<n; i++){
        for (int j = 0; j<=i; j++){
            if (i == j || j==0) a[i][j] = 1;
            else a[i][j] = a[i-1][j-1]+a[i-1][j];
        }
    }
    for (int i=0; i<n; i++){
        for (int j = 0; j<n-1-i; j++){
            printf("  ");
        }
        for (int j = 0; j<=i; j++){
            printf("%-4d", a[i][j]);
            if (j == i) printf("\n");
        }
    }
    return 0;
}

1000以内所有各位数字之和为n的正整数

输出1000以内所有各位数字之和为n的正整数,例如:如果输入的n是6,那么,105的各位数字之和1+0+5=6, 123的各位数字之和1+2+3=6,两者都满足要求。每行输出6列,每个整数占8位宽度右对齐。

输入样例:

6

 输出样例:

       6      15      24      33      42      51
      60     105     114     123     132     141
     150     204     213     222     231     240
     303     312     321     330     402     411
     420     501     510     600

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>

int main() {
    int n;
    scanf("%d", &n);
    int ans = 0;
    for (int i = 1; i<=1000; i++){
        int cnt = 0;
        int num = i;
        while (num){
            cnt += num%10;
            num/=10;
        }
        if (cnt == n){
            ans++;
            printf("%8d", i);
            if (ans % 6 == 0) printf("\n");
        }
    }
    // printf("\n");
    return 0;
}

统计素数并求和

输入样例:

10 31

 输出样例:

7 143

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
// 欧拉筛
int main() {
    int m, n;
    scanf("%d %d", &m, &n);
    bool is[505];
    int pre[505], num=0;
    int ans_1 = 0, ans_2=0;
    for (int i = 2; i<=n; i++){
        if (!is[i]) {
            pre[num++]=i;
            if (i>=m && i<=n){
                ans_1++;
                ans_2+=i;
            }
        }
        for (int j = 0; j<num; j++){
            if (i*pre[j] > n) break;
            is[i*pre[j]] = true;
            if (i % pre[j] == 0) break;
        }
    }
    printf("%d %d\n", ans_1, ans_2);
    return 0;
}

求一定范围内的所有完数

一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如:6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程找出任意两正整数m和n之间的所有完数。

输入样例:

3 30

 输出样例:

6 its factors are 1,2,3
28 its factors are 1,2,4,7,14

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
// 欧拉筛
int main() {
    int m, n;
    scanf("%d %d", &m, &n);
    int sum, flag = 0;

    for (int i = m; i<=n; i++){
        sum = 0;
        for (int j = 1; j<i; j++){
            if (i%j == 0) sum += j;
        }
        if (sum == i){
            flag = 1;
            printf("%d its factors are 1",i);
            for (int j = 2; j<i; j++){
                if (i % j == 0){
                    printf(",%d", j);
                }
            }
            printf("\n");
        }
    }
    if (flag == 0){
        printf("Not Found!");
    }
    return 0;
}

最大公约数和最小公倍数

本题要求两个给定正整数的最大公约数和最小公倍数。

输入样例:

511 292

 输出样例:

73 2044

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
int gcd(int a, int b){
    return b == 0?a:gcd(b, a%b);
}
int main() {
    int n,m;
    scanf("%d%d",&n,&m);
    printf("%d %d\n", gcd(n, m), n*m/gcd(n,m));
    return 0;
}

求整数序列中出现次数最多的数

本题要求统计一个整型序列中出现次数最多的整数及其出现次数。

输入样例:

10 3 2 -1 5 3 4 3 0 3 2

 输出样例:

3 4

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>

int main() {
    int n;
    scanf("%d", &n);
    int a[n];
    for (int i = 0; i<n; i++){
        scanf("%d", &a[i]);
    }
    int max_num = a[0], max = 1;
    for (int i = 1; i<n; i++){
        int cnt = 1;
        for (int j = 0; j<i; j++){
            if (a[i] == a[j]){
                cnt++;
            }
        }
        if (cnt > max){
            max = cnt;
            max_num = a[i];
        }
    }
    printf("%d %d\n", max_num, max);
    return 0;
}

 求一批整数中出现最多的个位数字

给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。

输入样例:

3
1234 2345 3456

 输出样例:

3: 3 4

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
int max(int a, int b){
    return a > b? a : b;
}
int main() {
    int n;
    scanf("%d", &n);
    int num[10]={0};
    int max_num = 0;
    for (int i = 0; i<n; i++){
        int x;
        scanf("%d", &x);
        while (x){
            num[x%10]++;
            max_num = max(max_num, num[x%10]);
            x/=10;
        }
    }
    printf("%d:", max_num);
    for (int i = 0; i<10; i++){
        if (num[i] == max_num){
            printf(" %d", i);
        }
    }
    return 0;
}

简单选择排序显示第K趟

将N个整数按从小到大排序的选择排序法是这样工作的:选择所有数中最大(小)的,与最后一个(第一个)交换。通过一遍扫描,则最后一个元素必定是最大的元素(或第一个元素必定是最小的元素)。然后用同样的方法余下的N−1个元素进行第二遍扫描。依此类推,最后只需处理两个元素,即完成对N个数的排序。
本题要求对任意给定的K(<N)按找大的原则,输出扫描完第K遍后的中间结果数列。

输入样例:

6 2
2 3 5 1 6 4

 输出样例:

2 3 4 1 5 6

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
int main() {
    int n, k;
    scanf("%d %d", &n, &k);
    int a[n];
    for (int i=0; i<n; i++){
        scanf("%d", &a[i]);
    }
    for (int i = 0; i<k; i++){
        int max = a[0], pos = 0;
        for (int j = 1; j<n-i; j++){
            if (a[j] > max){
                max = a[j];
                pos = j;
            }
        }
        int temp = a[pos];
        a[pos] = a[n-1-i];
        a[n-1-i] = temp; 
    }
    for (int i = 0; i<n; i++){
        if (i == 0) printf("%d", a[i]);
        else printf(" %d", a[i]);
    }
    return 0;
}

统计字符

本题目要求从键盘读入一串字符,以回车结束。分别统计其中的英文字母、数字、空格和其他字符的数量。

输入样例:

w1e2r3t AGH4--#  23  %%**
 

 输出样例:

字母:7,数字:6,空格:5,其他:7

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
int main() {
    char str[128];
    gets(str);
    int letter = 0, num = 0, space = 0, other = 0;
    for (int i = 0; i<strlen(str); i++){
        if ((str[i]>='a' && str[i] <='z') || (str[i]>='A' && str[i]<='Z')){
            letter++;
        }
        else if (str[i] >= '0' && str[i] <= '9'){
            num++;
        }
        else if (str[i] == ' ') space++;
        else other++;
    }
    printf("字母:%d,数字:%d,空格:%d,其他:%d\n", letter, num, space, other);
    return 0;
}

统计大写辅音字母

英文辅音字母是除AEIOU以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。

输入样例:

HELLO World!

 输出样例:

4

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
int main() {
    char str[128];
    gets(str);
    char p[5] = {'A', 'E', 'I', 'O', 'U'};
    int num = 0;
    for (int i = 0; i<strlen(str); i++){
        int cnt = 0;
        for (int j = 0; j<5; j++){
            if (str[i] != p[j]) cnt++;
        }
        if (cnt == 5 && str[i]>='A' && str[i]<='Z') num++;
    }
    printf("%d\n", num);
    return 0;
}

字符串解压

输入压缩后的字符串,输出压缩前的字符串。

压缩的方法是把连续的相同字母压缩为"长度+字母"的形式,在本题中,单个的字母不需要压缩

输入样例:

12ab10c2ax

 输出样例:

aaaaaaaaaaaabccccccccccaax

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
int main() {
    char  str[128];
    gets(str);
    for (int i = 0; i<strlen(str); i++){
        int sum = 0;
        while (str[i]>='0' && str[i]<='9'){
            sum = sum*10+str[i++]-'0';
        }
        for (int j = 0; j<sum; j++){
            putchar(str[i]);
        }
        if (sum == 0){
            putchar(str[i]);
        }
    }
    return 0;
}

 判断上三角矩阵

上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。

本题要求编写程序,判断一个给定的方阵是否上三角矩阵。

输入样例:

3
3
1 2 3
0 4 5
0 0 6
2
1 0
-8 2
3
1 2 3
1 4 5
0 -1 6

 

 输出样例:

YES
NO
NO

 

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
void solve(){
    int n;
    scanf("%d", &n);
    int x, flag = 0;
    for (int i = 0; i<n; i++){
        for (int j = 0; j<n; j++){
            scanf("%d", &x);
            if (i>j && x!=0) flag = 1;
        }
    }
    if (flag){
        printf("NO\n");
    }
    else{
        printf("YES\n");
    }
}
int main() {
    int t;
    scanf("%d", &t);
    for (int i = 0; i<t; i++) solve();
    return 0;
}

 字符串排序

本题要求编写程序,读入5个字符串,按由小到大的顺序输出。

输入样例:

red yellow blue black white

 输出样例:

After sorted:
black
blue
red
white
yellow

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>

int main() {
    char str[5][85];
    for (int i = 0; i<5; i++){
        scanf("%s", str[i]);
    }
    for (int i = 0; i<4; i++){
        for (int j = 0; j<4-i; j++){
            if (strcmp(str[j], str[j+1]) > 0){
                char temp[85];
                strcpy(temp, str[j]);
                strcpy(str[j], str[j+1]);
                strcpy(str[j+1], temp);
            }
        }
    }
    printf("After sorted:\n");
    for (int i= 0; i<5; i++){
        printf("%s\n", str[i]);
    }
}

学生信息的那些操作:(5)添加记录

有一学生成绩表,包括学号、姓名、3门课程成绩。已知该成绩表按学号升序排序。请编程实现,添加一个新的学生信息,且使成绩表仍按学号有序;若待添加的学号与已有学号重复,则输出错误信息,拒绝添加。

输入样例:

3
202016040201 Zhangling 78 95 55
202016040202 Wangli 87 99 88
202016040204 Fangfang 68 76 75
202016040203 Lilei 68 79 82

 输出样例:

202016040201 Zhangling 78 95 55
202016040202 Wangli 87 99 88
202016040203 Lilei 68 79 82
202016040204 Fangfang 68 76 75

 AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
typedef struct{
    char id[13], name[21];
    int s1, s2, s3;
}stu;
int main() {
    int n;
    scanf("%d", &n);
    stu s[n+1], ss;
    for (int i = 0; i<n; i++){
        scanf("%s %s %d %d %d", s[i].id, s[i].name, &s[i].s1, &s[i].s2, &s[i].s3);
    }
    scanf("%s %s %d %d %d", s[n].id, s[n].name, &s[n].s1, &s[n].s2, &s[n].s3);
    int flag = 0;
    for (int i = 0; i<n; i++){
        if (strcmp(s[i].id, s[n].id) == 0){
            flag = 1;
            break;
        }
    }
    if (flag){
        printf("error!\n");
    }
    else{
        for (int i = 0; i<n; i++){
            for (int j = 0; j<n-i; j++){
                if (strcmp(s[j].id, s[j+1].id) > 0){
                    ss = s[j];
                    s[j] = s[j+1];
                    s[j+1] = ss;
                }
            }
        }
        for (int i = 0; i<=n; i++){
            printf("%s %s %d %d %d\n", s[i].id, s[i].name, s[i].s1, s[i].s2, s[i].s3);
        }
    }
}
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
typedef struct{
    char id[13], name[21];
    int s1, s2, s3;
}stu;
int cmp(const void *a, const void *b){
    return strcmp(((stu*)a)->id, ((stu*)b)->id);
}
int main() {
    int n;
    scanf("%d", &n);
    stu s[n+1];
    for (int i = 0; i<n; i++){
        scanf("%s %s %d %d %d", s[i].id, s[i].name, &s[i].s1, &s[i].s2, &s[i].s3);
    }
    scanf("%s %s %d %d %d", s[n].id, s[n].name, &s[n].s1, &s[n].s2, &s[n].s3);
    int flag = 0;
    for (int i = 0; i<n; i++){
        if (strcmp(s[i].id, s[n].id) == 0){
            flag = 1;
            break;
        }
    }
    if (flag){
        printf("error!\n");
    }
    else{
        qsort(s, n+1, sizeof(stu), cmp);
        for (int i = 0; i<=n; i++){
            printf("%s %s %d %d %d\n", s[i].id, s[i].name, s[i].s1, s[i].s2, s[i].s3);
        }
    }
}

学生信息的那些操作:(6) 删除记录

有一学生成绩表,包括学号、姓名、3门课程成绩。请实现如下删除功能:输入一个学生的学号,删除该学生的所有信息。

 输入样例:

3
202016040201 Zhangling 78 95 55
202016040202 Wangli 87 99 88
202016040203 Fangfang 68 76 75
202016040201

 输出样例:

202016040202 Wangli 87 99 88
202016040203 Fangfang 68 76 75

AC代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>  // 用于 malloc 和 free
#include <string.h>
typedef struct{
    char id[13], name[21];
    int s1, s2, s3;
}stu;
int main() {
    int n;
    scanf("%d", &n);
    stu s[n+1], ss;
    for (int i = 0; i<n; i++){
        scanf("%s %s %d %d %d", s[i].id, s[i].name, &s[i].s1, &s[i].s2, &s[i].s3);
    }
    scanf("%s %s %d %d %d", ss.id, ss.name, &ss.s1, &ss.s2, &ss.s3);
    int flag = 0;
    for (int i = 0; i<n; i++){
        if (strcmp(s[i].id, ss.id) == 0){
            flag = i;
            break;
        }
    }
    if (flag){
        printf("error!\n");
    }
    else{
        for (int i = flag+1; i<n; i++){
            s[i-1] = s[i];
        }
        for (int i = 0; i<n-1; i++){
            printf("%s %s %d %d %d\n", s[i].id, s[i].name, s[i].s1, s[i].s2, s[i].s3);
        }
    }
}

求一组数的平均值并按降序排序

调用Input函数从键盘读入不超过10个学生的成绩,成绩低于0分或者超过100分重新读入,读满10个或者遇到9999结束;调用Average函数求一组数的平均值;调用Sort函数将这组数按照降序排序。

裁判测试程序样例:

#include <stdio.h>
#define N 10
void Input(float *pa,int *n);
float Average(float *pa, int n);
void Sort(float *pa,int n);

int main()
{
    float a[N],ave;
    float *p = a;
    int n;
    Input(p, &n);
    ave = Average(p, n);
    Sort(p,n);
    printf("average = %.2f\n",ave);
    for(p = a;p<a+n;p++)
        printf("%-7.1f",*p);
    return 0;
}

/* 请在这里填写答案 */

输入样例1:

59.5 88.5 77 40 95 65 9999

 输出样例1:

average = 70.83
95.0   88.5   77.0   65.0   59.5   40.0   

AC代码:

void Input(float *pa,int *n){
    int num=0;
    float x;
    scanf("%f", &x);
    while (num < 10 && x != 9999){
        if (x < 0 || x > 100){
            scanf("%f", &x);
            continue;
        }
        else {
            pa[num++] = x;
        }
        scanf("%f", &x);
    }
    *n = num;
}
float Average(float *pa, int n){
    float sum = 0;
    for (int i = 0; i<n; i++){
        sum += pa[i];
    }
    return sum/n;
}
void Sort(float *pa,int n){
    for (int i = 0; i<n-1; i++){
        for (int j = 0; j<n-1-i; j++){
            if (pa[j] < pa[j+1]){
                float temp = pa[j];
                pa[j] = pa[j+1];
                pa[j+1] = temp;
            }
        }
    }
}

过滤字符串只保留串中的数字字符

函数的功能是:输入一个字符串,过滤此串,统计串中包含的数字字符个数,逆序输出串中的数字字符。

输入样例:

hjds34jj,&67

 输出样例:

There are 4 digits in the string,they are 3467
The  number of inversions is 7643

裁判测试程序样例:


#include <stdio.h>

int Count_Digit ( char *ptr,int *num );

int main()
{
    char str[80];
    int cnt,num;
    gets(str);
    cnt=Count_Digit(str,&num);
    printf("There are %d digits in the string,they are %s\n",cnt,str);
    printf("The  number of inversions is %d\n",num);
    return 0;
 }

/* 请在这里填写答案 */

AC代码:

int Count_Digit ( char *ptr,int *num ){
    char *s;
    int count = 0, sum = 0;
    s = ptr;
    while (*ptr!='\0'){
        if (*ptr >= '0' && *ptr <= '9'){
            s[count++] = *ptr;
        }
        ptr++;
    }
    s[count] = '\0';
    for (int i = count-1; i>=0; i--){
        sum = sum*10+s[i]-'0';
    }
    *num = sum;
    ptr = s;
    return count;
}

电码加密

为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。要求编写并调用函数encrypt (),按要求修改字符串内容。变换规则如下:小写字母z变换成为a,其他字母变换成为该字母ASCII码顺序后一位的字母,比如o变换成为p。

输入样例:

adfz

 输出样例:

bega

 裁判测试程序样例:


#include <stdio.h>
# include <string.h>
# define MAXLINE 80
void encrypt ( char *s);
int main (void)
{
   char line [MAXLINE];
    
   gets(line);
   encrypt (line);
   printf ("%s\n", line);
     return 0;
}


/* 请在这里填写答案 */

AC代码:

void encrypt ( char *s){
    for (;*s!='\0'; s++){
        if (*s == 'z'){
            *s = 'a';
        }
        else *s = *s+1;
    }
}

从键盘读入一串字符后去除首尾字符后的字符串按降序排序

请编写函数Sort函数,将字符串中除首、尾字符外的其余字符按降序排列。

输入样例:

CEAedca

 输出样例:

CedcEAa

 裁判测试程序样例:


#include <stdio.h>
void Sort(char *p);

int main(void)
{
    char str[21] ;
 
    gets(str);
    Sort(str);
    puts(str); 

    return 0;
} 

/* 请在这里填写答案 */

AC代码:

void Sort(char *p){
    int len = strlen(p);
    for (int i = 1; i < len - 2; i++) {
        for (int j = 1; j < len - 2 - (i - 1); j++) {
            if (p[j] < p[j + 1]) {
                char temp = p[j];
                p[j] = p[j + 1];
                p[j + 1] = temp;
            }
        }
    }
}

每个单词的首字母改为大写

本题要求实现一个函数,将p所指字符串中每个单词的首字母字母改成大写,大写字母及非字母不变化。(这里的“单词”是指由一个或者多个空格隔开的字符串)。

输入样例:

There are 45 students in my class.

 输出样例:

After changing:   There Are 45 Students In My Class.

 裁判测试程序样例:

#include <stdio.h>
void Conv( char *p );
int main()
{
        char str[64];  
        
        gets(str);
        Conv(str);
        printf("After changing:   %s", str);
        return 0;
}


/* 请在这里填写答案 */

AC代码:

void Conv( char *p ){
    int num=0;
    while (*p!='\0'){
        if (*p == ' '){
            num = 0;
        }
        else{
            if (num == 0){
                if (*p>='a' && *p<='z') *p = *p-32;
            }
            num++;
        }
        p++;
    }
}

按要求移动字符

函数Move_str的功能是:在字符串str中找到ASCII码值最大的字符,将该字符放到首位,其余字符顺序后移。

输入样例:

ABCDeFGe

 输出样例:

The string after moving:eeABCDFG

 裁判测试程序样例:

#include<stdio.h>
void Move_str ( char *p);
int main()
{
    char str[80];
    gets(str);
    Move_str(str);
    printf("The string after moving:");
    puts(str);
    return 0;
  }


/* 请在这里填写答案 */

AC代码:

void Move_str ( char *p){
    char t=p[0];
    int pos = 0;
    int len = strlen(p);
    for (int i = 0; p[i]!='\0'; i++){
        if (p[i] > t) {
            t = p[i];
            pos = i;
        }
    }
    for (int i = pos; i>0; i--){
        p[i] = p[i-1];
    }
    p[0] = t;
    for (int i = 1; i<len; i++){
        if (p[i] == t){
            for (int j=i-1; j>=0; j--){
                p[j+1] = p[j];
            }
            p[0] = t;
        }
    }
}

查找二维数组中的最大值及其行列下标

程序实现查找二维数组的最大值以及行、列下标,请根据函数 FindMaxbyCol()的声明和调用完成函数的定义。

输入样例:

3 4
3 5 -1 4
7 -32 0 9
-102 45 78 4

 输出样例:

78 2 2

 裁判测试程序样例:

#include <stdio.h>
int  FindMaxbyCol(int *q,int row,int col,int *maxRow,int *maxCcol);
int main(void)
{
    int m,n;
    scanf("%d%d",&m,&n);
    int a[m][n];
    int max,maxr,maxc;
    int i,j;
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
            scanf("%d",&a[i][j]);   
    }
     max=FindMaxbyCol(a[0],m,n,&maxr,&maxc);
    printf("%d %d %d\n",max,maxr,maxc);
    return 0;
}

/* 请在这里填写答案 */

AC代码:

int FindMaxbyCol(int *q, int row, int col, int *maxRow, int *maxCcol) {
    int i, j, max = q[0]; // 初始化最大值为第一个元素
    *maxRow = 0;
    *maxCcol = 0;
    for (i = 0; i < row; i++) {
        for (j = 0; j < col; j++) {
            if (q[i * col + j] > max) { // 计算二维数组中元素的一维索引
                max = q[i * col + j];
                *maxRow = i;
                *maxCcol = j;
            }
        }
    }
    return max;
}

在C语言中,指针是一个非常强大且灵活的工具,可以用来处理各种数据结构。在pta唱歌比赛中,我们可以使用指针来动态分配内存、管理数组和传递参数等。以下是一个简单的示例,展示了如何使用指针来处理评委的打分数据。 ```c #include <stdio.h> #include <stdlib.h> // 函数声明 void inputScores(float *scores, int numJudges); float calculateAverage(float *scores, int numJudges); void printScores(float *scores, int numJudges); int main() { int numJudges; printf("请输入评委人数: "); scanf("%d", &numJudges); // 动态分配内存 float *scores = (float *)malloc(numJudges * sizeof(float)); if (scores == NULL) { printf("内存分配失败\n"); return 1; } // 输入打分 inputScores(scores, numJudges); // 计算平均分 float average = calculateAverage(scores, numJudges); // 打印评分和平均分 printScores(scores, numJudges); printf("平均分: %.2f\n", average); // 释放内存 free(scores); return 0; } // 输入打分 void inputScores(float *scores, int numJudges) { for (int i = 0; i < numJudges; i++) { printf("请输入第%d位评委的评分: ", i + 1); scanf("%f", &scores[i]); } } // 计算平均分 float calculateAverage(float *scores, int numJudges) { float sum = 0; for (int i = 0; i < numJudges; i++) { sum += scores[i]; } return sum / numJudges; } // 打印打分 void printScores(float *scores, int numJudges) { printf("评委打分: "); for (int i = 0; i < numJudges; i++) { printf("%.2f ", scores[i]); } printf("\n"); } ``` 在这个示例中,我们使用了指针来动态分配内存、输入评委打分、计算平均分和打印打分。指针的使用使得程序更加灵活和高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wirepuller_king

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值