其他
Winston_wu
㊣
展开
-
typedif int mytype[10]的作用
typedif int mytype[10]的作用typedefint *p;标识符p将被定义为了一个typedef name,这个typedefname表示一个类型,什么类型呢?就是int *p这个声明中标识符p的类型(int*)。typedefdouble MYDOUBLE; 分析:去掉typedef ,得到正常变量声明=>double MYDOUBLE;变量MYDOUBLE原创 2013-07-01 00:00:42 · 901 阅读 · 0 评论 -
char的整型运算
char的整型运算char a = ‘5’;char b = ‘6’;couta = a - ‘0’;cout附:ASCII码0:48、A:65、a:97‘A’=’a’-32原创 2013-07-01 00:19:45 · 642 阅读 · 0 评论 -
strcpy,memcpy,sprintf的区别及前两个函数的实现
strcpy,memcpy,sprintf的区别及前两个函数的实现snprintf 函数操作的对象不限于字符串:虽然目的对象是字符串,但是源对象可以是字符串、也可以是任意基本类型的数据。这个函数主要用来实现(字符串或基本数据类型)向字符串的转换功能。如果源对象是字符串,并且指定 %s格式符,也可实现字符串拷贝功能。strcpy和memcpy主要有以下3方面的区别:1)复制的内容不同原创 2013-07-01 00:23:29 · 1111 阅读 · 0 评论 -
高字节低字节问题
高字节低字节问题Little-Endian:低位字节放在内存的低地址段;Big-Endian:高位字节放在内存的低地址段;问题1unsigned charendian[2] = {1, 0}; short x; x = *(short *)endian; 代码运行后,x的值是多少?问题2int i = 1; if (*(char*)&i == 0)原创 2013-07-01 00:24:37 · 1499 阅读 · 0 评论 -
用位运算判定给定的整数是不是2的整数次幂
用位运算判定给定的整数是不是2的整数次幂利用最高位是1,其后所有位为0的特性,常数时间解决问题://判断n是否是2的正整数冪boolis_2exp(unsigned int n){ return !(n&(n-1));}原创 2013-07-01 00:25:18 · 682 阅读 · 0 评论 -
用位运算求给定整数的二进制表示中1的个数
用位运算求给定整数的二进制表示中1的个数考虑到n-1会把n的二进制表示中最低位的1置0并把其后的所有0置1,同时不改变此位置前的所有位,那么n&(n-1)即可消除这个最低位的1。这样便有了比顺序枚举所有位更快的算法:循环消除最低位的1,循环次数即所求1的个数。此算法的时间复杂度为O(n的二进制表示中的1的个数),最坏情况下的复杂度O(n的二进制表示的总位数)。//计算n的二进制表示中1的个原创 2013-07-01 00:25:37 · 732 阅读 · 0 评论 -
异或操作总结
异或操作总结1 ^ 0 = 10 ^ 1 = 10 ^ 0 = 01 ^ 1 = 00 ^ a = a代码验证:int a = 123, b = 456;a ^ b = 435;a ^ b ^ a = 456 ( b )a ^ b ^ b = 123 ( a )应用:不用临时变量交换两值:a = a ^ bb = b ^ a a = a ^原创 2013-07-01 09:03:20 · 790 阅读 · 0 评论 -
C/C++数组名与指针区别
C/C++数组名与指针区别1)数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组;2)数组名的外延在于其可以转换为指向其指代实体的指针,而且是一个指针常量;3)指向数组的指针则是另外一种变量类型(在WIN32平台下,长度为4),仅仅意味着数组的存放地址!4)数组名作为函数形参时,在函数体内,其失去了本身的内涵,仅仅只是一个指针;在失去其内涵的同时,它还失去了其常量特性,原创 2013-07-01 09:06:53 · 560 阅读 · 0 评论 -
求二进制数中1的个数。
求二进制数中1的个数。解法1:对于二进制操作,除以一个2,如果除的过程中有余,那么就表示当前位置有一个1。考虑利用整型数据除法的特点,通过相除和判断余数的值来分析。int Count ( BYTE v ){int num = 0;while(v){if(v%2 == 1)num++;v = v/2;}return num;}解法2:对解法1进行改原创 2013-07-01 09:11:56 · 980 阅读 · 0 评论 -
求最大公约数。考虑两个正整数都很大的情况。
求最大公约数。考虑两个正整数都很大的情况。欧几里得辗转相除法求最大公约数:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。如:f(42,30) = f(30,12) = f(12,18) = f(12,6) = f(6,6) = f(6,0)即:f(x,y) = f(y, x%y) (x >= y > 0) 或f(x,y)=f(x-y, y).解法1:直接用代码来实现原创 2013-07-01 09:14:20 · 642 阅读 · 0 评论 -
求数组的子数组之和的最大值。
求数组的子数组之和的最大值。解法1:分治法,将所给数组A[0],…A[n-1]分为长度相等的两段数组A[0],…,A[n/2-1]和A[n/2],…,A[n-1],分别求出这两段数组各自的最大子段和,则原数组的最大子段和为以下三种情况的最大值:1. A[0],…A[n-1]的最大子段和与A[0],…,A[n/2-1]的最大子段和相同;2. A[0],…A[n-1]的最大子段和与A[n/原创 2013-07-01 09:15:34 · 927 阅读 · 0 评论 -
依赖、关联、聚合、组合的区别。
依赖、关联、聚合、组合的区别。依赖:Uses a。这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;比如类B作为参数被类A在某个method方法中使用;关联:Has a。这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能原创 2013-07-01 00:17:00 · 539 阅读 · 0 评论 -
char a=255;
char a=255; sizeof(++a)=?(1) a=?(-1)原创 2013-07-01 00:15:09 · 2056 阅读 · 0 评论 -
求数组第二小的数的函数
求数组第二小的数的函数定义2个临时变量temp1,temp2,分别用来存储数组中的第一个(a[0])跟第二个元素(a[1]),并且进行相应比较,让temp1存放二者中小的那个值,temp2存放大的。 从数组第3个元素a[2]开始遍历,取值,跟temp2进行对比,如果比temp2小,那需要进一步跟temp1进行比较,倘若比temp1还小,那说明此值是目前已知的最小值,原创 2013-07-01 00:01:02 · 1329 阅读 · 0 评论 -
String类定义
String类定义:class String{ public: String(constchar *str = NULL); // 通用构造函数 String(constString &another); // 拷贝构造函数 ~String(); //原创 2013-07-01 00:01:57 · 723 阅读 · 0 评论 -
Linux文件
Linux文件权限-rwxrwxrwx 1 root root 293 Oct19 21:24 test[文件属性] [连接数] [文件拥有者] [文件所属群组] [文件大小] [最后修改时间] [文件名] Linux目录目录:“/”为根目录。原创 2013-07-01 00:03:21 · 545 阅读 · 0 评论 -
linux命令速记
linux命令速记查询命令信息:man、info关机:shutdown、reboot改变群组:chgrp改变拥有者:chown改变权限:chmodcd 变换目录pwd 显示当前目录mkdir 建立一个新目录rmdir 删除一个内容为空的空目录ls 显示文件名称、属性等cp 复制文件或目录rm 删除文件或目录mv 移动文原创 2013-07-01 00:03:57 · 1175 阅读 · 0 评论 -
Windows程序运行的机制
Windows“进队消息”和“不进队消息”Windows程序中的消息可以分为“进队消息”和“不进队消息”。进队的消息将由系统放入到应用程序的消息队列中,然后由应用程序取出并发送。不进队的消息在系统调用窗口过程时直接发送给窗口。不管是进队消息还是不进队消息,最终都由操作系统通过调用窗口过程函数对消息进行处理。 Windows程序运行的机制每一个Windows应用程序开始执行后,系统都原创 2013-07-01 00:04:23 · 596 阅读 · 0 评论 -
写出斐波那契数列的递归与迭代代码,并分析时间和空间复杂度。
写出斐波那契数列的递归与迭代代码,并分析时间和空间复杂度。斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、…… 用数学公式表示出来就是: F(1)= 1,F(2)=1 (n=1,2) F(n)=F(n-1)+ F(n-2) (n>2)有三种比较常用的求解第n项斐波那契数列的方法:递归法、迭代法、通项原创 2013-07-01 00:10:17 · 4981 阅读 · 1 评论 -
虚函数和纯虚函数的区别是什么?
虚函数和纯虚函数的区别是什么?定义一个函数为虚函数,不代表函数为不被实现的函数,定义它为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现,定义他是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。虚函数有实现,纯虚函数没有方法的实现。包含纯虚函数的类将成为抽象类,不可实例化对象。纯虚函数必循在其子类中进行重写,不原创 2013-07-01 00:10:56 · 576 阅读 · 0 评论 -
生产者-消费者问题
生产者-消费者问题在多道程序环境下,进程同步是一个十分重要又令人感兴趣的问题,而生产者-消费者问题是其中一个有代表性的进程同步问题。下面我们给出了各种情况下的生产者-消费者问题,深入地分析和透彻地理解这个例子,对于全面解决操作系统内的同步、互斥问题将有很大帮助。(1)一个生产者,一个消费者,公用一个缓冲区。定义两个同步信号量: empty——表示缓冲区是否为空,初值为1。原创 2013-07-01 00:11:33 · 859 阅读 · 0 评论 -
free、delete、delete[]
free、delete、delete[]delete汇编化是:call destructor.call delete(void*)->free+一些判断 free就是free delete[]是调相应数量的destructor,delete(void*)一般的内存泄露是来源于destructor少掉了时候。原创 2013-07-01 00:12:24 · 423 阅读 · 0 评论 -
说明链表和数组作为数据的不同组织形式,各自的优缺点。
说明链表和数组作为数据的不同组织形式,各自的优缺点。 数组,在内存上给出了连续的空间。链表,内存地址上可以是不连续的,每个链表的节点包括原来的内存和下一个节点的信息(单向的一个,双向链表的话,会有两个)。 数组优于链表的: A. 内存空间占用的少,因为链表节点会附加上一块或两块下一个节点的信息。 但是数组在建立时就固定了。所以也有可能会因为建立的数组过大或不足引起内存上的问题原创 2013-07-01 00:12:58 · 915 阅读 · 0 评论 -
计算字符串的相似度。
计算字符串的相似度。分析:两个字符串的距离肯定不超过它们的长度之和。考虑如何才能把这个问题转化成规模较小的同样的问题:如果两个串A和B的第一个字符是相同的,则只要计算A[2,…lenA]和B[2,…lenB]的距离就可以了。但是如果两个串的第一个字符不相同,那么进行如下操作:1.删除A串的第一个字符,然后计算A[2,…lenA]和B[1,…lenB]的距离;2.删除B串的第一个原创 2013-07-01 09:16:09 · 675 阅读 · 0 评论 -
登入Linux主机
登入Linux主机在输入账号与密码之后,Linux会:①先查找/etc/passwd中是否有这个账号,如果没有则跳出,如果有则将该账号对应的UID(User ID)与GID(Group ID)读出来。另外,该账号的根目录与shell设定也一并读出。②然后核对密码表。这时Linux会进入/etc/shadow中找出对应的账号与UID,然后核对您刚刚输入的密码与其密码是否相符。③一切妥原创 2013-07-01 00:03:37 · 575 阅读 · 0 评论 -
字符串常量存放在静态存储区
字符串常量存放在静态存储区例:char str1[] = "abc";char str2[] = "abc";const char str3[] = "abc";const char str4[] = "abc";const char *str5 = "abc";const char *str6 = "abc";char *str7 = "abc";char *原创 2013-07-01 09:06:43 · 978 阅读 · 0 评论 -
请在小于99999的正整数中找符合下列条件的数,它既是完全平方数,又有两位数字相同,如:144,676。
题目:请在小于99999的正整数中找符合下列条件的数,它既是完全平方数,又有两位数字相同,如:144,676。用c语言编写(不能用数字转换成字符串)。#include#include//函数havesamenum确认num是否满足条件int havesamenum(int num){ int i=0,j; char a[10] = {0}; while(原创 2013-07-01 09:08:12 · 3597 阅读 · 0 评论 -
VC++中进程间相互通信的十一种方法
VC++中进程间相互通信的十一种方法1、剪贴板Clipboard: 在16位时代常使用的方式,CWnd中提供支持 2、窗口消息 标准的Windows消息以及专用的WM_COPYDATA消息 SENDMESSAGE()接收端必须有一个窗口3、使用共享内存方式(Shared Memory)a.设定一块共享内存区域 b.找出共享内存 c.同步处理(Mutex) d.清原创 2013-07-01 09:08:51 · 862 阅读 · 0 评论 -
Linux编程:创建一个只包含两个函数的小型静态函数库
Linux编程:创建一个只包含两个函数的小型静态函数库库文件的名字总是以lib开头,随后的部分指明这是什么库(如c代表C语言库,m代表数学库)文件名的最后部分以.开始,然后给出库文件的类型:.a代表传统的静态函数库.so代表共享函数库可以通过给出完整的库文件路径名或用-l标志来告诉编译器要搜索的库文件:$ gcc –o fred fred.c /usr/lib/libm.a 或原创 2013-07-01 09:09:01 · 914 阅读 · 0 评论 -
寻找发帖“水王”:由水王ID所发的帖子数超过了总帖子数的一半。
寻找发帖“水王”:由水王ID所发的帖子数超过了总帖子数的一半。最直接的方法,先对所有ID排序,再统计各个ID出现的次数。如果某个ID出现次数超过总数的一半,那么就输出这个ID。这个算法的时间复杂度为O( N*logN + N ) .如果ID列表已经是有序的,也可以不用扫描统计各个ID的出现次数。如果一个ID出现的次数超过总数N的一半,那么无论水王的ID是什么,这个有序的ID列表的第N/2项原创 2013-07-01 09:12:22 · 1080 阅读 · 0 评论 -
寻找最大的K个数
寻找最大的K个数解法1:在元素数量不大的情况下,采用快排或者堆排序对所有元素排序,取前K个,时间复杂度为O( N*logN )+O( K )= O( N*logN ); 采用部分排序算法,如选择排序或交换排序,把N个数中的前K个数排序出来,复杂度为O( N*K ); 具体选择取决于K与logN的大小。解法2:按照快速排序的思路,假设N个数存储在数组S中,从数组S中随机找出一个元素X,把数组原创 2013-07-01 09:14:11 · 696 阅读 · 0 评论 -
寻找数组中的最大值和最小值
寻找数组中的最大值和最小值解法1:遍历两次,分别求出最大值、最小值。需要比较2*N次。解法2:按顺序将数组中相邻的两个元素看成一组,遍历数组,调整每一组中两个元素的顺序,使大的数在偶数位上,小的数在奇数位上。然后分别从奇数位、偶数位上求出最大最小值,总的比较次数为1.5*N次。解法3:不破坏原数组,仍然将数组每相邻两位看成一组,定义两个变量min、max,遍历数组,相邻两位比较,然后得原创 2013-07-01 09:15:03 · 1551 阅读 · 0 评论 -
快速找出一个数组中的两个数字,其和等于给定值。
快速找出一个数组中的两个数字,其和等于给定值。解法1:穷举法,时间复杂度O(N);解法2:变通思路,对数组中的每个数字arr[i]都判别sum-arr[i]在不在数组中。这样就变通为一个查找算法。将数组排序,需要时间O(N*logN)。对于每个arr[i]用二分法查找sum-arr[i]的时间复杂度都为O(logN),总计N*O(logN)+ O(N*logN)= O(N*logN)。原创 2013-07-01 09:15:14 · 4046 阅读 · 0 评论 -
设计队列容器的数据结构,使得返回最大元素的操作时间复杂度尽可能的低。
设计队列容器的数据结构,使得返回最大元素的操作时间复杂度尽可能的低。解法1:用传统方式来实现队列,采用一个数组或链表来存储队列的元素,利用两个指针分别指向队尾和队首。如果采用这种方法,那么取最大值的操作需要遍历队列的所有元素。时间复杂度为O(N);解法2:考虑用最大堆来维护队列中的元素。堆中每个元素都有指向它的后续元素的指针。这样,取最大值操作的时间复杂度为O(1),而入队和出队操作的时间原创 2013-07-01 09:16:57 · 1025 阅读 · 0 评论 -
微软2013年笔试题详解及深入
Microsoft下面哪些调用转换支持可变长度参数:A. cdecl B. stdcall C. pascal D. fastcall几种函数调用方式: __cdecl 是C Declaration的缩写,表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参原创 2013-07-02 23:07:51 · 1170 阅读 · 0 评论 -
数轴上从左到右有n个点a[0],a[1]…,a[n-1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。要求算法复杂度为o(n)。
数轴上从左到右有n个点a[0],a[1]…,a[n-1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。要求算法复杂度为o(n)。void maxCover(int* a, int n, int l) { int maxCover = 1; int beginPos = 0, endPos = 1; while (endPos if (a[en原创 2013-07-01 09:04:29 · 2365 阅读 · 0 评论 -
在一个有序数组中,有些元素重复出现。输入一个数值,求此值在数组中重复的次数
在一个有序数组中,有些元素重复出现。输入一个数值,求此值在数组中重复的次数思路有两种:1. upperbound() – lowerbound()2. 使用类似线段树的思想直接统计iterator lower_bound( const key_type &key ):返回一个迭代器,指向键值>= key的第一个元素。iterator upper_boun原创 2013-07-01 00:26:06 · 1448 阅读 · 1 评论 -
socket编程流程
基于TCP(面向连接)的socket编程流程: 服务器端: ①创建套接字; ②将套接字绑定到一个本地地址和端口上; ③将套接字设为监听模式,准备接收客户请求; ④等待客户请求到来;当请求到来后接受连接请求,返回一个新的对应于此次连接的套接字; ⑤用返回的套接字和客户端进行通信;原创 2013-07-01 00:05:03 · 691 阅读 · 0 评论 -
描述TCP中的time_wait 作用及其优缺点?
描述TCP中的time_wait 作用及其优缺点? TCP正常关闭连接的时候,主动关闭的一方会进入TIME_WAIT状态,时间为2MSL(max segment lifetime)。2MSL的存在是为了防止最后一个ack丢失,因为如果丢失的话对端还来得及重传fin。以及防止和下一次连接混淆,TCP实现必须防止某个连接的重复报文在连接终止后出现。2MSL并不是为了防止还有未传完的数原创 2013-07-01 00:05:30 · 1138 阅读 · 0 评论 -
图的邻接表的形式说明及其建表算法
图的邻接表的形式说明及其建表算法 对图的每个顶点建立一个单链表(n个顶点建立n个单链表),第i个单链表中的结点包含顶点Vi的所有邻接顶点。又称链接表。(1)邻接表的形式说明 typedef struct node{//边表结点 int adjvex; //邻接点域 structnode *next; //链域原创 2013-07-01 00:07:47 · 865 阅读 · 0 评论