CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  非技术区

华为招聘试题

楼主iori_guojun()2006-03-28 12:04:24 在 C/C++ / 非技术区 提问

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

相关问题

  • 华为试题
  • 有谁有华为招聘的试题,无线支持的,多谢了!
  • 华为前两天在电子科大招聘时的一个笔试题:)
  • 华为前两天在电子科大招聘时的一个笔试题:)
  • 华为面试题
  • 华为面试题
  • 华为面试题
  • 华为面试题
  • 请教:华为面试题
  • 昨天华为面试题

关键词

  • 函数
  • source
  • sourstr
  • 字符串
  • ustrcmp
  • dest
  • 相等
  • 返回
  • strcmp
  • 是否

得分解答快速导航

  • 帖主:iori_guojun
  • citywanderer2005
  • llf_hust
  • ugg
  • beginnow
  • windking21

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo