面试题
徐煜清
这个作者很懒,什么都没留下…
展开
-
面试题 i++和++i哪个效率更高
#include int main(){ int i=0; int x=0; i++; ++i; x=i++; x=++i; return 0; }简单地比较前缀自增运算符和后缀自增运算符的效率是片面的,因为存在很多因素影响这个问题的答案。考虑内建数据类型的时候,它们的效率差别不大(去除编译器的影响)。考虑自定义数据类型(主要是指类)的情况。此时我原创 2018-01-22 14:58:28 · 827 阅读 · 0 评论 -
面试题-剑指offer-两个队列实现栈
#include #include using namespace std;template class MyStack{public: MyStack(); ~MyStack(); void MyPush(const T& value); T MyPop();private: queue mq1; queue mq2;};template MyStack::原创 2018-01-29 23:38:51 · 132 阅读 · 0 评论 -
面试题-剑指offer-两个栈实现队列
#include #include #include using namespace std;//模板类可以不局限一种数据类型 template class MyQueue{public: MyQueue();//默认构造 ~MyQueue();//默认析构 void appendTail(const T& node);//栈实现队列入队 T deleteHead()原创 2018-01-29 22:34:57 · 139 阅读 · 0 评论 -
面试题-变量引用
#include using namespace std;int main(){ int a = 1, b = 2; int &c; int &d = a; &d = b; int *p; *p = 5; return 0;}1.第9行中,编译错误。声明了一个引用类型的变量c,但是没有初始化。这里出现编译错误,因为引用类型的变量在声明的原创 2018-01-29 21:38:11 · 195 阅读 · 0 评论 -
面试题-联合体的大小
联合体的大小取决于它所有的成员中占用空间最大的一个成员的大小。例1#include using namespace std;//#pragma pack(2) pragma pack(x)可以改变编译器的对齐方式 union u1{ double a; int b;};union u2{ char a[13]; int b;原创 2018-01-28 19:19:59 · 2475 阅读 · 0 评论 -
关于引用和指针
首先最近复习了一下C++中引用的概念。引用在C++中的内部实现是一个常指针。Type& name <–> Type* const name。C++编译器在编译过程中使用常指针作为引用的内部实现,因此引用所占用的空间大小与指针相同从使用的角度,引用会让人觉得只是一个别名,其实有自己的存储空间。这是C++为了实用性而做出的细节隐藏。谈一谈指针和引用的区别。 1.初始化要求不同。引用在创建的同时必须初始原创 2018-02-02 23:05:45 · 292 阅读 · 0 评论 -
面试题中C++中const和static
const(1)const用来定义常量:const定义的常量编译器可以对其进行数据静态类型安全检查。(2)const修饰函数形式参数:当输入参数为用户自定义类型和抽象数据类型时,应该将“值传递”改为“const&传递”,可以提高效率。比较下面两段代码:1 void fun(A a);2 void fun(A const &a); 第一个函数效率低。函数体内产生A类型原创 2018-01-26 19:51:42 · 454 阅读 · 0 评论 -
面试题-编写程序输出2的1000次方
#include int main() { int a[1000] = {0}; //先定义一个足够大的数组 int i,j,k; a[0] = 1; for(i=0; i12; i++) //2的1000次方,所以执行1000次 { for(j=0; j12; j++) //原创 2018-01-26 19:13:50 · 1276 阅读 · 0 评论 -
经典面试题-颠倒字符串单词顺序不变
编写一个C函数,将”I am from Shanghai”倒置为”shanghai from am i”,及将橘子中的单词位置倒置,而不改变单词内部结构。#include #include int Rerverse(char str[],int i)//递归算法 找到'\0'出口 返回一个0 { int k; char ch =str[i]; if(ch==原创 2018-01-26 15:07:54 · 809 阅读 · 0 评论 -
面试题-说明const与#define的特点与区别
说明const和#define的特点及区别我们首先要认识到源程序文件(file.c)到生成可执行文件(file.exe)有四个阶段,预处理、编译、汇编、链接1.编译器处理方式不同#define是在预处理阶段const是在编译阶段运行使用//这边补充一点预处理器根据以#开头的命令,修改原始的程序。比如我们常见的#include 命令告诉处理器读取系统头文件st原创 2018-01-25 21:20:31 · 560 阅读 · 0 评论 -
面试题-旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组中最小的元素。例如:数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小元素为 1 。直接反应出来的是把所有数遍历一边,找出最小的数。但本题一定有特殊性,因为分成了两个递增的子数组。那么,为何不利用头尾指针采取两头往中间的临界值遍历,这种方法大大降低了时原创 2018-02-01 10:03:21 · 188 阅读 · 0 评论 -
面试题-替换空格
题目:请实现一个函数,把字符串中的每个空格替成“%20”。例如输入“we are happy.”,则输出“we%20are%20happy.”。基本思路:先遍历一遍字符串统计字符串中空格的个数并计算出替换之后的字符串的总长度,每替换一个空格,长度增加2,因此替换后字符串的长度对于原来的长度加上空格个数的2倍。如果从头到尾扫描字符串,遇到空格就做替换,必须每次都把空格后面所有的字符都向后原创 2018-01-24 20:18:29 · 153 阅读 · 0 评论 -
面试题-利用指针引用交换字符串
#include <iostream>#include <string>using namespace std;void swap(char *&m,char *&n) { char *temp; temp = m; m = n; n = temp;}int main(){ char *x ="Hello"; char *y ="What's原创 2018-01-31 23:07:42 · 5785 阅读 · 0 评论 -
面试题-二维数组的查找
在一个二维数组中,每一行都按从左到右递增的顺序排序,每一列都按从上到下递增的顺序排序。请完成一个函数,输入一个二维数组和一个整数,判断这个整数是否存在#include using namespace std;bool Find(int matrix[][4],int rows,int columns,int number){ if(matrix!= NULL && rows>0 &原创 2018-01-23 21:33:28 · 162 阅读 · 0 评论 -
面试题-不使用任何中间变量交换两个值的大小
//不使用中间变量如何将a,b值交换 #include void swap1(int &a,int &b){ a=a+b;//使用加减运算符交换 带来的缺点是int类型的范围限制这种交换 一旦值大于2^32值会溢出 b=a-b; a=a-b; }void swap2(int &a,int &b){ a^=b; b^=a; a^=b;}int main()原创 2018-01-23 20:06:46 · 332 阅读 · 0 评论 -
面试题-有符号变量与无符号变量的值转换
#include char getchar(int x,int y){ char c; unsigned int a = x; ( a + y )> 10 ? (c = 1 ): (c = 2 ); return c;}int main(){ char c1 = getchar(7,4); char c2 = getchar(7,3); char c3 = get原创 2018-01-23 19:38:27 · 355 阅读 · 0 评论 -
面试题-关于良好的编码风格
//假设布尔变量名字为flag,它与零值比较标准if语句 //1.1 if(flag == TRUE) if(flag == FALSE) //1.2 if(flag) if(!flag) 第二种风格较良好。**不可将布尔变量直接与TRUE、FALSE进行比较 因为不同的编译器下对TRUE的值定义不同 --------------------------------原创 2018-01-23 19:11:39 · 1586 阅读 · 0 评论 -
笔试题库1
完美世界笔试题输入一个字符串,要求输出字符串中字符所有的排列,例如输入"abc",得到"abc","acb","bca","bac","cab","cba"next_permutation的函数声明:#include bool next_permutation( iterator start, iterator end);next_permutation函数的返回值原创 2018-01-20 11:35:57 · 152 阅读 · 0 评论 -
指针赋值,加减,比较
#include <stdio.h>int main(){ char a[] = "hello, world"; char *ptr = a; printf("%c\n",*(ptr+4)); printf("%c\n",ptr[4]); printf("%c\n",a[4]); printf("%c\n",*(a+4)); *(ptr+4) +=原创 2018-02-07 16:19:22 · 788 阅读 · 0 评论