读书人

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

发布时间: 2012-03-01 10:25:47 作者: rapoo

广州公司的面试题
应聘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时间不长,试着写了个代码,有错误的地方请指正啊

读书人网 >C++

热点推荐