C++笔试题
C++笔试题
cpp玩家攻略
这个作者很懒,什么都没留下…
展开
-
Cpp面试:堆数据访问快还是栈数据访问快?
堆内存数据和栈内存数据访问原创 2023-06-20 17:05:39 · 493 阅读 · 0 评论 -
Cpp面试题:main函数执行以前,还会执行什么代码?
c++内存分布原创 2023-06-20 14:07:15 · 1260 阅读 · 0 评论 -
C++算法之 一句话判断一个整数是不是2 的整数次方
思路:一个整数如果是2的整数次方,那么它的二进制表示中有且只有一位是1,而其他所有位都是0。把这个整数与这个整数减去1之后进行与运算,那么这个整数当中唯一的1会变为0,这个整数也变为0;代码:// Is2.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;bool is原创 2014-12-18 09:27:18 · 4037 阅读 · 0 评论 -
求一个整数中二进制1的个数
题目:求一个整数二进制表示1的个数 第一版:思路:如果一个整数与1做与运算,结果为1,那么该整数最右边一位是1,否则是0;int NumberOf1(int n){ int count = 0; while (n) { if (n&1)//如果一个整数与1做与运算的结果是1,表示该整数最右边是1,否则是0; { count++; }原创 2014-12-18 08:55:20 · 3712 阅读 · 0 评论 -
C++ 算法之 输入两个整数m n,求计算需要改变m的二进制表示中的多少位才能得到n
思路:先把m与n进行异或运算,再统计异或结果当中的1的个数;异或:相同为0,不同为1; 0^0 = 0; 1^1 = 0; 0^1 = 1; 1^0 = 1;比如10 : 1010 ; 13:1101;10^13 ------> 1 0 1 0 1 1 0 1结果 0 1 1原创 2014-12-18 09:33:20 · 2265 阅读 · 0 评论 -
C++算法之 替换数组空格
题目:请实现一个函数,把字符串中的每个空格替换为"%20",例如输入"We are happy",则输出 "We%20are%20happy" 方法1: 重新申请一个数组,然后遍历原来的数组,遇到空格,就用%20填充新的数组,最后得到结果;缺点:要重新申请数组方法2: 从前往后遍历,遇到空格就把后面的内容向后移动两位;缺点:有些内容会向后移动n次,如果有n个空格,算法时间复杂度为O(n原创 2014-12-22 11:18:43 · 2680 阅读 · 0 评论 -
C++算法之 二维数组的查找
题目:在一个二维数组当中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组当中是否含有该整数。 思路:1 2 8 92 4 9 124 7 10 13 6 8 11 15每一行递增,如果右上角的数字小于要找的数字,那么这一行所有的数字都原创 2014-12-22 14:18:50 · 3427 阅读 · 0 评论 -
实现排序算法,时间复杂度为O(n)
我们常用的排序冒泡排序 O(n^2); 快速排序O(nlogn);堆排序O(nlogn);选择排序O(n^2);我们常用的排序都不符合时间复杂度的要求;经常听说一个说法 用空间代替时间现在要排序的数组为数组 a;例如a数组里面有 1,1,2,2,3,3,2,2,5,5.........等等很多无序的数字那么我们申请一个数组b,假设a数组当中的数字都在100一下;那么我们的b原创 2014-12-23 10:57:56 · 16638 阅读 · 8 评论 -
C++算法之 旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. 我们注意到旋转之后的数组实际上可以划分为两个排序的子数组,而且前面的子数组的元素都大于或者等于后面子数组的元素。我们还可以注意到最小的元素刚好是这两个子数组的分界线。我们试着原创 2014-12-24 10:39:30 · 1086 阅读 · 0 评论 -
C++算法之 左旋转字符串中m个字符
定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部,如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。例子:1:abcdefghim = 3;就是移动abc defghiabc移动过程就是 abc def ghi -------> def abc ghi------> def ghi abc ; 2:abc原创 2014-12-25 10:44:34 · 2059 阅读 · 0 评论 -
C++算法之 数组中出现次数超过一半的数字
题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。看到这个题目,我自己想到的方法:另外申请一个数组B,用来存放该数组A 元素出现的次数,再遍历B数组,出现次数最多的就是;但是这个如果A数组当中的元素有个是1000,那么B数组就要申原创 2014-12-26 11:40:01 · 3871 阅读 · 0 评论 -
C++ 算法之 数组中只出现一次的数字
题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n),控件复杂度为O(1)算法思路:如果一个数组当中,只要一个数字出现一次,其他都是出现两次,那么我们只要把所有的数进行异或得到的就是结果现在有两个数字出现一次,那么我们还是异或所有的数,最后的到的结果就是这两个不想等的数字的异或结果比如 2 4 3 6 3 2原创 2014-12-27 12:43:31 · 2640 阅读 · 0 评论 -
C++ 算法之 第一个只出现一次的字符
题目:在字符串中找出第一个只出现一次的字符,如输入“abaccdeff”则输出‘b’ 思路:采用一个数组记录出现的次数然后再遍历该数组: // Find.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;/*字符char是一个长度为8的数据类型,因此总共有256原创 2014-12-29 17:54:36 · 3341 阅读 · 0 评论 -
C++算法之 合并两个有序链表
题目:合并两个已经排序好的链表方法1:两个链表 比如链表1: 1->3->5->7->9 链表2: 2->4->6->8->10 跟我们合并两个数组一样,链表1的头结点 和链表2的头节点比较,如果链表1头节点的值大于链表2头接点的值, 那么链表2的头结点为合并链表的头结点,那么链表1的头节点继续和链表2的第二个节点(剩余链表2的头结点) 作比原创 2014-12-05 11:39:51 · 25677 阅读 · 0 评论 -
C++算法之 合并两个数组
1:合并排序,将两个已经排序的数组合并成一个数组,其中一个数组能容下两个数组的所有元素; 因为题目当中已经有一个数组可以容的下两个数组的元素,所有不需要请求新的数组,但是要把比较后的数组从后面往前面放;比如有数组A实际5个元素,数组B实际5个元素,那么我们 让a[4]与b[4]比较,把大的那一个放到a[9];比如a[4]>b[4];那么把a[4]放到a[9];再让a[3]与b[4原创 2014-12-04 10:10:27 · 32726 阅读 · 2 评论 -
内存对齐
// 111.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include using namespace std;/* 编译器内存字节对齐的原则1. 数据类型的自身对齐值 数据类型的自身对齐值:其在内存中所占的字节数,如在3原创 2014-12-02 09:13:27 · 836 阅读 · 0 评论 -
找出一个数组当中第二大的数字
题目:找出一个数组当中第二大的数字:原创 2014-11-19 10:34:05 · 1550 阅读 · 2 评论 -
一次性解决static关键字
static关键字的用法:1:static局部变量的特点:a):地址在全局区b):只有在第一次进入函数的时候初始化c):生命期在离开main函数之后结束d):每次进入函数后不会重新进行初始化,保留进入函数之前的初值。void func(){ static int n = 6;//static静态局部变量只在第一次调用该函数时初始化一次,后面调用不会再进行初始化。原创 2014-11-19 13:41:13 · 1153 阅读 · 0 评论 -
类的成员对象变量何时构造
下面代码输出什么:#include using namespace std;class CStudent{ int i;public: CStudent() { cout } ~CStudent() { }};class CManager{ CStudent s1; CStudent s2;public: CMana原创 2014-11-13 20:29:18 · 1092 阅读 · 0 评论 -
编写单向链表
题目:现编写一个简单的单向链表类CList:按照以下类和对象的关系,在CTest类中包含两个CList的对象:在CTest::Menu函数中打印“1、插入,2、打印,3、显示长度”等菜单。可以随时选择对2个链表中的任意一个插入或打印。typedef int DATA;struct SNode{ DATA data; SNode* pNext;};clas原创 2014-11-11 10:57:14 · 874 阅读 · 0 评论 -
C++笔试题深度分析第一波 上
1:32 位机上根据下面的代码,问哪些说法是正确的? ( )signed char a = 0xe0;unsigned int b = a;unsigned char c = a;A. a>0 && c>0 为真B. a == c 为真C. b 的十六进制表示是:0xffffffe0D. 上面都不对原创 2014-10-01 19:56:46 · 1951 阅读 · 5 评论 -
类类型的大小
C++当中空类的大小原创 2014-10-31 15:28:10 · 1288 阅读 · 0 评论