摘要: 1、已知n个人(以编号1,2,3,...,n分别表示)围坐在一张圆桌周围,从编号为k的人开始报数,数到m的那个人出列,他的下一个人又从k开始报数,数到m的那个人出列,依次重复下去,直到圆桌的人全部出列。试用C++编写实现。 解析:本题就是约瑟夫环问题的实际场景,要通过输入n、m、k三个正整数,求出列的序列。这个问题采用的是典型的循环链表的数据结构,就是将一个链表的尾元素指针指向队首元素: p->link=head; 解决问题的核心步骤如下: (1)建立一个具有n个链节点、无头节点的循环链表。 (2)确定第一个报数人的位置。 (3)不断的从链表中删除链节点,直到链表为空。 答案:#incl 阅读全文
posted @ 2011-11-07 21:31 it笨笨 阅读(10512) 评论(13) 推荐(0) 编辑
摘要: 接下来我会介绍C++面试题中第二个重要的板块——数据结构,主要包括字符串的使用、堆、栈、排序方法等,今天我们先来看单链表。 1、编程实现一个单链表的建立/测长/打印。 答案: #include<iostream>using namespace std;//单链表结构体typedef struct student{ int data; struct stud... 阅读全文
posted @ 2011-11-06 23:07 it笨笨 阅读(22575) 评论(6) 推荐(2) 编辑
摘要: 整个C++程序设计全面围绕面向对象的方式进行。类的继承特性是C++的一个非常重要的机制。继承特性可以使一个新类获得其父类的操作和数据结构,程序员只需在新类中增加原有类没有的成分。 在面试过程中,各大企业会考量你对虚函数、纯虚函数、私有继承、多重继承等知识点的掌握程度,因此就有了我们这一节的内容,开始吧。 1、以下代码的输出结果是什么? #include<iostream>... 阅读全文
posted @ 2011-11-06 10:22 it笨笨 阅读(5613) 评论(5) 推荐(0) 编辑
摘要: 说到面向对象,大家第一反应应该就是它的三大特性:封装性、继承性和多态性。那么我们先简单的了解一下这三大特性: (1)封装性:封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 在C++中类中成员的属性有:public, protected, private,这三个属性的访问权限依次降低。 (2)继... 阅读全文
posted @ 2011-11-04 20:52 it笨笨 阅读(9547) 评论(1) 推荐(2) 编辑
摘要: 1、下面这个程序测试会有什么结果? #include<iostream>using namespace std;void GetMemory(char *p,int num){ p=(char *)malloc(sizeof(char) * num);}int main (){ char *str = NULL; GetMemory(str,100); strcpy(str,"hello"); ... 阅读全文
posted @ 2011-11-04 14:42 it笨笨 阅读(3331) 评论(4) 推荐(3) 编辑
摘要: 指针是C系语言的特色。指针是C++提供的一种颇具特色的数据类型,允许直接获取和操纵数据地址,实现动态存储分配。 指针问题,包括常量指针、数组指针、函数指针、this指针、指针传值、指向指针的指针等,这些问题也是各大公司常备考点,下面让我们一起学习其中的重点与难点。1、指针与引用的区别?答案:(1)非空区别。在任何情况下都不能使用指向空值的引用。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用。不存在指向空值的引用. 阅读全文
posted @ 2011-11-03 18:39 it笨笨 阅读(6784) 评论(7) 推荐(1) 编辑
摘要: 大四了,开始找工作了,发现很多公司软件开发类的笔试题都是考C++的,所以最近总结一下看到的一些题。 然而,预处理、const和sizeof问题是C++语言中的几个重点也是难点,也是各大企业不论是笔试还是面试都喜欢出的题型,下面是个人从网上和书籍中收集或总结的一点资料。希望能跟和我一样在辛苦找工作的同学们共同分享,也愿以下资料能帮到你找到合适满意的工作。1、用预处理指令#define声明一个常数,用以表明一年中有多少秒(忽略闰年的问题)解析:1.#define语法的基本知识(例如,不能以分号结束,括号的使用等) 2.要懂得预处理器将为你计算常数表达式的值,因此,写出你是如何计算一年中有多少秒而. 阅读全文
posted @ 2011-11-02 10:39 it笨笨 阅读(3922) 评论(4) 推荐(0) 编辑
摘要: 本质的区别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。那我们看看下面的语句能否互换:1.static readonly TestClass test1=new TestClass();2.static readonly TestClass test2=null;3.static readonly a=20*b; static readonly b=2;4.static readonly int[] array=new int[]{1,2,3,4,5};5.void... 阅读全文
posted @ 2011-11-01 20:45 it笨笨 阅读(570) 评论(0) 推荐(0) 编辑
摘要: 题目:给定一个整数列(可能有负数),求该整数列每个子序列的和的最大值,如果都为负数则结果为0;例如:对于输入:-2,11,-4,13,-5,-2 ,答案为20(从11 到 13,即就是:11+(-4)+13=20 )粗略代码如下(代码已测试通过):#include <iostream>using namespace std;//arr:目标数组,length:数组长度//方法一:复杂度为:O(N^3)int maxSubSum1(const int arr[],int length){ int maxSum=0; for(int i=0;i<length;i++) { for 阅读全文
posted @ 2011-10-23 11:24 it笨笨 阅读(507) 评论(0) 推荐(0) 编辑
摘要: 1.快速排序快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。下面来看代码View Code #include<iostream>using namespace std;//str:所要排序的字符串地址//left:排序起始位索引//right:排序结束位索引void QuickSort1(string &str,int left,int right){ i 阅读全文
posted @ 2011-10-23 09:26 it笨笨 阅读(802) 评论(0) 推荐(0) 编辑