![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试C/C++
文章平均质量分 82
Sunshine_top
安安静静、认认真真完成自己的事情
展开
-
螺旋队列顺时针方向 和逆时针方向的实现
这个博主找规律的部分写得很好,原样放在下面。最后给出了顺时针和逆时针方向的螺旋队列的实现,可以看出它们的差别如此之小。和螺旋队列类似,也是找规律的zigzag数组见这个帖子。螺旋队列的样子如下图:两大规律:1、螺旋规律2、奇数(圈数,或X轴正坐标)平方规律(紫线) 问题描述: 设1的坐标是(0,0),x方向向右为正,y方向向下为正,例如,7的坐标为(原创 2015-01-26 20:05:07 · 6442 阅读 · 0 评论 -
位运算的常见操作和题目
一、位运算基本操作& 与 1 & 1 = 1;1 & 0 = 0;0 & 0 = 0 只有当两个位都为1时,结果为1| 或 1 | 1 = 1;1 | 0 = 1;0 | 0 = 0 只有两个位都为0时,结果为0^ 异原创 2015-06-29 21:04:09 · 5379 阅读 · 2 评论 -
整数的二进制表示中1的个数
给出通常能想到的方式,这两种方式在《C和指针》一书中给出。以下讨论的均为非负整数。/*该方法每次在循环中判断数的二进制最右一位是否为1(如果该数能不能被2整除)。每次循环后该数右移一位。因此遍历了数的二进制表示的每一位。*/int count_one_bits1(int value) { int count; for (count = 0; value != 0; value原创 2015-01-11 21:38:43 · 4667 阅读 · 0 评论 -
sizeof计算类的大小
类的大小——sizeof 的研究(1)C++ 虚函数表解析原创 2015-01-16 19:19:15 · 4361 阅读 · 0 评论 -
C++对象模型:第2章(2)-拷贝构造函数【深拷贝和浅拷贝】
http://blog.csdn.net/bluescorpio/article/details/4322682C++中对象的复制就如同“克隆”,用一个已有的对象快速地复制出多个完全相同的对象。一般而言,以下三种情况都会使用到对象的复制:(1)建立一个新对象,并用另一个同类的已有对象对新对象进行初始化,例如:[cpp] view plaincopyclass原创 2015-01-26 22:12:07 · 2636 阅读 · 0 评论 -
不借助变量交换两个数
交换两个数在排序算法中用的很多:冒泡排序中 、插入排序中等等。正常的交换两个数是借助一个变量tmp:void Swap(int &a, int &b) { int tmp = a; a = b; b = tmp;}在面试题中有这样的题目“不借助第三个变量,交换两个数”//A方法void Swap(int &a, int &b) { a = a + b;b = a - b;原创 2015-03-17 15:36:31 · 2024 阅读 · 0 评论 -
位操作实现加减乘除四则运算
常见的位操作实现1. 常用的一个等式:-n = ~(n - 1) = ~n + 12. 获取整数的二进制的最右边的1:n & (-n) 或 n & ~(n - 1)。例如 n = 010100, -n = 101100,那么n & (-n) = 0001003. 去除整数的二进制的最右边的1:n & (n - 1)。例如 n = 010100,n-1 = 010011,n&(n-1)原创 2015-01-13 18:48:27 · 6145 阅读 · 0 评论 -
字符串的排列/组合
字符串“abc”的全排列:abc acbbacbcacbacab例如字符串“abc”的全排列:以a开头的全排列是a{bc},递归得到bc的全排列,而bc的全排列又是以b开头,c的全排列(即c自己); 同样,以b开头的全排列是b{ac},递归得到ac的全排列,而ab的全排列又是以a原创 2015-06-21 16:01:38 · 2148 阅读 · 0 评论 -
zigzag数组:输入n,求一个nXn矩阵,规定矩阵沿45度递增,形成一个zigzag数组
面试题目:输入n,求一个nXn矩阵,规定矩阵沿45度递增,形成一个zigzag数组(JPEG编码里取像素数据的排列顺序),请问如何用C++实现?(中国台湾著名硬件公司2007年11月面试题)(自程序员面试宝典第四版92页)看了网上的好几篇文章,由于本人 愚钝,未能理解,故自己认真想了想,总结如下。对zigzag数组,可以理解为一个矩阵,分为两部分来解决:右上部分和左原创 2015-01-23 21:10:46 · 5630 阅读 · 0 评论 -
栈和队列的相互模拟
队列是先进先出的数据结构,栈时先进后出的数据结构,可以使用栈和队列模拟彼此。两个队列模拟栈使用C++泛型编程,队列使用STL的queue容器适配器。主要思想:两个队列模拟栈时,某时刻要么两个队列均为空,要么有一个队列为空。(1)向栈中push时:如果两个队列均为空,将元素插入某个队列(这里假定插入队列1);原创 2015-06-18 09:43:40 · 2002 阅读 · 0 评论 -
求一元方程的根(牛顿迭代法)
牛顿迭代公式:那么根据该公式可以按以下步骤求解一元方程的任意次的根(1) 选一个方程的近似根,赋给变量Xn;(2) 将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0;(3) 当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤(2)的计算。若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的x0就认为是方程的根。以下均原创 2015-04-27 09:05:29 · 6109 阅读 · 0 评论 -
华为2015实习上机:字符串排序
可以看出,下面的程序就是一个快速排序算法,只是增加了对非英文字母的字符的处理:快速排序参考文章快速排序的几种常见实现//输入字符串,按照字母的ascii码顺序排序,其他非字母字符在字符串中位置不变//如,输入Wor#d,输出Wdo#r//快速排序实现void QuickStrSort(char str[], int left, int right) { char pivot =原创 2015-04-18 21:40:23 · 4704 阅读 · 8 评论 -
一定要弄懂GetMemory
堆栈栈中分配局部变量空间,是系统自动分配空间。定义一个 char a;系统会自动在栈上为其开辟空间。由于栈上的空间是自动分配自动回收的,所以栈上的数据的生存周期只是在函数的运行原创 2015-01-16 21:30:46 · 3564 阅读 · 0 评论 -
位移操作的另类情况
在32位机器上进行左移操作,int型数a = 1左移32位的结果是什么?在vs2010,以及gcc下编译运行结果均为1,有类似下面的警告。为什么左移32位其值不变?警告:1>------ 已启动生成: 项目: test_C++, 配置: Debug Win32 ------1> test.cpp1>test.cpp(10): warning C4293: “>>”: Shift原创 2015-03-26 09:48:49 · 2418 阅读 · 0 评论 -
不用”if“,”?:“,”switch“或其他判断语句,求两个数中较大的数或较小的数
以下五种方法分别求出较大的数和较小的数的方法。较小数的代码在注释中,但未运行测试。int Find1(int a, int b) { return ((a + b) + abs(a - b)) / 2; //return ((a + b) - abs(a - b)) / 2;}/*当a大于b时,a-b为正,右移sizeof(int) * 8 - 1后,最右侧一位为0,0^1 = 0原创 2015-01-13 21:25:11 · 8033 阅读 · 1 评论 -
《程序员面试宝典》 (x&y) + ( (x^y)>>1 )
《程序员面试宝典》第四版39页的题:int f(int x, int y) { return (x & y) + ((x ^ y) >> 1);}//求f(334 + 995)的值认为作者的思路不太理解的。下面给出我的思路:对于数的二进制&、^运算,某位的运算无非就是三种情况:(1)1与1运算;(2)1与0运算;(3)0与0运算。1与0运算 1&0结果为0原创 2015-01-13 09:22:43 · 3213 阅读 · 0 评论 -
讨论printf和cout的参数调用顺序
这里纠正在网络上看到的几个错误,以下给出正确的观点:(1)printf和cout都是有缓冲机制的。(有人认为printf是没有缓冲区的)(2)printf和cout函数对参数的调用顺序在c/c++中是未定义的。(有人认为它们读入的顺序是由右向左,输出顺序是由左到右,类似于栈)基于以上错误的认识,看下列程序,有人会得到错误的输出的结果。#include #include原创 2015-01-12 21:13:21 · 3861 阅读 · 0 评论 -
extern ”C"的使用
本文分析extern “C”的使用方法;介绍C++和C文件相互调用的方式。extern "C" extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。被extern "C"限定的函数或变量是extern类型的。 extern是C/C++语言中表明函数和全局变量作用范围(可见性)原创 2015-01-15 11:10:08 · 7068 阅读 · 2 评论