前一个来月,一直在外面找工作,做了一些C++题目,当时感觉还行,但是回家后仔细总结后,发现原本很看似很简单的题目面试时答的不是很好,于是写了出来,和大家交流交流。
以下是字符串拷贝函数和小写换大写,这两个面试考了多次,尤其是字符串拷贝。
char* my_strcpy( char *strTarget, const char *strSource )
{
ASSERT( NULL != strTarget);
ASSERT( NULL != strSource);
char *strRet = strTarget;
while ( *strSource != '/0')
{
*strTarget = *strSource;
strTarget++;
strSource++;
}
return strRet;
}
void ChangeLowercaseIntoMajuscule( char** ppszString )
{
ASSERT( NULL != ppszString );
ASSERT( NULL != (*ppszString) );
char ch = 0;
do
{
if ( (**ppszString >= 'a') && (**ppszString <= 'z') )
{
ch = **ppszString;
**ppszString = 'A' + ( ch - 'a' );
}
}
while( (*((*ppszString)++)) != '/0' );
return;
}
第二道题目别忘了char实际上是整数,所以向'A'- 'a' 这样是可以的。记得我当时这边写的是伪代码,是 “A的 ACS码 + ch 的 ACS码 - a的 ACS码”,后来人家问我为啥这样写,还有别的办法没有,我才知道他要考的还有向'A'- 'a' 这样的问题。所以说,面试答题不要偷懒,不能怕想就用不动脑子的方法,还是要多注意下。