一个无聊的面试题
2011-01-04 13:22
162 查看
公司糟了灾,年底了还要去找工作,真是流年不利啊。面试题啥的,向来是很反感的,有啥意义呢?哎~~,世道如此,只好把面经啥的又捧起来看了,烦啊。
题目很简单了,就是打印下面这种样式的字符,主要的逻辑很简单,可是面经上的解答实在不给力啊,直接就main里一个for就打印出来,这不是骗小孩么,也不知道那时候买这个干嘛,不过那会刚毕业,也差不多是个小屁孩了。往简单了想,变化点有三个,一个是打印的行数,一个是打印到什么位置,一个是打印的花纹,OO啥的不折腾了,就用C风格写下算了。
打印的风格函数用回调函数来隔离变化,比如上面的图里第一行是有星号,没点号的。需求变化的话,可以变成从第一行开始就有点号,第二行有两个点这样依次。关于打印的位置,这里就用c++流里的基类函数ostream,ofstream因为是派生自它的,而<< 是虚函数。看代码:
最后在屏幕上打印出:
在文件里打印出:
*.
*..*..
*...*...*...
*....*....*....*....
*.....*.....*.....*.....*.....
*......*......*......*......*......*......
*.......*.......*.......*.......*.......*.......*.......
题目很简单了,就是打印下面这种样式的字符,主要的逻辑很简单,可是面经上的解答实在不给力啊,直接就main里一个for就打印出来,这不是骗小孩么,也不知道那时候买这个干嘛,不过那会刚毕业,也差不多是个小屁孩了。往简单了想,变化点有三个,一个是打印的行数,一个是打印到什么位置,一个是打印的花纹,OO啥的不折腾了,就用C风格写下算了。
打印的风格函数用回调函数来隔离变化,比如上面的图里第一行是有星号,没点号的。需求变化的话,可以变成从第一行开始就有点号,第二行有两个点这样依次。关于打印的位置,这里就用c++流里的基类函数ostream,ofstream因为是派生自它的,而<< 是虚函数。看代码:
typedef void (*PrintUnit) (int rowNum, ostream* out); void PrintUintWithStyle1(int rowNum, ostream* out) { //print star * (*out)<<'*'; for (int i=0; i<rowNum; i++) { (*out)<<'.'; } } void PrintUintWithStyle2(int rowNum, ostream* out) { //print star * (*out)<<'*'; for (int i=0; i<rowNum+1; i++) { (*out)<<'.'; } } void PrintRows(int rows, PrintUnit fp, ostream* out) { for(int i=0; i<10; i++) { for(int k=0; k<i+1; k++) { fp(i, out); } (*out)<<endl; } } void Print10RowsWithStyle1ToStdout() { PrintRows(10, PrintUintWithStyle1, &cout); } void Print10RowsWithStyle2ToFile() { ofstream fout("1.txt"); PrintRows(10, PrintUintWithStyle2, &fout); } int main(int argc, char* argv[]){ Print10RowsWithStyle1ToStdout(); Print10RowsWithStyle2ToFile(); return 0; }
最后在屏幕上打印出:
在文件里打印出:
*.
*..*..
*...*...*...
*....*....*....*....
*.....*.....*.....*.....*.....
*......*......*......*......*......*......
*.......*.......*.......*.......*.......*.......*.......
相关文章推荐
- 一个经典的面试题
- 一个so无聊的ie6问题
- 网易面试题之 牛牛的作业薄上有一个长度为 n 的排列 A,这个排列包含了从1到n的n个数,但是因为一些原因, * 其中有一些位置(不超过 10 个)看不清了,但是牛牛记得这个数列顺序对的数量是 k,
- 面试题:两个无序数组合并成一个有序数组
- 一个软件面试题(直接入手和分析后)
- 《招聘一个靠谱的iOS》面试题参考答案(上)
- 【C++面试题】:用两个队列模拟一个栈
- 淘宝面试题:有一个一亿节点的树,现在已知两个点,找这两个点的共同的祖先。
- 一个SQL面试题
- C语言:【面试题】在二维数组中,每行每列都按照递增的顺序排序,判断数组中是否包含一个数。
- 谷歌八道面试题--【1】求一个满足要求的数组
- Google面试题之设计一个包含min函数的栈
- 无聊做了一个TCP的我画你猜
- 那天在CSDN上看到一个网友在华为遇到的面试题是一道乘法题看似简其实并不是因为它们都超出了数据类型的范围,今天做了下加法希望对大家有所启示
- 如何居中一个浮动的元素--前端面试题
- 一个关于fork()的面试题思路和扩展
- 一个fork的面试题
- 面试题: 已知一个含有n个不同元素的集合,要求打印其所有具有k个元素的子集(不允许有重复的)
- 一个java面试题引发的思考
- 又一个有趣的面试题