免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5830 | 回复: 15
打印 上一主题 下一主题

华为招聘试题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-28 14:34 |只看该作者 |倒序浏览
1    對任意輸入的字符串進行判斷是否相等.不使用库函数,编写函数int strcmp(char  *source,   char   *dest) 相等返回0,不等返回-1;

2、  写一函数int fun(char *p)判断一字符串是否为回文,是返回1,不是返回0,出错返回-1

int strcmp_1(char  *str1, char *str2)
{   while((*str1==*str2)&&(*str1))
    {
        str1++;
        str2++;
    }
    if((*str1==*str2)&&(!*str1)) //Same strings
      return 0;
      else
      return -1;
}
這是我當時寫的,他們說我錯了

论坛徽章:
0
2 [报告]
发表于 2006-03-28 14:37 |只看该作者
如果str1比str2长,你就错了

论坛徽章:
0
3 [报告]
发表于 2006-03-28 14:41 |只看该作者
凑个热闹。


  1. int strcmp (char *str1, char *str2)
  2. {
  3.     while ( *str1 && *str2 && *str1++ == *str2++ )
  4.      /* do nothing */ ;
  5.     if (*str1 > *str2) return 1;  /* string1 > string2 */
  6.     else if (*str1 == *str2) return 0;  /* string1 == string2 */
  7.     else return -1;   /* string1 < string 2 */
  8. }
复制代码

论坛徽章:
0
4 [报告]
发表于 2006-03-28 14:47 |只看该作者
如果是str1 或str2有空串,是不是要在while前加个if更好,而不是在while里判断呢?

论坛徽章:
0
5 [报告]
发表于 2006-03-29 11:53 |只看该作者
原帖由 buxoman 于 2006-3-28 14:41 发表
凑个热闹。

[code]
int strcmp (char *str1, char *str2)
{
    while ( *str1 && *str2 && *str1++ == *str2++ )
     /* do nothing */ ;
    if (*str1 > *str2) return 1; ...

用指针写,真不错!!!

论坛徽章:
0
6 [报告]
发表于 2006-03-29 13:05 |只看该作者
int s_strcmp(const char * src, const char * dest)
{
        int res;

        while (1)  {
                if ((res = *src - *dest++) != 0 || !*src++)
                        break;
        }
       
        return (res ? -1 : 0);
}

[ 本帖最后由 mike_chen 于 2006-3-29 14:51 编辑 ]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2006-03-29 13:15 |只看该作者

  1. int strcmp(const char *cs, const char *ct)
  2. {
  3.     signed char __res;

  4.     while (1) {
  5.         if ((__res = *cs - *ct++) != 0 || !*cs++)
  6.             break;
  7.     }
  8.     return __res;
  9. }
复制代码

论坛徽章:
0
8 [报告]
发表于 2006-03-29 13:57 |只看该作者
原帖由 buxoman 于 2006-3-28 14:41 发表
凑个热闹。

[code]
int strcmp (char *str1, char *str2)
{
    while ( *str1 && *str2 && *str1++ == *str2++ )
     /* do nothing */ ;
    if (*str1 > *str2) return 1; ...

好像。。。

论坛徽章:
0
9 [报告]
发表于 2006-03-29 14:07 |只看该作者
int
strcmp(const char *s, const char *t)
{
   for (; s[0] == t[0] && s[0]; s ++, t ++)
      ; /* null statment */

   return (s[0] == t[0] ? 0 : -1);
}

论坛徽章:
0
10 [报告]
发表于 2006-03-29 14:20 |只看该作者
原帖由 mq110 于 2006-3-29 13:15 发表
[code]
int strcmp(const char *cs, const char *ct)
{
    signed char __res;

    while (1) {
        if ((__res = *cs - *ct++) != 0 || !*cs++)
            break;
    }
    return __res;
}[ ...

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP