Skip to main content

moregeek program

一步一步写算法(之快速排序)-多极客编程_一步算法和两步算法

    快速排序是编程中经常使用到的一种排序方法。可是很多朋友对快速排序有畏难情绪,认为快速排序使用到了递归,是一种非常复杂的程序,其实未必如此。只要我们使用好了方法,就可以自己实现快速排序。    首先,我们复习一下,快速排序的基本步骤是什么:    1、 判断输入参数的合法性    2、把数组的第一个数据作为比较的原点,比该数据小的数据排列在左边,比该数据大的数据排列在右边    3、按照(2

Read More

c语言也能写植物大战僵尸_四夕立羽的博客-多极客编程

                                                            不少同学都玩过《植物大战僵尸》,最近PopCap公司又带来了新版的消息,这次高兴的轮到Xbox的用户了,日前PopCap公司公布了《植物大战僵尸》XBLA版的截图,这个版本的《植物大战僵尸》引入了多人合作与对抗模式,看图就知道好玩多了又刺激多了。                详

Read More

RT-Thread快速入门-内存池-多极客编程

首发,公众号【一起学嵌入式】 引言 上篇文章介绍了动态内存堆相关的内容: RT-Thread快速入门-动态内存堆管理 这篇文章继续介绍 RT-Thread 内存管理剩下的部分——内存池。 为何引入内存池? 内存堆虽然方便灵活,但是存在明显的缺点: 分配效率低。每次分配内存的时候,都需要查找空闲内存块。 容易产生内存碎片。 为了规避这两个问题,RT-Thread 提供了内存池(Memory Po

Read More

RT-Thread快速入门-动态内存堆管理-多极客编程

首发,公众号【一起学嵌入式】 每种 RTOS 均有内存管理机制,RT-Thread 的内存管理分为两类:动态内存堆管理、内存池管理。 本篇文章先来介绍一下动态内存堆管理相关的内容。 内存堆管理机制 RT-Thread 操作系统在内存管理上,根据上层应用及系统资源的不同,有针对性地提供了不同的内存分配管理算法。内存堆管理根据具体内存设备划分为三种情况: 针对小内存块的分配管理(小内存管理算法);

Read More

RT-Thread快速入门-消息邮箱-多极客编程

首发,公众号【一起学嵌入式】 前面几篇文章介绍了线程(任务)间的同步机制:信号量、互斥量、事件集。接下来我们学习线程(任务)之间的通信机制。 一般来说,RTOS 均会提供两种线程间通信的机制:消息邮箱和消息队列。RT-Thread 同样如此。 本篇文章介绍 RT-Thread 消息邮箱相关的内容。 邮箱的工作机制 1. 理解消息邮箱 邮箱是一种简单的线程间消息传递的方式,其特点是开销较低,效率

Read More

RT-Thread快速入门-信号量-多极客编程

首发,公众号【一起学嵌入式】 线程同步是指多个线程通过某种特定的机制,来控制线程之间的先后执行顺序。 RT-Thread 提供了几种线程同步的方式:信号量(semaphore)、 互斥量(mutex)、和事件集(event)。本篇文章主要介绍信号量相关的内容。 信号量的工作机制 信号量是一种可以用来解决线程间同步问题的内核对象,线程通过获取和释放信号量,来达到同步的目的。 每个信号量对象都有一

Read More

RT-Thread快速入门-时钟管理-多极客编程

首发,公众号【一起学嵌入式】 时钟节拍 任何操作系统都需要提供一个时钟节拍,以供系统处理所有和时间有关的事件,如延时、线程的时间片轮转调度以及定时器超时等。时钟节拍(OS Tick)是操作系统中最小的时间单位。 时钟节拍是特定的周期性中断,这个中断之间的时间间隔取决于具体的应用,一般是 1-100ms。时钟节拍率越快,系统的额外开销就越大。 RT-Thread 中,一个时钟节拍的时长根据 rt

Read More

RT-Thread快速入门-线程管理(下)-多极客编程

首发,公众号【一起学嵌入式】 上一篇主要介绍了 RT-Thread 线程管理相关的理论知识: RT-Thread快速入门-线程管理 这篇重点介绍 RT-thread 提供的线程管理相关的接口函数,以及实战演示。 线程创建 在 RT-Thread 中,创建一个线程的方式有两种: 动态创建方式,线程的栈和线程控制块由系统从动态内存堆上分配。 静态创建方式,线程的栈和线程控制块由用户定义分配。 1.

Read More

RT-Thread快速入门-线程管理(上)-多极客编程

首发,公众号【一起学嵌入式】 在 RT-Thread 中,最基本的调度单位是线程,其他 RTOS 也叫任务。如果学习过或者了解过 RTOS,任务这种叫法是最为熟知的。 本篇文章来学习一下 RT-Thread 线程方面的内容。对于初学者来说,转换一下思维,建立多任务(线程)的编程思想。 引言 对于裸机编程,整个软件系统只有一个线程(任务)在执行,实现方式是通过一个大循环完成的。应用程序是一个无限

Read More

RT-Thread快速入门-了解内核启动流程-多极客编程

首发,公众号【一起学嵌入式】 内核是操作系统最基础也是最重要的部分。从本文开始进入 RT-Thread 内核相关知识的学习。 首先了解内核的基础知识,对 RT-Thread 内核的设计有个初步的认识。 然后了解一下 RT-Thread 系统启动流程。 内核介绍 下图为 RT-Thread 的内核架构图: 内核包括两部分:内核库、实时内核实现。 内核库 为了保证内核能够独立运行,RT-Thre

Read More

RT-Thread快速入门-初探RT-Thread-多极客编程

公众号【一起学嵌入式】,RTOS、Linux、C 前言 要学习一项新知识或新的技能,首先要对其有个初步了解,然后再逐步学习如何运用它。 本文作为快速入门 RT-Thread 系列文章的第一篇,首先介绍一下,我当时是如何学习 RT-Thread 的,以及参与官方组织的活动的情况,希望给读者参考,并有所启发。 然后先介绍一下这款国产 RTOS 的大概内容,做到对 RT-Thread 有个初步的了解

Read More

C----选择语句(要Ta还是我),循环语句(重复)-多极客编程

一.选择语句不是A就是Bif和else的用法​例子 :#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() {    int input = 0;      //输入的值    printf("你要Ta还是我\n");    scanf("%d", &input);    if (input == 1

Read More

C--初识字符串、转义字符、注释-多极客编程

一.字符串​"hello bit.\n"​​这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串注意:字符串的结束标志是一个\0的转义字符.在计算字符串长度的时候\0是结束标志,不算作字符串内容​附 : 字符数组----数组是一组同类型的元素​例子 :​#include <stdio.h>int main(){char arr[] = "hello";             

Read More

三个数比较大小,函数思想一步实现。-多极客编程

#include <stdio.h> //编程小白,有不足地方请指教. int MAX(int a, int b, int c) { return (a > b ? a : b) > c ? (a > b ? a : b) : c;       //适用于新手理解; } int main() { int a, b, c,max; scanf_s("%d"

Read More

冒泡排序-多极客编程

#include <stdio.h> void order(int *p, int n) {  int i, j, t;  for (i = 0; i < n - 1; i++)  {   for (j = 0; j < n - 1 - i; j++)   {    if (*(p + j)>*(p + j + 1))    {     t = *(p + j);  

Read More

【C语言】一些面试题。-多极客编程

    字符串替换空格:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“we are happy.”,则输出“we%20are%20happy.”。这个题,如果允许在声明第二个数组的话就比较简单了。直接逐个赋值给第二个数组,然后遇到空格第二个数组变换为“%20”,然后原本数组不变,然后继续如此这般,但是如果要求在原本的字符串中修改就比较麻烦,我们可以倒着遍历一遍,然后计算数组更新以

Read More

【C语言】3子棋游戏,-多极客编程

最近写了一个三子棋的游戏,然后我们来看一下。主函数:int main() { int start = 1; char lchess = 0; char cchess = 0; char chess[5][11]; while(start) { int n = 1; int p = 1; start = 1; printf("---------------开始游戏--------

Read More

用指针存储字符数组表示字符串-多极客编程

通过实例来理解表示方法的含义。源代码如下图所示。注视掉的前两行,要是释放了,编译之后会报错。*s1 表示的是个字符。虽然为变量赋值时:              char *s1 = "hello kitty.";写法上像是把一串字符赋值给了 *s1 一样。但是赋值时的 * 表示 s1 的类型。赋值语句的含义:              s1 = "hello kitty.";所以,通过函数输出指

Read More

【C语言】关于atoi,itoa与itob的重写和字符统计-多极客编程

首先关于函数atoi的重写,atoi的功能是字符串能够转换为整数保存,仅仅针对于整数,浮点数以后会有写://实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数。 #include <stdio.h> #include <ctype.h> int main() { char st[50]; gets(st);  printf(

Read More

【C语言】一些关于二进制位的一些题题目哦。-多极客编程

    两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同? 输入例子:1999 2299输出例子:7#include <stdio.h> int main() { int a,b; int count; a =0; b = 0; count = 0; printf("请输入两个数"); scanf("%d %d",&a,&b);

Read More