自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

转载 在结构体中定义char data[0]的用法

struct MyData { int nLen; char data[0];}; 开始没有理解红色部分的内容,上网搜索下,发现用处很大,记录下来。在结构中,data是一个数组名;但该数组没有元素;该数组的真实地址紧随结构体MyData之后,而这个地址就是结构体后面数据的地址(如果给这个结构体分配的内容大于这个结构体实际大小,后面多余的部分就是这个data的内容);这种声明方

2017-09-16 15:11:29 831 1

原创 C语言函数返回字符串

先给出一个错误的例子:#include <stdio.h>#include <string.h>char * retstring();int main(){ char * name2; name2 = retstring(); printf("%s\n",name2); return 0;}char * retstring(){ char name[

2017-09-06 13:44:38 277

原创 信号灯的PV操作

#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/sem.h>union semun { int val; struct semid_ds *buf; unsigned short *array; st

2017-09-06 13:41:20 357

原创 LinuxC信号灯的PV操作

一般意义下,信号灯是一个具有整数值的对象,它支持两种操作P()和V()。P()操作减少信号灯的值,如果新的信号灯的值小于0,则操作阻塞;V()操作增加信号灯的值,如果结果值大于或等于0,则唤醒一个等待的进程。通常用信号灯来做进程的同步和互斥。最简单形式的信号灯就是内存中一个存储位置,它的取值可以由多个进程检验和设置。至少对于相关的进程来讲,对信号灯的检验和设置操作是不可中断的或者说是原子的:只要启动

2017-08-24 21:12:48 292

原创 C++学习记录(1)

1. 命名空间namespace:命名空间using:声明;1.1 命名空间的概念如果在一个空间中,两个变量或函数的名字一样,编译的时候会冲突。命名空间就是为了解决C++中函数变量的命名冲突所采取的一种措施,能够解决多模块协同开发出现变量函数命名的冲突问题。 在这里面可以把命名空间理解成文件夹,如果你在hel1这个文件夹中编辑两个hello.cpp肯定会出问题,但是如果一个

2017-07-07 20:18:20 141

转载 Google面试题 | 目标和

题目描述折现分割线 现有一个非负整数列a1, a2, …, an和一个期望值S。你可以为每一个整数赋一个新符号,符号从+ 和-两种符号中选择。计算出有多少种组合可以令赋予符号后的这些整数的和等于S。 折现分割线样 例输入:数列nums=[1,1,1,1,1],S=3 输出:5 解释:有5种可令这些整数赋予新符号后和为期望值3的组合。 -1+1+1+1+1 = 3 +1-1+1+1+1 =

2017-06-16 22:21:32 255

转载 经典算法面试题 | 最少操作数使数组元素相等 I & II 大合集

最少操作数使数组元素相等 I题目描述 给定一个长度为n的非空整数数组,找出使数组所有元素均相等的最少操作数,其中一次操作将其中n-1个数加上1。 样例输入: [1,2,3]输出: 3说明: 最少3次操作到达要求:[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]解题思路分析将n-1个数加1,相当于将所有数都加1,再将其中一个数减去1。将所有数都加1这个操

2017-06-14 18:38:11 1900

原创 C语言函数随记:atoi()函数

中文名 :atoi 参 数 :字符串 返回值 : int 适用语言 : C/C++ 头文件 : stdlib.h 原型:int atoi(const char *nptr); atoi( ) 函数会扫描参数 nptr字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过isspace( )函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非

2017-06-07 16:10:28 165

转载 FILE **file

FILE是在stdio.h定义的保存文件流信息的一个结构体类型(也可能是在其它文件中定义了另外的数据类型,然后通过typedef定义FILE)。注意它本身是类型而不是结构体名,所以FILE类型在字面上虽然不包含struct,但实际表示一个结构体。FILE变量中保存的不止是文件路径,还有缓冲区指针、读写方式等一系列信息(具体实现不一定相同)。一般使用FILE*类型变量表示文件句柄,通过它来访问FILE

2017-06-07 15:19:19 223

转载 经典算法之选择排序(直接选择、堆排序)

注:文章来源实验楼一、简单选择排序(直接排序)这一章我们来讲解选择排序,首先我们来讲解其中最简单的简单选择排序。简单选择排序的基本思想是通过n-1次数据元素的比较,从n-i+1个记录中选择最小的数据,并与第i个数据进行交换,如下图所示。简单选择排序的代码实现:#include <stdio.h>#include <stdlib.h>int n;/* * 选择排序 */void SelectS

2017-06-01 16:51:58 185

原创 经典算法之交换排序(冒泡排序、快速排序)

一、冒泡排序冒泡排序是一种交换排序,它的主要过程是:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。比较一趟之后,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。冒泡排序的代码实现:#include <stdio.h>#inclu

2017-06-01 16:33:58 255

转载 经典算法之插入排序(直接插入排序、shell排序)

注:文章来源实验楼一、直接插入排序首先我们来讲直接插入排序,它的做法是:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程,如下图所示。直接插入排序的代码实现:#include <st

2017-06-01 15:54:48 250

转载 面试题 颠倒整数

题目将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数)。解答这道题主要坑点在于负数和溢出两种情况。首先如果是一般情况,那么我们就只需要,按照每一位,一位一位的翻转。然后如果是负数,那么要先判断负号了后在翻转。 如果是溢出的情况那么我要直接返回0.

2017-05-31 22:34:44 119

转载 Facebook 面试题 | 岛的周长

