C语言每日一练——day_12(最后一天)

引言

针对初学者,每日练习几个题,快速上手C语言。第十二天。(最后一天,完结散花啦)

采用在线OJ的形式

什么是在线OJ?

在线判题系统(英语:Online Judge,缩写OJ)是一种在编程竞赛中用来测试参赛程序的在线系统,也可以用于平时的练习。

详细内容可以看一下这篇博客:关于C/C++语言的初学者在哪刷题,怎么刷题-CSDN博客https://blog.csdn.net/2401_88433210/article/details/146056171?spm=1011.2415.3001.10575&sharefrom=mp_manage_link

1.小乐乐查找数字

点进去直接做题: 小乐乐查找数字_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/4c49a3a1559141f7a080a48c98cca4cb?tpId=107&&tqId=33411&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

cpp 复制代码
#include <stdio.h>
int main() {
    int arr[101] = {0};
    int n = 0;
    scanf("%d", &n);
    int i = 0;
    for (i = 0; i < n; i++) {
        int m = 0;
        scanf("%d", &m);
        arr[m]++;
    }

int x = 0;
scanf("%d", &x);
printf("%d", arr[x]);
return 0;
}

解析:因为n最大是100,所以可以用数组下标对应的位置来代表对应的值,

当有这个值的时候,对应的位置上加1即可

最后输出x位置对应的值,就是x值出现的次数。

2.KiKi学程序设计基础

点进去直接做题: KiKi学程序设计基础_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/07e75d2b212b4a11b1525863ca3af02c?tpId=107&&tqId=33412&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

cpp 复制代码
#include <stdio.h>
int main() {
//难点:要让转义字符不是转义字符
    printf("printf(\"Hello world!\\n\");\n");
    printf("cout << \"Hello world!\" << endl;");
    return 0;
}

解析:\n是换行符,\ \n第一个\把\n转义了,所以就可以正常输出\n了。

**3.**KiKi求质数个数

点进去直接做题: KiKi求质数个数_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/d3a404ee0f8d41f98bf4707035d91086?tpId=107&&tqId=33416&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

cpp 复制代码
#include <stdio.h>
int is_prime(int n) {
    int i = 0;
    for (i = 2; i < n; i++) {
        if (n % i == 0)
            return 0;
    }
    return 1;
}
int main() {
    int count = 0;
    int i = 0;
    for (i = 100; i <= 999; i++) {
//判断i是否为质数
        if (is_prime(i)) {
            count++;
        }
    }
    printf("%d\n", count);
    return 0;
}

解析:前面几天做过,自己看代码就行。

**4.**KiKi去重整数并排序

点进去直接做题: KiKi去重整数并排序_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/f59b914172b94c69a2b29ad0a1d9b1a7?tpId=107&&tqId=33417&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

cpp 复制代码
//方法1
#include <stdio.h>
int main() {
    int n = 0;
    int arr[100];
    scanf("%d", &n);
    int i = 0;
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
//排序
    for (i = 0; i < n - 1; i++) {
        int j = 0;
        for (j = 0; j < n - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                int tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
            }
        }
    }
//去重-比较n-1对
    int j = 0;
    for (i = 0; i < n - 1; i++) {
//把i+1后边的元素往前移动
        if (arr[i] == arr[i + 1]) {
            int k = 0;
            for (k = i; k < n - 1; k++) {
                arr[k] = arr[k + 1];
            }
            n--;
            i--;
        }
    }
//打印
    for (i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    return 0;
}

//方法2:
int main() {
    int n = 0;
    int arr[1001] = {0};
    scanf("%d", &n);
    int i = 0 ;
    int m = 0;
    for (i = 0; i < n; i++) {
        scanf("%d", &m);
        arr[m] = m;
    }
    for (i = 0; i < 1001; i++) {
        if (arr[i] != 0)
            printf("%d ", arr[i]);
    }
    return 0;
}

解析:昨天做过,昨天用的是方法二,这里给出一个方法一。

附加:5.KiKi学结构体和指针 (看不懂没关系,这是数据结构部分的内容)

点进去直接做题: KiKi学结构体和指针_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/0ab593ca56b1476eb05b1ff848fd7fcc?tpId=107&&tqId=33419&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

cpp 复制代码
#include <stdio.h>
#include <stdlib.h>
struct Node {
    int data;
    struct Node* next;
};
int main() {
    int n = 0;
    struct Node* list = NULL;
    struct Node* tail = NULL;
    //输入结点
    int i = 0;
    scanf("%d", &n);
    for (i = 0; i < n; i++) {
        int data = 0;
        scanf("%d", &data);
        struct Node* n = (struct Node*)malloc(sizeof(struct Node)); //开辟空间
        n->data = data;
        n->next = NULL;
        if (list == NULL) {
            list = n;
            tail = list;
        } else {
            tail->next = n;
            tail = tail->next;
        }
    }
    //删除结点
    int del = 0;
    scanf("%d", &del);
    struct Node* cur = list;
    struct Node* prev = NULL;
    while (cur) {
    //找到了
        if (cur->data == del) {
            struct Node* pd = cur;
    //如果删除的是第一个结点
            if (cur == list) {
                list = list->next;
                cur = list;
            } else {
        //删除的不是第一个结点
                prev->next = cur->next;
                cur = prev->next;
            }
            n--;
            free(pd);
        } else { //找不到
            prev = cur;
            cur = cur->next;
        }
    }
    cur = list;
    printf("%d\n", n);
    while (cur) {
        printf("%d ", cur->data);
        cur = cur->next;
    }
    //释放空间
    cur = list;
    while (cur) {
        del = cur;
        cur = cur->next;
        free(del);
    }
    return 0;
}

解析:看不懂没关系,当你学到数据结构单链表的时候,可以回过头来看这道题,就非常简单了。

感受:

从第一天到现在已经做了120道左右的题了,相信你的写代码能力一定有了极大的提升,一起加油吧!

若您是直接看到这篇博文,可以订阅一下这个专辑,每日一练,快速提升

相关推荐
半亩码田几秒前
C#转Python第5.1篇:异步编程:asyncio vs async/await,语法相似但机制不同
开发语言·python·c#
m0_5474866623 分钟前
《数据结构:基于C语言的描述》全套PPT课件2026
c语言·数据结构
LMT_Lanmantech25 分钟前
MATLAB合规管理:如何避免侵权赔偿和审计风险
开发语言·matlab·信息可视化
启友玩AI29 分钟前
微安级唤醒、毫安级识别:基于 CI3422 的 AI 眼镜语音交互开发实战
c语言·人工智能·科技·嵌入式硬件·ai·ar·语音识别
言乐635 分钟前
PythonLOLM自动生成复盘报告模型
开发语言·前端·数据库·人工智能·python
霸道流氓气质35 分钟前
HashiCorp Vault 与云 KMS 入门实战:动态密钥、SecretLeaseContainer 与 Java 集成完整指南
java·开发语言
wuminyu38 分钟前
stackChunkOop内部结构与GC屏障的配合工作原理剖析
java·linux·c语言·jvm·c++
论文复现现场42 分钟前
DeepSeek V4.1 Flash 各平台价格怎么比?缓存、峰谷计费与 Python 成本计算
开发语言·python·缓存·大模型·成本优化·deepseek
xuxigifxfh42 分钟前
牛客:HJ21 简单密码
java·开发语言·算法
小π军44 分钟前
C 和 C++ 是否都支持函数的重载?
java·c语言·c++