
C++
ruo-lin
这个作者很懒,什么都没留下…
展开
-
指针和引用的区别
指针,传地址方式;引用,所指对象的别名,对它的操作就是对实参的操作。指针在使用过程中,可以对其重新赋值;引用在使用过程中自始至终指向初始化时所指,一般使用过程中不会改变。引用必须有所指向,即声明的同时初始化,即不能有空引用;指针可以为空,这也使得它在使用过程时总要受到检查,防止为空。原创 2017-04-24 09:57:35 · 158 阅读 · 0 评论 -
把一个整数转换成8进制输出
方法一:利用递归,如123,f(123)——f(15)——f(1)void f(int n){if(n==0)return;else if(n){f(n/8); //余数cout}}方法二:利用栈,依次压入3、7、1,先进后出,输出173void f(int n){stacks;while(n){s.push(原创 2017-08-14 20:51:11 · 5213 阅读 · 0 评论 -
需要初始化的几种
int a;int *p=a; *p=3; //指针必须有指向,才能赋值。int &m=a; //引用必须非空,声明同时初始化const int b=1; class A //静态数据成员,类内声明,类外初始化。{ static float a;};float A::a=0.0;原创 2017-08-14 17:15:37 · 220 阅读 · 0 评论 -
不使用判断,找出两个数中的较大者
c=((a+b)+abs(a-b))/2;原创 2017-08-14 16:59:27 · 379 阅读 · 0 评论 -
理解cout“从右至左入栈”
理解cout计算参数时是从右至左入栈。自增运算符的优先级高于*。所以*++p不加括号,也相当于*(++p)int main(){int a[5]={6,7,8,9,10};int *p=a; *(p++)+=123;//先取值用于赋值运算-->再自增:(*p=*p+123,p++),此时p指向7cout return 0;原创 2017-08-14 16:52:12 · 1033 阅读 · 2 评论 -
for循环的认识
for(表达式1;表达式2;表达式3){循环体}://若1为真,执行2,若2为真,执行循环体,然后执行3,返回表达式2;//若2为假,循环结束。注意:(表达式1)&&(表达式2),表达式1为真,才执行表达式2。 自增运算符的优先级大于!int main(){int a,x;for(a=0,x=0;a{a++;}co原创 2017-08-14 16:46:15 · 367 阅读 · 0 评论 -
举例加深对补码运算的认识
为了方便用一套电路实现全部整数的加法——计算机以补码的形式存储数据:正数:原码和补码一样。负数:原码转补码取反加一:即符号位不变,其他各位取反,然后加1;说明:16-8=16+(-8)(0001 0000)+(1000 1000)=(1001 1000) //-24补码:(0001 0000)+(1111 1000)=(10000 1000) //原创 2017-08-14 16:37:53 · 582 阅读 · 0 评论 -
关于自增运算符
int main(){ int x=1; x++; cout return 0;}int main(){ int x=1; cout return 0;}int main(){ int x=1; cout return 0;}原创 2017-08-14 15:42:55 · 216 阅读 · 0 评论 -
华为机试-蛇形矩阵
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。样例输入5样例输出1 3 6 10 152 5 9 144 8 137 1211此题考查: 1、如何控制下标i、j,使数值以“上三角”的形式输出。 2、数值本身和下标的关系。代码如下:int main() { int n; while(cin>>n) { int num=1;原创 2017-08-20 21:45:59 · 345 阅读 · 0 评论 -
倒序输出多位整数
int reverse(int num){ int res=0; int sign=1; //区别正负 if(num<0){ sign=-1; num=-num; } while(num){ res=res*10+num%10; num=num/10; }原创 2017-08-18 17:37:51 · 522 阅读 · 0 评论 -
程序员面试宝典—不使用中间变量实现交换
引用,不会产生实参的副本; 相比指针,可读性好些。void swap(int &a,int &b){ a=a^b; b=a^b; //a^b^b=a,也就把a赋给b a=a^b;}优点:不用担心(a+b)超界(a=a+b;b=a-b;a=a-b;);原创 2017-08-18 17:29:44 · 177 阅读 · 0 评论 -
计算二进制形式中1的个数的经典算法
int main(){ int count=0,m; cin>>m; while(m) { count++; m=m&(m-1); } cout<<count<<endl; return 0;}在不使用循环的前提下,还可以判断一个数是否为2的幂次:if(!((x-1)&x)) cout<<"yes"<<原创 2017-08-18 17:26:50 · 343 阅读 · 0 评论 -
break和continue的使用
break:switch结构中,使用break跳出; 循环结构,用beak语句结束循环,若是嵌套循环,只能结束本层循环。 continue:跳过continue之后的其他语句,结束本次循环(不是本层),转去判断循环控制条件,以决定是否进行下次循环。例:输出0~100内不能被4整除的数 int main(){ int i; for(i=0;i<100;i+原创 2017-08-18 17:18:35 · 237 阅读 · 0 评论 -
sizeof()常考
“字节对齐“结 构体的长度一定是最长的数据元素的整数倍。struct s{int a;char b;double c;};sizeof(s)=16=(4+4+8);//系统不给形参的数组分配内存char var[10];int f(char var[]){ return sizeof(var);//输出4}//空类原创 2017-04-26 13:39:50 · 267 阅读 · 0 评论 -
回文串判断
bool f(string a){ int len=a.size();int i=0;while(i{if(a[i]!=a[len-1-i])return false;elsei++;} return true;}int main(){ string str; while(cin>>str原创 2017-08-14 21:22:09 · 1025 阅读 · 0 评论