首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

广州公司的面试题解决办法

2012-03-01 
广州公司的面试题应聘VC界面,给我C/C++的题目,5题,答的不好,已pass了。给找工作的参考了。凭记忆。1.写是否小

广州公司的面试题
应聘VC界面,给我C/C++的题目,5题,答的不好,已pass了。给找工作的参考了。凭记忆。
1.
写是否小刮号匹配的函数,是就提示“正确”,不是就提示“错误”。(感觉怪怪的)
2.
实现字符串的删除特定字符的程序,如‘abcdef’去 'e '后为 'abcdf '
3.
w32下的大小
sizeof(int),sizeof(int   i[20])
struct   p{
char   a;
int     b;
short   a;
};
sizeof(p);

4.c++问题,指错
class     mstring
{
      public:
          mstring&   operate=(constr   mstring   &p)
          {
                    m_str=malloc(strlen(p-> p_str));
                    m_str=p-> p_str;
          };
      private:char   *p_str;
}  
      main()
{
      mstring   astr= "tmp ";
      mstring   bstr=astr;
      mstring   cstr;
      bstr=astr=cstr;
}
5.说古埃及的十进制计算
9×33=?
1×33=33;                     《-提取1
2×33=33+33=66;
4X33=66+66=132;
8X33=132+132=264;         <-提取8
结果33+264=297
问1)除法的步骤
2)用移位和加实现乘法
3)用移位和加实现除法

[解决办法]
第二题 试解如下
//入口参数1:SrStr  源字符串,如题中的 "abcdef "
//入口参数2:ArmStr 须删除的字符串,如题中的 "e "或 "ef "
//返回值为字符指针
char *DelCh(char *SrStr, const char *ArmStr)
{
unsigned short Cnt = 0;
char *Rtn = NULL;

if((0 == strcmp(SrStr, " ")) || (0 == strcmp(ArmStr, " ")) ||
(0 == strcmp(SrStr, ArmStr)) || (strlen(SrStr) < strlen(ArmStr))
{
//输入参数为空,或相同的字符串,或源字符串长度小于要删除的字符串长          //度时返回空串
return (0);
}

//动态分配内存
Rtn = (char*)malloc((strlen(SrStr) - strlen(ArmStr)) + 1);

//初始化
     memset(Rtn, 0, (strlen(SrStr) - strlen(ArmStr)) + 1);

//从SrStr串中查找与ArmStr匹配的串
     while( '\0 ' != SrStr)
{
          //从SrStr删除包含ArmStr的字符
if(0 == strncmp(SrStr, ArmStr, strlen(ArmStr)))
{
               //将剩余的字符拷贝到结果串中
               for(Cnt = 0; Cnt < strlen(ArmStr); Cnt++)
{
SrStr++;
}
               
strcat(Rtn, SrStr);
break;
}

strncat(Rtn, SrStr, 1);//将不匹配的串拷贝到结果串中
          SrStr++;        //继续循环查找,直到SrStr串尾
}

return (Rtn);
}
我也是学C时间不长,试着写了个代码,有错误的地方请指正啊

热点排行