1.写一个函数,将字符串中的\t 都转换成4 个空格。
#include <string>
using namespace std;
string replaceTab(const string& strSrc)
{//strSrc源字符串,将源字符串中的’\t’转换为4个空格
int i,j;
string strDes;
for (i=0;i<strSrc.length();++i)
{
if(strSrc[i]!='\t')
{
strDes+=strSrc[i];
}
else
{
for(j=1;j<=4;++j)
{
strDes+=' ';
}
}
}
return strDes;
}
int main()
{
string str("I am\tphinecos\t\tbi\t \\tng");
cout<<str<<endl;
cout<<replaceTab(str)<<endl;
return 0;
}
2.如何定义和实现一个类的成员函数为回调函数?
答:成员函数声明为static,如下示例:
typedef void (*FunPtr)(void);
class MyClass
{
public:
//回调函数
static void callBackFun(void)
{
cout<<"callBackFun"<<endl;
}
};
void FunTest(FunPtr pFun)
{
pFun();
}
int main()
{
FunTest(MyClass::callBackFun);
return 0;
}
3.C++里面是不是所有的动作都是main()引起的?如果不是,请举例。
答:全局变量初始化
4.C++里面如何声明const void f(void)函数为C 程序中的库函数?
答:extern “C”
5.下列哪两个是等同的
int b;
A const int* a = &b;
B const* int a = &b;
C const int* const a = &b;
D int const* const a = &b;
答:A表示*a是常量,但指针a可变。B表示指针a是常量,但*a可变。C和D都表示a和*a都是常量,所以C,D是等同的。
6, 内联函数在编译时是否做参数类型检查?
答:内联函数要做参数类型检查, 这是内联函数跟宏相比的优势。
7,数列6,10,18,32,“?”,问“?”是几?
答,54。两次逐差,第一次得到4,8,14,第二次得到4,6,则可以推断下一个差值为8,反推回去得到第一级差下一个是22,再往回推可到原数列下一个是54。
8,7 个人用7 小时挖了7 米的沟,以同样的速度在 50 小时挖50 米的沟要多少人?
答:7个人。由题可得,1人7小时可挖1米,则1人50小时可挖50/7米,则7人50小时可挖7*50/7=50米。
9,某人出70 买进一个x,80 卖出,90 买回,100 卖出,这桩买卖怎么样?
答,赚是赚了,但是利润率变低了。就毛利润来说,每次都赚10,但是开始利润是1/8, 后来是1/10 。但从另外一方面来看, 这个人很有冒险精神,敢高买高卖,不怕套牢。
10,鱼头长9,鱼尾等于鱼头加半个,鱼身等于鱼头加鱼尾,问鱼全长多少?
答:通过简单的二元一次方程可算得,鱼身长36,鱼尾长27,因此鱼全长72.
11,王先生看到一则招聘启事,发现两个公司除了以下条件不同外,其他条件都相同
A 半年年薪50 万,每半年涨 5 万
B 一年年薪 100 万,每一年涨20 万
王先生想去一家待遇比较优厚的公司,他会去哪家?
答:明显是A公司。以2年为例,A公司给的年薪是50+55+60+65=230,B给的是100+120=220,有道是,细水长流呀。
12, 问哪个袋子里有金子?
A 袋子上的标签是这样写的:B 袋子上的话是对的,金子在A 袋子。
B 袋子上的标签是这样写的:A 袋子上的话是错的,金子在A 袋子里。
答:B袋。因为若在A袋,则两句话相互矛盾,因此不成立。
13, 3 个人住酒店 30 块钱,经理找回 5 块钱,服务生从中藏了 2 块钱,找给每人 1 块钱, 3 ×(10-1)+2=29,问这是怎么回事?
答:对顾客来说,他们花了30-3=27元 ;对经理来讲,他只收了30-5=25元;对服务生来讲,他得了5-3=2元 ;就是说,服务生偷了三位顾客2元钱。