C++ Exercises(十九)

简介:
1.写一个函数,将字符串中的\t 都转换成4 个空格。

复制代码
#include <iostream>
#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元钱。



本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2009/02/20/1394622.html,如需转载请自行联系原作者
目录
相关文章