2014华为实习生招聘机试题

时间:2021-10-05 18:48:21

由于本人只做出两道题,第三题没来得及细看,所以只列出前两道题目及其解法(C语言),仅供参考。

1、输入一个字符串(由小写字母组成,长度不超过1000),输出为对应的数字字符串。(60分)

样例:

输入:yiersansi

输出:1234

#include<stdio.h>
int main()
{
         charstr[1000]={"0"},s[100]={"0"};
         char*p=str,*q=s;
         scanf("%s",str);
         while(*p!='\0')
         {
                   if('y'==*p)
                   {
                            *q='1';
                            q++;
                            p+=2;
                   }
                   else
                            if('e'==*p)
                            {
                                     *q='2';
                                     q++;
                                     p+=2;
                            }
                            else
                                     if('s'==*p)
                                     {
                                               p+=1;
                                               if('a'==*p)
                                               {        
                                                        *q='3';
                                                        q++;
                                                        p+=2;
                                               }
                                               else
                                               {
                                                        *q='4';
                                                        q++;
                                                        p+=1;
                                               }
                                     }
                                     else
                                               if('w'==*p)
                                               {
                                                        *q='5';
                                                        q++;
                                                        p+=2;
                                               }
                                               else
                                                        if('l'==*p)
                                                        {
                                                                 *q='6';
                                                                 q++;
                                                                 p+=3;
                                                        }
                                                        else
                                                                 if('q'==*p)
                                                                 {
                                                                           *q='7';
                                                                           q++;
                                                                           p+=2;
                                                                 }
                                                                 else
                                                                           if('b'==*p)
                                                                           {
                                                                                   *q='8';
                                                                                   q++;
                                                                                   p+=2;
                                                                           }
                                                                           else
                                                                                   if('j'==*p)
                                                                           {
                                                                                   *q='9';
                                                                                   q++;
                                                                                   p+=3;
                                                                           }
         }
         *q='\0';
         printf("%s",s);
         return0;
}

2、输入一个字符串(由小写字母组成,大小不超过255),字符串由一个个单词组成,每个单词之间有个空格,最后一个单词末尾不加空格;输出为各个单词按字典的字母由小到大排序后的字符串,每个单词之间仍有个空格,最后一个单词末尾不加空格。(100分)
样例:
输入:i am a student
输出:a am i student

#include<stdio.h>
#include<string.h>
int main()
{   
    charstr[255]={"0"},s[20]={"0"},str_1[20][20]={"0"},str_2[20]={"0"};
    char*p=str,*q=s;
    inti,j,k=0;
    gets(str);
    while(*p!='\0')
    {
       while(*p!=''&&*p!='\0')
           *q++=*p++;
       *q='\0';
       p++;
       strcpy(str_1[k++],s);
       strcpy(s,"0");
       q=s;
    }
    for(j=0;j<k-1;j++)
           for(i=0;i<k-1-j;i++)
              if(strcmp(str_1[i],str_1[i+1])>0)
              {
                  strcpy(str_2,str_1[i]);
                  strcpy(str_1[i],str_1[i+1]);
                  strcpy(str_1[i+1],str_2);
              }
    for(i=0;i<k;i++)
       printf("%s",str_1[i]);
    return0;
}


总结:1、华为机试主要考查字符串,有一定的灵活性;

           2、机考系统的内核为VS2005及JDK1.7,注意输入输出的格式;

           3、只要做出一道题(60分以上),就可以参加下一轮考核。