- 博客(62)
- 收藏
- 关注
原创 CTreeCtrl遍历所有节点(递归)
CTreeCtrl遍历所有节点1、先遍历子节点,再遍历根节点void TravelALL(HTREEITEM hCurItemroot){ HTREEITEM hCurItemchild = NULL; HTREEITEM hNextItem = NULL; while (hCurItemroot) { hCurItemchild = m_tree.GetChildItem(hCurItemroot); while (hCurItemchild) {
2021-12-09 11:24:17
1670
翻译 lisp常用函数-颜麓
一、数学运算功能函数1.1(十 数值 数值…)返回:累计实数或整数数值1.2(一 数值 数值…)返回:差值1.3(* 数值 数值…)返回:所有数值乘积1.4(/ 数值 数值…)返回:第一个数值除以第二个以后数值的商1.5(l十 数值)返回:数值十l6(1— 数值)返回:数值一l1.7(abs 数值)返回:数值的绝对值1.8(atan 数值)返回:反正切值1.9(cos 角度)返回:角度的余弦值,角度值为弧度1.10(exp 数值)返回:数值的指数1.11(expt 底数指数
2021-08-26 18:07:05
5691
原创 无名管道(PIPE)和有名管道(FIFO)---@颜麓
无名管道(PIPE)和有名管道(FIFO)1、无名管道(PIPE)无名管道(匿名管道),是一种具有两个端点的通信通道,管道的一端用于读取管道内数据,另一端用于将数据写入到管道内。创建一个管道后,会获取一对文件描述符,用于读取和写入。匿名管道通常是用在父子进程之间,由父进程创建匿名管道,子进程会继承管道的读端和写端,实现通讯。管道是单向的、先进先出的、无结构的字节流。写进程在管道的尾端写入数据,读进程在管道的首端读出数据。数据读出后将从管道中移走,其它读进程都不能再读到这些数据。管道提供了简单的流控制机
2021-01-16 22:00:42
1819
1
原创 Linux进程间通讯---@颜麓
进程间通讯进程间通讯(IPC)是指在两个或多个不同的进程间传递或者交换信息。进程是一个独立的资源管理单元,不同的进程之间资源是独立的,不能在一个进程中直接访问另一个进程的资源,但是进程间也不是孤立的,因此,进程间也需要一些信息的交互和状态传递,所以呢也就需要进程间数据传递,同步和异步的机制。1、linux使用的进程间通信方式:(1)无名管道(pipe)和有名管道(FIFO)(2)消息队列(3)共享内存(4)信号量(5)信号(signal)(6)套接字(socket)2、进程间通讯的目的
2021-01-16 21:13:36
129
原创 Linux进程与进程控制---@颜麓
1、进程创建fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,一个进程调用fork()函数后,就会创建一个新的进程,系统先给新的进程分配资源,然后把原来的进程的所有值都复制到新的新进程中,包括数据空间、堆、栈和进程描述符等,只有少数值与原来的进程的值不同(比如原进程的定时器,操作信号)。相当于克隆了一个自己,子进程从fork函数的返回值处开始执行。创建新进程成功后,系统中出现两个基本完全相同的进程,这两个进程执行没有固定的先后顺序,哪个进程先执行要看系统的进程调度策略。2、进程退出
2021-01-16 19:32:55
126
原创 进程----@颜麓
一、进程简介进程是计算机中的程序基于某数据集合上的⼀次运⾏的过程,是系统进⾏资源 分配和调度的基本单位,是操作系统结构的基础,同时也是线程的容器。 在Linux环境下,每个正在运⾏的程序都称为进程。 它和程序的区别是: 程序是静态的,是⼀些保存在磁盘上的指令的有序集合,没有任何执⾏的概 念。进程是⼀个动态的概念,它是程序执⾏的过程,包括动态的创建,调度和消亡 的整个过程。(⻋与开⻋的区别) 对于系统⽽⾔,当⽤户在系统中输⼊命令执⾏⼀个程序时,它将启动⼀个进 程,进程是处于执⾏期的程序以及他所包含的资源的总
2021-01-09 18:02:24
174
1
原创 C语言-Time库---@颜麓
⼀、C语⾔的时间处理库time库中的常用函数1、函数名称: time 2、函数名称: localtime 3、函数名称: asctime 4、函数名称: ctime 5、函数名称: gmtime 6、函数名称:mktime 7、函数名称:difftime1、time函数原型:time_t time(time_t * timer)功能: 获取当前的系统时间,返回的结果是⼀个time_t类型, 其中time_t是⼀ 个⻓整型,⼀般⽤来表示⽤1970年以来的秒数。返回⾃纪元Epoch(19
2021-01-07 21:00:11
1625
原创 斐波那契数列---@颜麓
递归法#include<stdio.h>int Fabio(int n){ if(n==0) { return 0; } else if(n == 2 || n == 1) { return 1; } else { return Fabio(n-1)+Fabio(n-2); }}int main(){ for(int i=0;i<10;i++) { printf("%d ",Fabio(i)); } return 0; }
2021-01-06 21:08:40
94
原创 Linux静态库和动态库---@颜麓
一、静态库与动态库的创建与应用库:就是预先编译好的方法或函数的集合,但是不可以独立执行。不同的平台,库的二进制格式是不一样的。分两类:静态库,动态库windows : 静态库的扩展名.lib 动态库的扩展名.dlllinux系统:静态库.a 动态库.so二、linux下静态库的创建与应用1、准备两个.c文件,一个.h文件add.csub.cmylib.h2、gcc -o add.c sub.c 生成两个.o文件3、使用ar(archive)命令静态的库的命名规则:li
2021-01-05 22:51:56
167
原创 二叉树---@颜麓
//二叉树 #include<stdio.h>#include<stdlib.h>struct bi_search_tree{ int key; struct bi_search_tree *left; struct bi_search_tree *right;};typedef struct bi_search_tree bst_tree; /*插入操作,value是待插入的值*/bst_tree *bst_tree_insert(bst_tree *
2021-01-04 17:04:04
133
原创 shell实现99乘法口诀表---@颜麓
**while循环实现**#!/bin/bashi=0sum=0while((i<9))do let i++ j=0 while((j<i)) do let j++ let sum=i*j echo -ne $i"*"$j"="$sum"\t" done echo " "donefor循
2020-12-30 19:30:30
224
1
原创 shell脚本语言---@颜麓
一、shell简介1、shell是什么shell是命令解释器(command interpreter),是linux操作系统的用户接口程序从用户接口得到输入信息,shell将用户程序及其输入翻译成操作系统内核(kernel)能够识别的指令,并且操作系统内核执行完将返回的输出通过shell再呈现给用户.计算机对除机器语言以外的源程序不能直接识别、理解和执行,都必须通过某种方式转换为计算机能够直接执行的。这种将高级编程硬件程序设计语言编写的源程序转换到机器目标程序的方式有两种:解释方式和编译方式
2020-12-30 19:09:23
280
原创 C语言-遍历二维数组中的元素---@颜麓
#include<stdio.h>void print(int arr[][4]){ for(int i=0;i<2;i++) { for(int j=0;j<4;j++) { printf("%d ",arr[i][j]); } printf("\n"); }}void printd(int arr[2][4]){ for(int i=0;i<2;i++) { for(int j=0;j<4;j++) { pri
2020-12-29 15:56:03
538
原创 C语言-九九乘法口诀表---@颜麓
for循环实现99乘法口诀表#include<stdio.h> int main(){ for(int i=1;i<10;i++) { for(int j=1l;j<=i;j++) { printf("%d*%d=%d ",j,i,i*j); } printf("\n"); } return 0;}while实现99乘法口诀表int main(){ int i=0; while(i<9) { i++; int j=0;
2020-12-29 15:16:24
1075
原创 C语言-循环链表---@颜麓
循环链表对循环链表的操作1、Initialization();2、Create_loop_list(head);//创建链表 3、Delete_loop_list(head,300);//指定删除 4、Head_delete_loop(head);//头删 5、Tail_delete_loop(head);//尾删6、Head_insert_loop(head,900);//头插 7、Tail_insert_loop(head,800);//尾插 8、Add_loop_list(head
2020-12-29 14:47:44
153
1
原创 C语言-双向链表---@颜麓
双向链表1、单链表的结点都只有一个指向下一个结点,单链表的数据元素无法直接访问其前驱元素,所以逆序访问单链表中元素极其耗时;2、在单链表的结点中增加一个指向其前驱的pre指针;该链表中第一个结点的前趋结点为NULL,最后一个结点的后继结点为NULL 。Delete_list(head,400);//指定删除 Head_delete(head);//头删 Tail_delete(head);//尾删 Head_list(head,111);//头插 Tail_insert(head,999)
2020-12-29 09:48:49
108
原创 C语言-单链表---@颜麓
单链表单链表的组成就是一个一个的节点1、数据元素本身,其所在的区域称为数据域;2、指向直接后继元素的指针,所在的区域称为指针域;单链表1、student *head=Init_list();//初始化2、Create_student(head,arr,5);//创建列表3、Head_insert(head,66);//头部插入4、Tail_insert(head,77);//尾部插入5、Insert_list(head,22,88);//指定插入6、Head_delete(head)
2020-12-28 14:49:18
187
1
原创 C语言-快速排序---@颜麓
#include<stdio.h>#define SIZE 6void Quick_sort(int arr[],int size){ int left=0,right=size-1; int pivot = arr[0]; //设置基准值 while(left < right){ //大于基准值者保持在原位置 while(left < right && arr[right] > pivot) { right--; }
2020-12-22 21:31:27
99
原创 C语言-冒泡排序与选择排序---@颜麓
//冒泡排序and选择排序#include<stdio.h>//冒泡 void bubble_sort(int arr[],int n){ int temp; for(int i=0;i<n-1;i++) { for(int j=0;j<n-i-1;j++) { if(arr[j]<arr[j+1]) { temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp;
2020-12-21 10:55:26
104
原创 C语言-文件---@颜麓
文件一、什么是文件文件是指存储在外存储器上的数据的集合。二、文件名(1)文件路径:(2)主文件名;(3)文件后缀。文件路径表示文件在外部存储设备中的位置。如: d: \ cc \ temp \ file1 . dat↑ ↑ ↑文件路径 主文件名 文件后缀三、文件的分类ASCII文件又称为文本文件。在这种文件中,每个字节存放一个字符的ASCII码值。二进制文件中的数据与该数据在内存中的二进制形式是一致的,其中一个字节并不代表一个字符。四、文件
2020-12-16 20:35:21
329
原创 c语言-十进制转二进制---@颜麓
//十进制转二进制 #include<stdio.h>int main(){ int num,arr[32]; printf("请输入一个十进制数:"); scanf("%d",&num); for(int i=0;i<32;i++) { arr[i]=num%2; num=num/2; } for(int i=31;i>=0;i--) { printf("%d",arr[i]); } // for(
2020-12-15 15:17:45
95
原创 C语言-该日是本年第几天---@颜麓
// 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。//写一个函数days,实现第1题的计算。由主函数将年、月、日传递给days函数.//计算后将日子数传回主函数输出。#include<stdio.h>int days(int year,int month,int day){ int day_sum=0; int month_sum[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};// 12个月每月的天数
2020-12-14 19:38:16
260
原创 c语言-结构体---@颜麓
一、结构体1、定义:可以将不同的数据类型封装在一起构建出来的一个新的类型2、构造结构体的语法方式://声明一个结构体,就是创造了一种新的类型struct 结构体名{ 成员列表 //类型名称 变量名;};后面的分号不可省略成员列表中的成员类型可以是c语言提供的基本类型,也可以是结构体或其他结构类型。struct 结构体名{ 成员列表 //类型名称 变量名;}a,b;struct //结构体名圣罗的定义格式{ 成员列表 //类型名称 变量名;}a,b;
2020-12-14 09:49:28
234
原创 C语言-数组排序---@颜麓
输入一个数组。将数组由大到小或由小到大打印#include<stdio.h>int main(){ int n,i,j,k; printf("你要输入几个数:"); scanf("%d",&n);//n是输入数的个数 int arr[n];//数组 for(i=0;i<n;i++) { printf("请输入:"); scanf("%d",&arr[i]);//将数写进数组 } for(i=0;i<5;i++)//外层循环遍历
2020-12-13 17:53:05
79
原创 C语言-结构体习题--@颜麓
//开发一个简易的成绩管理系统: 存储多个学员信息并处理//要求如下:// (1)申请多个空间,存入学员信息// (2)求分数最高学员姓名// (3)求总分和平均分// (4)统计查询平均分以上学员的姓名// (5)按照成绩排序#include<stdio.h>int i,max1,max2,max3,sum1,sum2,sum3;//全局变量 struct student{ ch
2020-12-12 18:38:44
313
原创 c语言-遍历结构体里的数组元素---@颜麓
遍历结构体里的数组元素的两种方法//设计一个描述商品的结构体,存放一个商品信息,并显示#include<stdio.h>struct goods{ char name[10];//10 int date;//4 char quality[10];//10 float price;//4};struct goods str[5]={ {"yanlu ",20201211,"514years",100}, {"achang",20201210,"30
2020-12-12 16:38:19
2075
原创 C语言-动态内存---@颜麓
一、动态内存的申请与释放内存四区:1、堆区:由程序员主动去申请空间,使用完成后要主动释放。 申请:void *malloc(size) 释放:free(指针名)1G空间2、栈区:是一个动态存储区,局部变量和形参放在这一块,由编译器释放,函数调用结束就会被释放。3、全局区:存放常量及宏定义,全局变量和静态变量。4、代码区:存放代码指令,只读。二、常量指针与指针常量定义常量指针:const int*pt;约束pt指向的对象不能被改变。定义指针常量:const int *const pt
2020-12-11 09:54:39
105
原创 C语言-指针---@颜麓
一、指针1、地址:计算机中的内存是按照字节进行组织的,字节是构成我们内存最基本的单元。没一个字节分配每一个编号,这个编号就被成为地址,不同的数据类型占用的内存空间(字节数)是不一样的,如果我们访问内存中的数据,是按照这个数据的首个字节的地址去访问的,我们把这个地址称为数据的首地址。2、指针本质是一个地址,这个地址是一个数据类型;指针变量;存放地址的变量;*数据类型 指针变量名int *p;//标识符的类型说的是指针指向的对象类型//定义指针变量中的 *没有特别意思,为了便于区分普通变量
2020-12-09 09:45:59
94
原创 c语言---函数补充---@颜麓
一、函数1、什么叫函数: 为了完成某个功能代码的集合2、函数的两个作用:代码复用,分解过程。3、函数的定义函数分类:根据有无形参划分:有参函数和无参函数类型标识符 函数名([形参列表]){函数体} //1.函数的名字必须符合我们的标识符规则 //2.当函数存在多个形参的时候,形参和形参之间用英文状态下的逗号去隔开 //3.函数的组成:类型标识符 函数名 形参 函数体 //4、对于一个函数来说,函数内部也可以调用其他函数,但是不可以在函数内部在定义其他函数。 //5、同一个源文件
2020-12-08 21:07:24
234
原创 C语言-函数递归---@颜麓
`1、什么函数递归程序调用自身的编程技巧称为递归(recursion)。递归作为一种算法在程序设计语言中广泛运用。一个过程或函数再其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原始问题相似的规模较小问题来求解,递归策略只需要少量的程序就可以描述出解题过程所需要的多次重复计算,大大减少了程序的代码量。递归的主要思考方式在于:大事化小2、递归的两个必要条件1)存在限制条件,当满足这个限制条件的时候,递归便不再继续。2)每次递归调用后越来越接近这个限制条件。
2020-12-07 20:34:47
95
原创 C语言-sprintf的用法---@颜麓
1、该函数包含在stdio.h的头文件中。**2、**sprintf和平时我们常用的printf函数的功能很相似。sprintf函数打印到字符串中(要注意字符串的长度要足够容纳打印的内容,否则会出现内存溢出),而printf函数打印输出到屏幕上。sprintf函数在我们完成其他数据类型转换成字符串类型的操作中应用广泛。3、sprintf函数的格式:int sprintf( char *buffer, const char *format [, argument,…] );除了前两个参数固定外,可选参
2020-12-06 22:23:49
374
原创 c语言-函数---@颜麓
一、函数1、函数定义:函数就是完成特定功能的代码块,函数同时也是构成我们C程序的基本单元。一个C程序必须有一个主函数main和其他的函数组成。其他函数可以没有,但是必须有main函数,main函数是整个C程序执行的入口。main函数可以条用其他函数, 其他函数之间也可以相互的调用2、作用:1)代码复用2)分解过程3、函数定义1)根据用户的角度:库函数(内置函数)比如printf,scanf,用户自定义函数。2 )根据函数的有无参数分为:有参函数和无参函数。3)根据函数的有无返回值:有返
2020-12-05 16:51:25
273
原创 C语言-函数调用简单的计算器---@颜麓
#include<stdio.h> int add(int a,int b)//加法运算 { return a+b;}int sub(int a,int b)//减法运算 { return a-b;}int mult(int a,int b)//乘法运算 { return a*b;}int dev(int a,int b)//除法运算 { if(b!=0); { return a/b; } // printf("error");// return
2020-12-04 22:35:15
1334
原创 C语言-乘法口诀写进二维数组---@颜麓
//把九九乘法口诀表放进一个二维数组#include<stdio.h>int main(){ char str[9][10];//定义一个可以存放9*9的字符数组 int i,j;// int sprintf( char *buffer, const char *format [, argument,...] ); for(i=1;i<10;i++) { for(j=1;j<=i;j++) { sprintf(str[i],"%d*%d=%d ",i,
2020-12-03 21:21:57
860
原创 c语言-杨辉三角---@颜麓
#include<stdio.h>int triangle(int x,int y);int main()//{// int a[10][10];// int i,j;// for(i=0;i<10;i++)//将外层所有的1写进去 // {// a[i][0]=1;// a[i][i]=1;// }// // for(i=2;i<10;i++)//内层数输入 // {// for(j=1;j<i;j++)// {// a[i][j]
2020-12-03 14:11:19
145
原创 c语言-二维数组问题---@颜麓
//利用二维数组存储10个学生的三门课程(语文、数学、英语)的成绩,//(1)计算输出每个同学的总分和三门课程的平均分;//(2)计算输出每门课程的平均分;#include<stdio.h>int main(){ int a[3][10]={99,96,90,94,95,96,91,52,63,74,81,92,83,95,94,96,98,84,94,81,91,72,93,94,95,96,97,98,79,91};//30个成绩 int sum,i,j;//先遍历输入的所有
2020-12-03 11:59:47
1211
原创 c语言-一个数组的由大到小输出---@颜麓
int arr[5]={6,2,9,4,5}; int i,j; for(i=0;i<5-1;i++) { for(j=0;j<5-1-i;j++) { int max; if(arr[j]>arr[j+1]) { max=arr[j]; arr[j]=arr[j+1];
2020-12-02 17:03:36
3385
原创 c语言-二位数组转置(array)---颜麓
/*-----------二维数组转置-----------*/ int a[3][5]={1,2,3,4,5,6,4,5,6,1,2,4,5,7,8,}; int b[5][3]; for(int i=0;i<3;i++) { for(int j=0;j<5;j++) { b[j][i]=a[i][j];//把a数组的第i行第j列的数跟b数组的第j行第i列进行交换 } }
2020-12-02 16:37:29
338
原创 c语言1+1/2-1/3+1/4-......+1/n=?---@颜麓
1+1/2-1/3+1/4-…+1/n=?#include<stdio.h>int main(){ int n,a; float sum1=0,sum2=0; printf("请输入:"); scanf("%d",&n); for(a=2;a<=n;a++)//a的初值为2,即少了第一个1,所以最终的输出需加1 { if(a%2==0) { sum1=sum1+(float)1/a;//偶数运算 // printf("%f\n",sum1
2020-12-02 09:59:28
2221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人