今天是第六期了!也总算到第六期了,不管搞什么,都贵在坚持!我还会坚持下去的,直到我找不到
面试来写为止!呵呵!我看,这下子够我喝一壶的了!
今天这篇博文没有前几期的那么有主题,就是今天的这篇博文比较杂,题很多,不是针对某一个知识
点的,但是,每一个知识点,写出来也不够一篇博文的,所以我就把它们写在一起,正好凑成一篇博文!
好了,废话少说,速速进入今天的主题吧!
题目一:
char str[] = "Young";
cout << sizeof(str) << ": ";
char *p = str;
cout << sizeof(p) << ": ";
char i = 10;
cout << sizeof(i) << ": ";
好了,写出答案吧!
正解:输出结果为: 6, 4, 1 。在说点题外话吧,从这题你也可以稍微的看出数组名和指针的某些区别
了吧!
题目二:
在不用到地方参数的情况下,交换两个参数的值。
平时,我们交换两个数的值一般都会用到一个中间变量,现在不能用这个中间变量来解决这个问题!
这就是题目的意思!解决吧!
正解:见代码 #include <iostream> using namespace std; int main() { int a, b; cin>>a >>b; a = a + b; b = a - b; a = a - b; cout<<a<<" "<<b<<endl; }
题目三:
int i=10, j=10, k=3; k*=i+j; k 最后的值是 ?
这道题关键是清楚运算符的优先级。
正解:正解就是你到自己的机子上运行一下吧!哈哈!不能总是看吧,动手试一试!我不告诉你!
题目四:
class A
{
public:
A() { p=this; }
~A() { if(p!=NULL) { delete p; p=NULL; } }
A* p;
};
代码有什么问题?
正解:可能引起无限递归
题目五:
# i nclude “ filename.h ”和# i nclude <filename.h> 的区别 ?
正解:
对于# i nclude <filename.h> 编译器从标准库开始搜索 filename.h
对于# i nclude “ filename.h ”编译器从用户工作路径开始搜索 filename.h
题目六:
内存的分配方式的分配方式有几种 ?
正解:
我有一篇专门是讲这个的博文,可以去看看,答案就在那个里面!
题目七:
实现双向链表删除一个节点 P ,在节点 P 后插入一个节点,写出这两个函数 ;
正解:见我的博文《算法不会,尚能饭否双线循环链表》
题目八:
写一个函数,将其中的 /t 都转换成 4 个空格。
正解:
#include <iostream> using namespace std; void Change(char *); int main() { char *ch = "Guo/tDong Young"; Change(ch); } void Change(char *ch_to_Change) { do { if ('/t' == *ch_to_Change) { cout<<" "; } else { cout<<*ch_to_Change; } }while (*(ch_to_Change++) != '/0'); }
题目九:
完成下列程序
*
*.*.
*..*..*..
*...*...*...*...
*....*....*....*....*....
*.....*.....*.....*.....*.....*.....
*......*......*......*......*......*......*......
*.......*.......*.......*.......*.......*.......*.......*.......
正解: #include <iostream> using namespace std; int main() { for (int i = 0; i < 8; ++i) { for (int j = 0; j <= i; ++j) { cout<<"*"; for (int k = 0; k < i; ++k) { cout<<"."; } } cout<<endl; } }
题目十:
费波那其数列, 1 , 1 , 2 , 3 , 5 ……编写程序求第十项。可以用递归,也可以用其他方法,但要说明
你选择的理由。
正解:
非递归:
#include <iostream> using namespace std; int Phon(int); int main() { int choose = 10; //求第十项的值 cout<<Phon(choose)<<endl; } int Phon(int n) { int a0, a1, a2; int i = 0; a0 = 1; a1 = 1; while (i < n - 2) { a2 = a0 + a1; a1 = a0; a0 = a2; i++; } return a2; }
原因:效率高
递归: #include <iostream> using namespace std; int Phon(int); int main() { cout<<Phon(10)<<endl; } int Phon(int n) { if (1 == n || 2 == n) { return 1; } else { return Phon(n - 1) + Phon(n - 2); } }
原因:代码清晰简洁
好了,就写到这里了!
还有大家一定要注意了,我以上的代码写的比较简单,其实,在真正的面试中是不能这么写代码的。
那你肯定会问我,那么该如何写呢 ?
面试中如何写代码?预知详情,请看下篇博文《面试—每日一题( 7 )》!好了,拜拜!