华为招聘试题
1 對任意輸入的字符串進行判斷是否相等.不使用库函数,编写函数int strcmp(char *source, char *dest) 相等返回0,不等返回-1;
2、 写一函数int fun(char *p)判断一字符串是否为回文,是返回1,不是返回0,出错返回-1
问题点数:10、回复次数:13Top
1 楼citywanderer2005(流浪狗)回复于 2006-03-28 12:34:54 得分 2
第一题:
int strcmp(char *source, char *dest)
{
int i=0;
for(; source[i]!='\n' && dest[i] != '\n'; ++i)
{
if(source[i] != dest[i])
break;
}
if(source[i]=='\n' && dest[i] == '\n')
{
return 0;
}
else
return -1;
}Top
2 楼llf_hust()回复于 2006-03-28 12:39:04 得分 2
int strcmp(char *source, char *dest)
{
while(*source == *dest++ )
if(*(++source) == '\0')
return 0;
return *source - *dest;
}
Top
3 楼citywanderer2005(流浪狗)回复于 2006-03-28 12:42:02 得分 0
晕,把'\0'写成'\n'Top
4 楼ugg(逸学堂(exuetang.net))回复于 2006-03-28 12:51:06 得分 2
//==============================Start Ustrcmp=========================================
/*
// 函数名:Ustrcmp
// 输入参数:两个字符串
// 输出参数:字符串对比长度
// 描述:两个字符串相等,
// 输入值 返回值
// "1234" -> 4
// "-1234" -> 4
// 测试用例
// char p[] = "-234yaasaa";
// int i = Ustrlen(p);
// 分析:字符串匹配,各个字符对比。
*/
int Ustrcmp(const char *sourstr,const char *str)
{
if(sourstr == NULL)
{
return -1;
}
if(str == NULL)
{
return 1;
}
// 查找字符结束符号,如果是strncmp函数,结束标志可以用n的数量控制
while((*sourstr) == (*str) && (*sourstr) != '\0')
{
++sourstr;
++str;
}
// 判断当前是否到字符串末尾
if((*sourstr) == '\0' && (*str) != '\0')
{
return -1;
}
//
return (*sourstr)-(*str);
}
第二题
int fun(char *p)
{
int len = strlen(p);
for(int i =0 ,int j = len-1; i< j; ++i,--j )
{
if(p[i] != p[j])
{
return 0;
// 不时回文
}
}
return 1
// 是回文
}Top
5 楼LiHubei(lhb)回复于 2006-03-28 12:53:20 得分 0
学习Top
6 楼plamlover(火麒麟)回复于 2006-03-28 12:53:44 得分 0
有时间限制吗Top
7 楼beginnow()回复于 2006-03-28 13:02:10 得分 2
int strcmp(char *src,char *dest)
{
char *srcTemp = src;
char *destTemp = dest;
for(;*src != '\0' && *dest != '\0';)
if(*src++ != *dest++)
break;
return *src - *dest;
}
int huiwen(char *scr)
{
int i = 0;
int n = 0;
if(src == NULL)
return -1;
for(i = 0 ,n = strlen(src) - 1 ; i <= n ; i ++, n--)
if(src[i] != src[n])
return 1;
return 0;
}Top
8 楼citywanderer2005(流浪狗)回复于 2006-03-28 13:47:24 得分 0
beginnow() ( ) 信誉:100 的方法有点问题,
看看src[] = "2445", dest[] = "234"的情况。
llf_hust() ( ) 信誉:89的也有问题,
看看src[] = "23", dest[] = "234"的情况。Top
9 楼citywanderer2005(流浪狗)回复于 2006-03-28 13:53:13 得分 0
发现这个还比较好:
int strcmp(char *source, char *dest)
{
for(;*source != '\0' && *dest != '\0' ; source++, dest++)
{
if(*(source) != *(dest))
break;
}
return *source - *dest;
}Top
10 楼windking21(想玩玩WOW 真的那么难吗)回复于 2006-03-28 13:57:53 得分 2
int strcmp(const char *str1,const char *str2)
{
while((*str1==*str2)&&(*str1))
{
str1++;
str2++;
}
if((*str1==*str2)&&(!*str1)) //Same strings
return 0;
else if((*str1)&&(!*str2)) //Same but str1 longer
return -1;
else if((*str2)&&(!*str1)) //Same but str2 longer
return((*str1>*str2)?-1:1);
else return 2;//not same
}Top
11 楼iori_guojun()回复于 2006-03-28 13:58:54 得分 0
int strcmp_1(char *str1, char *str2)
{ while((*str1==*str2)&&(*str1))
{
str1++;
str2++;
}
if((*str1==*str2)&&(!*str1)) //Same strings
return 0;
else
return -1;
}
這是我當時寫的,他們說我錯了Top
12 楼helpme422()回复于 2006-03-28 14:21:48 得分 0
为什么没有const,那是起码的Top
13 楼mlwu3(wml)回复于 2006-03-28 14:52:57 得分 0
1.
int strcmp( char *source, char *dest )
{
while( *source )
{
if( *(source++) != *(dest++) )
{
return -1;
}
}
if( *source == *dest )
{
return 0;
}
else
{
return -1;
}
}
Top




