C++面试上机面试题目
第一道
上机写一个string的比较函数,即strcmp,大于返回1 等于返回0 小于返回 -1
那人说的不明白还是我没搞懂strcmp这个函数可能用的少吧,刚 开始我把它理解为
先比较两个字符串的长度,大于返回1,等于返回-1,等于的话再比较第一个字母的ASCII的大小
于是写出了如下的程序:
char * Compare(const char * s1, const char * s2)
{
const char *s3 = s1, *s4 = s2;
while(*s1 ! = '/0' && *s2 != '/0')
{
s1++;
s2++;
}
if (*s1 == '/0' && *s2 !='/0')
{
return -1;
}
if (*s1 != '/0' && *s2 == '/0')
{
return 1;
}
else
{
while (*s3 != '/0')
{
s3++;
s4++;
if (*s3 > *s4 )
return 1;
if (*s3 < *s4)
return -1;
}
return 0;
}
}
后来发现原来只要从两个字符串的开头比较字符串的ASCII值就OK了
得出了如下的程序:
char* (const char * s1, const char* s2)
{
while(*s1 != '/0' && *s2 != '/0')
{
if (*s1 > *s2)
return 1;
if (*s1 < *s2)
return -1;
}
if (*s1 == '/0' && *s2 != '/0' )
return -1;
if(*s1 != '/0' && *s2 == '/0')
return -1;
else
return 0;
}
不知道是我没理解清楚还是平时没理解明白!!!!!
第二道
求数组中第2大的数 要求不能用排序算法
希望大家给出经典算法!!!!