以二维整数网格的形式给出地图,1代表陆地,0代表水。 网格单元水平/垂直连接(不包含对角)。 整张地图被水完全包围,并且有一个岛(即一个或多个连接的陆地单元)。 岛上没有“湖泊”(里面的水没有连接到岛外的水)。 一个单元格是边长为1的正方形。 网格为矩形,宽度和高度不超过100。 确定岛屿的周长。 样例 输入: [[0,1,0,0], [1,1,1,0], [0,1,0,0

2017-05-28 19:57:37 302

原创 浮点数

问题: 小明假期同爸爸一起去书店,他选中了六本书,每本书的单价分别为:3.1,1.7,2,5.3,0.9和7.2。不巧的是,小明的爸爸只带了十几块钱,为了让小明过一个愉快的假期,爸爸扔然同意买书,但提邮购一个要求,要小明从六本书中选出若干本,使得单价相加所得的和同10最接近。你能够帮助小明解决这个问题吗?#include <math.h>#include <stdio.h>void main(){

2017-05-26 21:15:09 155

原创 1~9分成1:2:3的三个三位数

题中ok()函数的使用,用指针判断数组是否重复的算法值得学习#include <stdio.h>int ok(int i, int *j);int a[9];int main(){ int n, count = 0; for (n = 123; n <= 333; n++) { if ((ok(n, a)) && (ok(2 * n, a + 3)) &&

2017-05-24 21:17:53 190

原创 用单链实现通讯录

#include <stdio.h>#include <stdlib.h>#include <string.h>#define T 1;#define F -1;struct address{ int id; char name[20]; char number[20]; char address[20]; struct address* next;

2017-05-23 10:58:30 144

原创 辗转相除法求最大公约数

有一分数a/b while (b != 0) { temp = a % b; a = b; b = temp; } 得最大公约数a

2017-05-19 21:11:25 170

转载 C语言实现数据结构--线性表

线性表是一种最简单的线性结构。线性结构是一个数据元素的有序集。比较典型的线性结构:线性表、栈、队列、串等。线性表是n个数据元素的有限序列,可以表示为:(a1, a2, …,ai-1,ai,ai+1, …,an),其中数据元素可以是各种类型的元素。线性表常用的两种表现形式是顺序表示与链式表示。线性表的顺序表示–顺序表线性表的顺序存储是指用一组地址连续的存储单元依次

2017-05-18 22:49:08 124

转载 x & (x - 1)

求下面函数的返回值(微软) ---------统计1的个数int func(int x){int countx = 0;while(x){countx++;x = x&(x-1);}return countx;} 假定x = 999910011100001111答案: 8思路: 将x转化为2进制,看含有的1的个数。注: 每执行一次x

2017-05-12 21:50:44 153

转载 为什么JDK源码中,无限循环大多使用for(;;)而不是while(true)?

作者:RednaxelaFX链接:https://www.zhihu.com/question/52311366/answer/130090347来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。首先是先问是不是再问为什么系列。在JDK8u的jdk项目下做个很粗略的搜索:mymbp:/Users/me/workspace/jdk8u/jdk/

2017-05-07 21:50:07 427

转载 strlen 与sizeof()的区别

strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。   char aa[10];cout  char aa[10]={'\0'}; cout  char aa[10]="jun"; cout  而sizeof()返回的是变量声明后所占的内存数,

2017-05-06 20:09:47 89

转载 c语言将十进制数转换成二进制数

#includemain(){int i,n,k,x[10];scanf("%d",&n);for(i=0;n!=0;i++)// 判断条件 n!=0{x[i]=n%2;n=n/2;}for(k=i-1;k!=(-1);k--)// 判断条件 k!=-1printf("%d",x[k]);// 输出x[k],不是x[i]}

2017-05-03 19:52:23 356

原创 反序数表达方法

有一整实数i=abcd,有r=0,经过 while (i) { r = r * 10 + i % 10; i /= 10; } 得r=dcba,将10换成2得到二进制为反序数的数。

2017-05-03 19:40:30 197

转载 break与continue

//break是结束整个循环体,continue是结束单次循环比方说:while(x++ {    if(x == 3)    {        break;    }    printf("%d\r\n", x);}结果是输出  1 2   就退出了整个while循环但是如果使用continuewhile(x++ {    if

2017-05-02 22:28:01 130

转载 break跳出循环用法

while(条件1)//A{ 表达式1;while(条件2)//B{if(条件3) break;}}这个break是跳出哪个循环呢,若是跳出了B循环,那么我想既是跳出了B处同时 也跳出A处循环 该怎么写break呢?在上面break处连着写两个break可以吗?break跳出的是最近的一个循环,即B循环想同时跳出A循环的话,可以使用goto语句,但是

2017-05-02 22:26:57 629

转载 做游戏,学编程(C语言) 1 实现弹跳小球

这次教程,我们实现一个弹跳小球。缺省编译器为VC,需要学习完基础的变量、运算符、表达式,printf、scanf输入输出函数的用法,if-else、while、for语句的用法。第1步,显示静止的小球。效果为:&lt;img src="https://pic4.zhimg.com/v2-1f926dd9524451c859cf17de9675a273_b.png&quot

2017-04-30 16:26:06 1618

原创 linux中math.h库的使用

今天编写程序中使用到了math.h库,在运行的时候出现了以下错误:查询后得知是函数库没有包含进来,需要在编译时加上-lm,即gcc 1,.c -o 1 -lm;l为库,m为数学库。

2017-04-17 19:57:04 455

空空如也

空空如也

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

TA关注的人

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