| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1475 人关注过本帖, 3 人收藏
标题:华为面试题
只看楼主 加入收藏
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
结帖率:98.26%
收藏(3)
已结贴  问题点数:20 回复次数:15 
华为面试题
今天在网上看见两道华为的面试题,觉得挺好的,作为新手,可以做做,就当作是练习一下!


第一题:
void take_num(const char *strIn, int *n, unsigned int *outArray)

输入
strIn="ab00cd+123fght456-25  3.005fgh"

输出
n=6
outArray={ 0, 123, 456, 25, 3, 5 }

(不考虑小数:如3.005输出3和5)


第二题:
在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。

要求实现函数:
int delete_sub_str(const char *str, const char *sub_str, char *result_str)

【输入】

str:输入的被操作字符串

sub_str:需要查找并删除的特定子字符串

【输出】

result_str:在str字符串中删除所有sub_str子字符串后的结果

【返回】 删除的子字符串的个数

注:

I、   子串匹配只考虑最左匹配情况,即只需要从左到右进行字串匹配的情况。比如:在字符串"abababab"中,采用最左匹配子串"aba",可以匹配2个"aba"字串。如果

匹配出从左到右位置2开始的"aba",则不是最左匹配,且只能匹配出1个"aba"字串。

II、  输入字符串不会超过100 Bytes,请不用考虑超长字符串的情况。

示例
输入:str = "abcde123abcd123"

sub_str = "123"

输出:result_str = "abcdeabcd"

返回:2

 

输入:str = "abcde123abcd123"

sub_str = "1234"

输出:result_str = "abcde123abcd123"

返回:0

搜索更多相关主题的帖子: 华为面试 
2011-09-04 18:59
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
大家可以把自己的代码贴出来,分享一下!

愿用余生致力编程
2011-09-04 19:00
木言
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-6-9
收藏
得分:0 
谢谢楼主
2011-09-04 19:07
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:10 
程序代码:
#include <stdio.h>

void take_num(const char *strIn, int *n, unsigned int *outArray)
{
    int i,j;
    const char *p = strIn;
    int temp = 0;
    bool havenum = false;
    *n = 0;
    while(*p)
    {
        if(*p>='0' && *p<='9')
        {
            havenum = true;
            if(0 == temp)
                temp += *p-48;
            else
            {
                temp *= 10;
                temp += *p-48;
            }
            p++;
        }
        else if(temp || havenum)
        {
            outArray[(*n)++] = temp;
            temp = 0;
            havenum = false;
            p++;
        }
        else
            p++;
    }
}
int main()
{
    unsigned int a[100] = {0};
    int n = 0;
    char str[] = "ab00c0d+0123fght456-025  3.005fgh";
    take_num(str,&n,a);
    return 0;
}
菜鸟代码 欢迎指教

                                         
===========深入<----------------->浅出============
2011-09-04 19:38
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:10 
程序代码:
#include <stdio.h>
#include <string.h>
int delete_sub_str(const char *str, const char *sub_str, char *result_str)
{
    int i = 0,j,k = 0;
    char *pos = NULL;
    int len = strlen(sub_str);
    while(NULL != (pos = strstr(str+i,sub_str)))
    {
        k++;
        strncat(result_str,str+i,pos-(str+i));
        i += pos-(str+i)+len;
    }
    return k;
}
int main()
{
    unsigned int a[100] = {0};
    int n = 0;
    char str[] = "bcde123abcd123";
    char sub_str[] = "123";
    char res_str[100] = {0};
    n = delete_sub_str(str,sub_str,res_str);
    return 0;
}
菜鸟代码 欢迎指教

                                         
===========深入<----------------->浅出============
2011-09-04 19:46
windycraze
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-5-13
收藏
得分:0 
h
2011-09-05 10:39
编程达人
Rank: 2
等 级:论坛游民
帖 子:62
专家分:66
注 册:2011-8-11
收藏
得分:0 
一定努力搞出来
2011-09-05 10:48
zjs0388
Rank: 1
等 级:新手上路
帖 子:11
专家分:5
注 册:2011-9-7
收藏
得分:0 
/*
 * take_num.c
 *
 *  Created on: 2011-9-7
 *      Author: zhujianshe
 */
#include<stdio.h>
#include<stdlib.h>

void
take_num(const char *strIn,int *n, unsigned *outArray)
{
    char ch;
    *n = 0;
    int index = 0;
    while((ch = *(strIn+index++)) !='\0')
    {
        int temp = 0;
        if(ch >='0'&&ch<='9')
        {
            temp +=ch-'0';
            while((ch = *(strIn+index++)) !='\0'&&ch >='0'&&ch<='9')
            {
                temp *=10;
                temp+=ch-'0';

            }
            outArray[(*n)++] = temp;

        }
    }
}

int
main(void)
{
    char * strIn = "ab00cd+123fght456-25 3.005fgh";
    int * n = malloc(sizeof(int));
    unsigned  outArray[10];
    take_num(strIn,n,outArray);
    for(int i = 0;i<*n;i++)
    {
        printf("%d\t",outArray[i]);
    }
    printf("counts:    %d\n",*n);

    free(n);
    return EXIT_SUCCESS;
}
欢迎批评指正。。。。
2011-09-07 23:29
hanxiaokun
Rank: 2
等 级:论坛游民
帖 子:44
专家分:56
注 册:2011-8-31
收藏
得分:0 

编写的时候比较仓促,此程序可进一步优化,有兴趣的朋友试一下啊,

#include <stdio.h>
#include <string.h>
#include <math.h>

void take_num(const char *strIn, int *n, unsigned int *outArray);
void main()
{
    char str[50];
    int n = 0;
    unsigned int outArray[50] = {0};

    printf("strIn = \" ");
    gets(str);                                                    //由键盘输入测试数据
    take_num(str, &n, outArray);
   
}
void take_num(const char *strIn, int *n, unsigned int *outArray)      
{
      int i = 0 , j = 0 , VA =0 , vacon = 0, con = 0 ,c = 0;
      char STR_CON[50];
      while(*(strIn + i) != '\0')
      {
         
          if((*(strIn+i) >= '0') && (*(strIn+i) <= '9'))
          {
             con = 0;
             while((*(strIn+i) >= '0') && (*(strIn+i) <= '9'))
             {
                  STR_CON[con] = *(strIn+i);
                  con++;
                  i++;
                  vacon = con -1;
                  if (*(strIn + i) == '\r')
                  {
                      return;
                  }

             }
             for (j = 0; j < con; j++)
             {
                 VA += (int)((STR_CON[j] -48) * pow(10 , vacon--));

             }
             outArray[*n] = VA;
             *n = *n + 1;
             VA = 0;
          }
   
          i++;
         
         
         
      }
      c = *n;
      printf("n = %d\n", c);

      printf("outArray = { ");
      for(i =0; i < c-1; i++)
      {
          printf("%d,", outArray[i]);
      }
      printf("%d", c-1);                              //使输出数的最后一个数后面没有逗号
      printf("}\n");
}
2011-09-08 11:02
hanxiaokun
Rank: 2
等 级:论坛游民
帖 子:44
专家分:56
注 册:2011-8-31
收藏
得分:0 
回复 4楼 laoyang103
4楼的思路太好了,佩服
2011-09-08 11:20
快速回复:华为面试题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018576 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved