自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Eleanor_12的博客

本博客仅用于记录学习过程,不保证每篇文章100%的正确性,如有错误,欢迎指正

  • 博客(24)
  • 收藏
  • 关注

转载 C语言——删除字符串中的指定子串

问题描述: 在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。要求实现函数: int delete_sub_str(const char *str, const char *sub_str, char *result_str)【输入】 str:输入的被操作字符串         sub_str:需要查找并删除的特定子字符串【输出】 result

2016-12-25 21:20:26 11384

转载 C语言——不使用循环判断一个数是否为2的N次方

对于判断一个数是否为2的N次方问题,通常想到的最为直接的办法就是对这个数不断对2取余,为0就将该数变为该数除以2,直到最后该数为1为止。 void judge(int n) { while(!(n % 2)) { n = n / 2; if(n == 1) { printf("yes!\n);

2016-12-24 22:38:42 1300

原创 C语言——以尽量高效的方法用”*”打印出一个空心正方形

请以尽量高效的方法用”*”打印出一个空心正方形,num为边长。void print_square(int num);#include int main(){ int x,y,num; printf("please input the num:\n"); scanf("%d",&num); for(x = 0; x < num; x++)

2016-12-23 22:46:32 5399 1

原创 C语言——约瑟夫环

设编号1,2…..n的n个人围坐在一圈,任选一个正整数作为报数的上限值,从第k个人开始按顺时针报数,数到m的那个人出局,他的顺时针方向下一位又从1开始报数,数到m的那个人又出局,以此类推,直到所有人出局为止,请用链表写一个函数找出每轮的幸存者。(假设n个人已经插入链表)struct{int num;struct node *next;}typedef struct node N

2016-12-22 22:44:16 840

原创 C语言——链表倒数结点

编写一个程序,实现输出链表中倒数第K个结点ListNode * FindKthToTail(LisNode *head, unsigned int k){ if(head == NULL || K == 0) //入口参数检查!!! { return NULL; } int i; ListNode *pAhead

2016-12-21 22:17:14 504

原创 C语言——堆和栈的区别

简单的可以理解为: heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。 预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据

2016-12-20 22:38:50 487

原创 Linux C——shell基础入门

Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行)。   如同其他语言一样,通过我们使用任意一种文字编辑器,比如nedit、kedit、emacs、v

2016-12-18 16:18:20 559

原创 C语言——用联合体判断大小端

用联合体判断大小端,大端返回0,小端返回1 union w { int a; char b; } u;int judge(){u test;test.a = 1;if(test.b == 1){ return 1;}else{return 0;}}

2016-12-17 23:04:05 491

原创 C语言——用联合体判断大小端

用联合体判断大小端,大端返回0,小端返回1union w { int a; char b; } u;int judge(){u test;test.a = 1;if(test.b == 1){ return 1;}else{return 0;}}

2016-12-17 22:59:10 677

原创 C语言——用联合体判断大小端

用联合体判断大小端,大端返回0,小端返回1union w { int a; char b; } u;int judge(){u test;test.a = 1;if(test.b == 1){ return 1;}else{return 0;}}

2016-12-17 22:57:53 489

原创 C语言——用联合体判断大小端

用联合体判断大小端,大端返回0,小端返回1union w { int a; char b; } u;int judge(){u test;test.a = 1;if(test.b == 1){ return 1;}else{return 0;}}

2016-12-17 22:54:32 993

转载 嵌入式系统——ARM Cortex-A8体系结构

第2章 ARM Cortex-A8体系结构1.ARM微处理器采用RISC架构的ARM微处理器一般具有如下特点:1)体积小、低功耗、低成本、高性能;2)支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;3)大量使用寄存器,指令执行速度更快;4)大多数数据操作都在寄存器中完成;5)寻址方式灵活简单,执行效率高;

2016-12-16 23:05:00 1975

原创 C语言——把自己编程实现字符串函数strstr

