C++
Penguinbupt
会飞的企鹅
展开
-
找第二大的数
int [] a = new int[]{2,2,7}; int max = 0; //最大的 int max2 = 0; //第二大的 if(a[0] > a[1]){ max = a[0]; max2 = a[1]; }else { max = a[1]; max2 = a[0]; } for (int i = 2; i i转载 2015-12-07 23:55:56 · 615 阅读 · 0 评论 -
100盏灯的问题(C语言实现)
有100盏灯,从1~100编上号,开始时所有的灯都是关着的,第一次,把所有编号是1的倍数的灯的开关状态改变一次;第二次,把所有编号是2的倍数的灯的开关状态改变一次;第三次,把所有编号是3的倍数的灯的开关状态改变一次;以此类推,直到把所有编号是100得倍数的灯的开关状态改变一次。问,此时所有开着的灯的编号?// 有100盏灯,从1~100编上号,开始时所有的灯都是关着的, //原创 2015-11-06 17:53:42 · 2410 阅读 · 0 评论 -
去除字符串中的空格
去除字符串中的所有空格:#includevoid del_blank(char *s){ char *p=s; while(*p!='\0'){ if(*p!=' '){ *s++=*p; } p++; } *s='\0';}int main(){ char str[原创 2015-11-05 00:12:30 · 831 阅读 · 0 评论 -
凯撒加密caesar
凯撒加密(Caesar cipher)是一种简单的消息编码方式:它根据字母表将消息中的每个字母移动常量位k。举个例子如果k等于3,则在编码后的消息中,每个字母都会向前移动3位:a会被替换为d;b会被替换成e;依此类推。字母表末尾将回卷到字母表开头。于是,w会被替换为z,x会被替换为a。#includeint main(){ char c; while((c=ge原创 2015-10-01 21:17:36 · 1748 阅读 · 0 评论 -
C++片段
#include#include#includeint main(){ int count=0,i=0; char c; char *p = NULL; while((c=getchar())!= '\n' ){ ++count; p = (char*)realloc(p,count); p[i++] = c; } p[i]='\0'; printf("%d\n原创 2015-10-17 08:59:09 · 449 阅读 · 0 评论 -
运算符的优先级和结合性
在标准C语言的文档里,对操作符的结合性并没有做出非常清楚的解释。一个满分的回答是:它是仲裁者,在几个操作符具有相同的优先级时决定先执行哪一个。每个操作符拥有某一级别的优先级,同时也拥有左结合性或右结合性。优先级决定一个不含括号的表达式中操作数之间的“紧密”程度。例如,在表达式a*b+c中,乘法运算的优先级高于加法运算符的优先级,所以先执行乘法a*b,而不是加法b+c。但是,许多操作符的优先转载 2015-08-23 10:27:42 · 632 阅读 · 1 评论 -
光棍的yy
#include#include#includeusing namespace std;int a[210][101];int count(){ int i,j,q,p; memset(a,0,sizeof(a)); a[1][0]=a[2][0]=1;a[3][0]=2;a[4][0]=3;a[5][0]=5; for(i=6;i<=202;++i){ p=q=0转载 2015-11-09 00:49:14 · 2019 阅读 · 0 评论 -
C语言中的printf和scanf函数说明
1, printf(格式控制,输出表列);关于格式控制,包括 1.格式说明和2,普通字符普通字符:按原样输出,比如空格,逗号,换行符都是普通字符格式说明:就是 %d %o %x %s %f等等类似,其余就是普通字符普通字符按照原样输出,格式说明按照格式输出即可例如: printf("%d%d%d",a,b,c); printf("%d %原创 2015-09-27 20:35:22 · 897 阅读 · 0 评论 -
天地融面试题
1、[cpp] view plaincopyint a; #define M(x,y) (x/y) a = M(4+2, 3) a=? 这是考察宏定义的知识,宏定义就是简单的替换。M(4+2, 3)的展开式为4+2/3。所以a=4。下面的这两个例子可能有助于更好的理解:#define m(x) x*x*(x+1) int a=2,转载 2015-12-02 00:46:23 · 1128 阅读 · 0 评论 -
C++面试一
这些东西有点烦,有点无聊。如果要去C++面试就看看吧。几年前网上搜索的。刚才看到,就整理一下,里面有些被我改了,感觉之前说的不对或不完善。 1.求下面函数的返回值( 微软)int func(x) { int countx =0;while(x) { countx ++; x = x&(x-1);} return countx;转载 2015-12-31 13:10:39 · 535 阅读 · 0 评论 -
LRU算法
LRU算法,缺页是什么概念?怎么计算缺页次数?有一个虚拟存储系统,分配给某个进程3 页内存(假设开始时内存为空),页面访问序列是:2,3,2,1,5,2,4,5,3,2,5,2.若采用LRU 页面淘汰算法,缺页次数为()根据LRU算法,需要替换上次使用距现在最远的页面.首先2,3,2这三页进入内存(进程只分配到3个页面,切顺序为由内到外,第二个2进入时不缺页,所以共缺页2次转载 2015-11-01 20:47:25 · 675 阅读 · 0 评论 -
C++转换
#include #include using namespace std;int main(void){ cout int x = 0; cin >> x; cout cout cout cout bool y = false; cin >> y; cout原创 2015-09-24 18:35:02 · 392 阅读 · 0 评论 -
求2进制中的1的个数
求下面函数的返回值(微软)int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 假定x = 9999。 答案:8思路:将x转化为2进制,看含有的1的个数。转载 2015-10-11 22:38:18 · 435 阅读 · 0 评论 -
全排列递归算法
递归实现 例如,如果集合是{a,b,c},那么这个集合中元素的所有排列是{(a,b,c),(a,c,b),(b,a,c),(b,c,a),(c,a,b),(c,b,a)},显然,给定n个元素共有n!种不同的排列,如果给定集合是{a,b,c,d},可以用下面给出的简单算法产生其所有排列,即集合(a,b,c,d)的所有排列有下面的排列组成: (1)以a开头后面跟着(b,c原创 2015-10-25 11:48:37 · 1089 阅读 · 0 评论 -
字符输入和输出(代码片段)
将一个字符串存入数组#include#include#includeint main(){ int count=0,i=0; char c; char *p = NULL; while((c=getchar())!= '\n' ){ ++count; p = (char*)realloc(p,count); p[i++] = c; } p[i]='\0';原创 2015-10-25 11:53:04 · 524 阅读 · 0 评论 -
多线程
转自http://www.cnblogs.com/skynet/archive/2010/10/30/1865267.html线程?为什么有了进程还需要线程呢,他们有什么区别?使用线程有什么优势呢?还有多线程编程的一些细节问题,如线程之间怎样同步、互斥,这些东西将在本文中介绍。我在某QQ群里见到这样一道面试题:是否熟悉POSIX多线程编程技术?如熟悉,编写程序完成如下功能:1)转载 2015-07-30 16:06:33 · 403 阅读 · 0 评论 -
C++多态
多态的这个概念稍微有点模糊,如果想在一开始就想用清晰用语言描述它,让读者能够明白,似乎不太现实,所以我们先看如下代码: //例程1 #include iostream> using namespace std; class Vehicle { public: Vehicle(float speed,int total)转载 2015-08-23 19:49:34 · 444 阅读 · 0 评论 -
C++继承的访问规则
先看代码: 这是一个继承的访问规则的问题下面代码通过Windows7下的Dev C++的正常运行#include class base{ private: int x; public: void setx(int n){ x=n; } void showx(){ cout };class derived:private ba原创 2015-07-23 13:03:11 · 631 阅读 · 0 评论 -
C语言中的预处理命令
预处理指令1.在源程序编译之前,先进行一些特殊的预处理指令作解释,产生一个新的源程序(这个过程称为编译预处理),之后在进行通常的编译。2.为了区别预处理指令和一般的C语言,所有预处理指令都是以 # 开头,并且结尾无分号3.预处理指令可以出现在程序的任何位置,它的作用范围是从它出现的位置到文件尾。4.C语言的预处理指令有:宏定义,文件包含,条件编译宏定义:原创 2015-07-04 19:01:42 · 656 阅读 · 0 评论 -
c++ main函数
main()是标准C++的函数入口。标准C++的程序入口点函数,默认字符编码格式ANSI函数签名为:int main();int main(int argc, char* argv[]);_tmain()是微软操作系统(windows)提供的对unicode字符集和ANSI字符集进行自动转换用的程序入口点函数。函数签名为:int _tmain(int argc, TCH原创 2015-07-11 11:33:55 · 578 阅读 · 0 评论 -
C++引用
C++引用引用包括 指针的引用 和 变量的引用 ,这两种引用指针的引用:即就是指针的别名 int *&a; // &a说明是a是一个引用,再加上*,说明它是一个指针的引用,即指针的别名,于是使用 *a就可以访问到实参的值了 分析此类语句时,先看a前紧跟的是什么,它决定了a的类型变量的引用:即就是变量的别名 in原创 2015-06-10 14:12:57 · 293 阅读 · 0 评论 -
sizeof和strlen区别与不同
sizeof是一个操作符,返回的结果为 size_t (typedef unsigned int size_t;)sizeof的参数可以是数据类型,也可以是变量,无论是变量还是数据类型,都会转化为数据类型作为参数,因为在C语言中变量是有类型的。发生在编译时候就计算出了sizeof结果sizeof计算的是数据类型占内存的大小数组做sizeof参数不退化。原创 2015-06-30 11:18:42 · 482 阅读 · 0 评论 -
在C语言中的字符串(二)
在C语言中,单引号和双引号的含义不一样,有着本质的区别。字符:用单引号括起来的一个字符代表一个整数,一个整数,一个整数,重要的事情说三遍字符串:用双引号括起来的字符,代表的是一个指向无名数组起始地址的指针,该数组被双引号内的字符及一个额外的为'\0'的字符初始化。'a'是字符a,其16进制为0x61"a"的意思是一个字符串,有两个元素,一个字符'a',另一个是'\0'原创 2015-06-30 10:20:32 · 603 阅读 · 0 评论 -
指针
如果在程序中定义了一个变量,在对程序进行编译的时候,系统就会给这个变量分配内存单元内存区的每一个字节有一个编号,这就是“地址” , 在程序中一般是通过变量名来对内存单元进行存取操作的,其实编译后已经将变量名转换为变量的地址,对变量值得存取都是通过地址进行的(即变量名与地址都是在编译时候决定的)一个变量的地址称为该变量的指针,即 指针==地址指针变量:是一个存放地址的原创 2015-06-25 16:29:50 · 410 阅读 · 0 评论 -
OC关键字@Category@property@synthesize
类目(Category)的基本概念 封装是面向对象的一个特征,oc也不例外,但是有的时候我们会碰到一种情况,比如我们封装了一个类,不想再动它了,但是我们又需要在那个类中增加一个方法,这时候我们就不必在那个类中做修改或者再定义一个它的子类,只需要添加一个类目(Category)即可。 (1)在类目中定义的方法,会成为原始类的一部分,与其他方法的调用没有区别原创 2015-07-17 10:57:14 · 461 阅读 · 0 评论 -
typedef理解(深入)
typedef void (*func)(void);func表示一个指向函数的指针类型的名字,该指针类型为”指向返回void类型并且无参数的函数的指针“可以使用函数名对函数指针进行初始化:func是一个函数指针,可以看容易理解的例子 typedef int arr5[5]; typedef arr5* p_arr5;原创 2015-07-29 23:03:09 · 533 阅读 · 0 评论 -
派生类规则
派生类:1.声明为指向基类对象的指针可以指向它的公有派生的对象,但不允许指向它的私有派生的对象 class base{ //function } class derive:private base{ //function } void main(){ base op1,*原创 2015-08-04 15:29:45 · 798 阅读 · 0 评论 -
初始化列表和构造函数
const的数据成员需要用初始化列表,不能用普通的构造函数体内部进行初始化。栈区:内存由系统来分配和释放堆区:内存由程序员自己来分配和释放的全局区常量区代码区:方法构造函数与类同名构造函数没有返回值构造函数可以进行重载当用户没有定义构造函数时,编译器自动生成一个构造函数初始化列表原创 2015-07-22 01:55:21 · 571 阅读 · 0 评论 -
内存管理
今天再次和朋友讨论内存的问题,发现每个人对这块的理解都会存在一定的偏差,认真的将CC上内存管理的模块看了一遍,结合自己的理解做了适当的调整。让自己对内存的理解更清晰一点。一、基本原理1、Objective-C的对象生成于堆之上,生成之后,需要一个指针来指向它。ClassA *obj1 = [[ClassA alloc] init];2、 Objective-C的对象在使用完成之转载 2015-07-22 17:41:37 · 382 阅读 · 0 评论 -
C++中的this指针
this指针的含义及其用法: 1. this指针是一个隐含于每一个成员函数中的特殊指针。它指向正在被该成员函数操作的那个对象。2. 当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含使用this指针。3. 当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针。 4. 在原创 2015-08-13 21:41:43 · 466 阅读 · 0 评论 -
C++引用
引用:1)引用的声明一定要初始化2)定义了a的引用b后,相当于一个变量有两个名字:原变量a和引用变量b 不能再把该引用b作为其他变量的别名3)声明了引用b,并不是又新定义了一个变量,它只是a的别名,不是一种数据类型,并不存储单元。所以求引用b的地址就是求原变量a的地址。4)没有数组的引用,因为数组不是单个元素,所以无法给若干元素定义一个别名引用有什么作用:原创 2015-07-21 13:51:18 · 343 阅读 · 0 评论 -
BOOL和bool区别
一、1、类型不同BOOL为int型bool为布尔型2、长度不同bool只有一个字节BOOL长度视实际环境来定,一般可认为是4个字节3、取值不同bool取值false和true,是0和1的区别BOOL取值FALSE和TRUE,是0和非0的区别 二:bool是标准C++数据类型,可取值true和false。单独占一个字节,如果数个bool对象列在一起,可转载 2015-07-30 14:44:04 · 463 阅读 · 0 评论 -
Linux Socket编程
转自http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html#3234212网络中进程之间如何通信?2、Socket是什么?3、socket的基本操作3.1、socket()函数3.2、bind()函数3.3、listen()、connect()函数3.4、转载 2015-07-30 16:12:28 · 314 阅读 · 0 评论 -
在C语言中的字符串
1.如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。2.如果花括号中提供的初值个数(即字符个数)大于数组长度,则按语法错误处理。3.如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定位 空字符 即'\0'char c[10]={'c',' ','p','r','o','g','r','a','m'}; 这个字符数组一共有9原创 2015-06-21 15:06:29 · 708 阅读 · 0 评论