测试之道、

发布新日志

  • 测试问题汇总

    2008-08-28 17:45:39

    一、 c笔试题 (字符串反转)

         我没有记错的话是一道MSN的笔试题,网上无意中看到的,拿来做了一下。题目是这样的,给定一个字符串,一个这个字符串的子串,将第一个字符串反转,但保留子串的顺序不变。例如:
    输入:
    第一个字符串: "This is zhuxinquan's Chinese site: http://www.zhuxinquan.com/cn"
    子串:
    "zhuxinquan"
    输出: "nc/moc.zhuxinquan.www//:ptth :etis esenihC s'zhuxinquan si
    sihT"
    一般的方法是先扫描一边第一个字符串,然后用stack把它反转,同时记录下子串出现的位置。然后再扫描一遍把记录下来的子串再用stack反转。我用的方法是用一遍扫描数组的方法。扫描中如果发现子串,就将子串倒过来压入堆栈。
    最后再将堆栈里的字符弹出,这样子串又恢复了原来的顺序。源代码如下:

    #include <iostream>
    #include <cassert>
    #include <stack>
    using namespace std;
    //reverse the string 's1' except the substring 'token'.
    const char* reverse(const char* s1, const char* token)
    {
    assert(s1 && token);
    stack<char> stack1;
    const char* ptoken = token, *head = s1, *rear = s1;
    while (*head != '\0')
    {
    while(*head!= '\0' && *ptoken == *head)
    {
    ptoken++;
    head++;
    }
    if(*ptoken == '\0')//contain the token
    {
    const char* p;
    for(p=head-1;p>=rear;p--)
    stack1.push(*p);

    ptoken = token;
    rear = head;
    }
    else
    {
    stack1.push(*rear);
    head=++rear;
    ptoken = token;
    }
    }
    char * return_v = new char[strlen(s1)+1];
    int i=0;
    while(!stack1.empty())
    {
    return_v[i++] = stack1.top();
    stack1.pop();
    }
    return_v[i]='\0';
    return return_v;
    }
    int main(int argc, char* argv[])
    {

    cout<<"This is zhuxinquan's Chinese site: http://www.zhuxinquan.com/cn\n";
    cout<<reverse("This is zhuxinquan's Chinese site: http://www.zhuxinquan.com/cn","zhuxinquan");
    return 0;
    }

     

    二、LoadRunner怎样让众多用户同时登陆

           从数据库中虚拟用户,用虚拟的用户登陆就可以了.

     

    三、Unix 中的常用命令

         1、od 按八进制转储文件;

         2、pack 压缩文件;

         3、passwd 改变口令;

         4、paste 文件合并;

         5、pax 可移植档案管理程序;

         6、pcat 显示压缩格式文件;

         7、pg 分屏显示;

         8、pr 按打印格式显示文件;

         9、pstat 报告系统信息;

      

    四、 小于一万的含有一的正整数个数? 

         public static void main(String[] args) {
                 int j=0;
                 for (Integer i = 0; i < 10000; i++) {
                     if(i.toString().indexOf("1")!=-1){
                         System.out.print("-"+i);
                         j++;
                         if(i%20==0){
                             System.out.println();
                         }
                     }
                 }
                 System.out.println("  J: "+j);
         }

     

    五、软件的生命周期,软件测试的生命周期分别是什么?

     

    六、有两个砝码,一个7克、一个2克,还有一天平,现在有140克的盐,可以把它分成50克和90克??? (有想法的,请回复,谢谢!!!)

     


     

Open Toolbar