char * my_strstr(char *str, char *ptr){ if(str == NULL || ptr == NULL) return NULL; int i; int j; int flag = 0; for(i = 0; i < strlen(str); i++) { for(j = 0; j < strl

2016-12-15 23:20:43 664

转载 C语言——用递归算法判断数组是否为一个递增数组

1.递归一定要有退出条件,否则将无限循环。2.关于递归的返回值是要注意的。下面列举两种方法,原理相同,递归判断。方法1:bool charge(int p[],int n){  static int m=0; //这个一定要定义为static,否则每次调用都是从0开始。   if(m == n-1)    return true;   else

2016-12-14 21:47:35 3608

原创 C语言——合并两个递增排序链表

struct node{int num;struct node *next;};typedef struct node Node;typedef Node * Link;Link Merge(Link head1, Link head2){If(head1 == NULL) return head2;If(head2 == NULL) return head1;Link m

2016-12-13 23:08:34 1163

原创 C语言——运算符操作时的类型转换问题

以取反操作为例,来看下面这一个例子:下面程序的输出结果是多少    250    #include int main(){unsigned char a = 0xA5;unsigned char b = ~ a >> 4 + 1;printf(“b = %d\n”, b);return 0;}解析:考察两个知识点:一是类型转换问题,二是运算符优先级的问题,优先级~

2016-12-12 22:21:42 485

原创 C语言——蛇形代码的例子

编写一个程序,输出类似的蛇形代码:1  2  3  4  516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9 #include #include int main(){int n;int x,y,round;//a[x][y],x是二维数组的第一个下标,y是二维数组的第二个下标,//round是转的圈数,

2016-12-10 20:46:16 950

原创 C语言——系统函数和库函数的区别

系统调用:是操作系统为用户态运行的进程和硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口,即就是设置在应用程序和硬件设备之间的一个接口层。可以说是操作系统留给用户程序的一个接口。再来说一下,linux内核是单内核,结构紧凑,执行速度快,各个模块之间是直接调用的关系。放眼望整个linux系统,从上到下依次是用户进程->linux内核->硬件。其中系统调用接口是位于Linux内核中的,如果再

2016-12-10 20:41:06 9416

转载 Linux C——网络编程传输文件的实验

原先对文件总是有一种莫名的抗拒,原因未知,最近做东西的时候需要用套接字传送文件、图片之类的东西,没办法,只好硬着头皮上了。做了一个小实验,下面是几点心得:(1)网上查了一些资料,发现其实套接字传送文件和传输文字没什么区别的,因为它只负责发送和接收,而对到底是什么样类型的数据是并不感冒的(以字节为单位传输)(2)发送文件时,需要先把文件以二进制格式打开,读取到内存中,然后再发

2016-12-07 22:19:18 987

原创 Linux C——TCP、UDP的区别和分别使用的场合

TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。UDP(User Datagram Protocol)        UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立刻按照原样发送到网络上的一种机制。        即使是出现

2016-12-06 22:30:53 2254

转载 Linux C——详解TCP协议的三次握手和四次挥手

建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。那如何断开连接呢?简单的过程如下:

2016-12-05 22:08:05 410

原创 Linux C——IP地址分类的详解

IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。其中A类、B类、和C类这三类地址用于TCP/IP节点,其它两类D类和E类被用于特殊用途。A、B、C三类IP地址的特征:当将IP地址写成二进制形式时,A类地址的第一位总是O,B类地址的前两位总是10,C类地址的前三位总是110。1. A类地

2016-12-05 22:06:42 1445

原创 C语言——内存分配的方式

1、全局变量和静态变量(static变量),是由编译器自动分配和释放的,初始化的全局变量和静态变量放在同一块内存区中,未初始化的全局变量和静态变量则放在相邻的另外一块内存区中。2、栈,是由编译器自动分配和释放的,主要是函数体的地址,参数和局部变量,静态变量不包含其中,操作方式类似于数据结构中的栈。3、堆,是由程序员手动完成申请和释放的,像malloc和new,程序员没有手动释放的话,当程序

2016-12-02 23:16:43 401

原创 C语言——printf函数的结合顺序

下面用一个例子来看:int arr[] = {6,7,8,9,10};int *ptr = arr;*(ptr++)+=123;printf(“ %d %d ”, *ptr, *(++ptr));分析:int *ptr = arr;此时指针指向第一个元素,即6*(ptr++)+=123;此时指针ptr自加表示地址加一,指向第二个元素printf(“ %d

2016-12-02 23:10:42 858

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除