2014届华为校园招聘机试题2

来源:互联网 发布:淘宝 发卡 编辑:程序博客网 时间:2024/06/06 13:14

第一题、输入一个正整数,并编码为字符串进行输出

描述: 1、输入一个正整数,并编码为字符串进行输出。
编码规则为:数字0-9分别编码为字符a-j
2、输入肯定是正整数,不用做错误较验

运行时间限制: 无限制
内存限制: 无限制
输入: 正整数

输出: 字符串

样例输入: 123
样例输出: bcd

#include <iostream>using namespace std;void int2str(int n,char* str){    if (str==NULL)    {        return ;    }    int i=0;    char temp[20];    while (n)    {        temp[i++]='a'+n%10;        n/=10;    }    temp[i]='\0';    i--;    int j=0;    while (i>=0)    {        str[j++]=temp[i--];    }  str[j]='\0';}void main(){    int n;    cin>>n;    char a[20];    int2str(n,a);    cout<<a<<endl;}

第二题、
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
比如字符串“abacacde”过滤结果为“abcde”。
要求实现函数:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);
【输入】 pInputStr: 输入字符串
lInputLen: 输入字符串长度
【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;
【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出
示例
输入:“deefd” 输出:“def”
输入:“afafafaf” 输出:“af”
输入:“pppppppp” 输出:“p”
main函数已经隐藏,这里保留给用户的测试入口,在这里测试你的实现函数,可以调用printf打印输出
当前你可以使用其他方法测试,只要保证最终程序能正确执行即可,该函数实现可以任意修改,但是不要改变函数原型。一定要保证编译运行不受影响。

/***************************************************************通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。要求实现函数:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);【输入】 pInputStr:  输入字符串lInputLen:  输入字符串长度         【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长; 【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出示例 输入:“deefd”        输出:“def”输入:“afafafaf”     输出:“af”输入:“pppppppp”     输出:“p”main函数已经隐藏,这里保留给用户的测试入口,在这里测试你的实现函数,可以调用printf打印输出当前你可以使用其他方法测试,只要保证最终程序能正确执行即可,该函数实现可以任意修改,但是不要改变函数原型。一定要保证编译运行不受影响。*************************************************************/#include <iostream>#include <cstring>#include <algorithm>#include <string>#include <iterator>using namespace std;void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr){    if (pInputStr==NULL||lInputLen<1)    {        return;    }    int n=0;//用来存储当前pOutputStr一共从pInputStr获得多少元素    for (int i=0;i<lInputLen;i++)    {        if (i==0)        {            pOutputStr[n++]=pInputStr[i];        }        else        {            int flag=0;            for (int j=0;j<n;j++)            {                if (pInputStr[i]==pOutputStr[j])                {                    flag=-1;                    break;                }            }           if (flag==0)           {                pOutputStr[n++]=pInputStr[i];           }        }    }pOutputStr[n]='\0';}void stringFilter2(const char *pInputStr, long lInputLen, char *pOutputStr)//lInputLen指不包含'\0'的个数//第二种写法,来自http://blog.csdn.net/net_assassin/article/details/11660869{    bool g_flag[26]={0};    if (pInputStr==NULL||lInputLen<1)    {        return;    }    int i=0;    while (*pInputStr!='\0')    {        if (g_flag[*pInputStr-'a'])        {            pInputStr++;        }        else        {        pOutputStr[i++]=*pInputStr;        g_flag[*pInputStr-'a']=1;        pInputStr++;        }    }    pOutputStr[i]='\0';}//第三种写法void stringFilter3(const char *pInputStr, long lInputLen, char *pOutputStr){    //  去除重复字符并排序的字符串,这个程序最终对所有的元素重新做了排序,如果没有要求排序,则使用前两种方法。    if (pInputStr==NULL||lInputLen<1)    {        return;    }    string str;    copy(pInputStr,pInputStr+lInputLen,back_inserter(str));    sort(str.begin(),str.end());    str.erase(unique(str.begin(),str.end()),str.end());    strcpy(pOutputStr,str.c_str());}////void main()//{//    char *pInputStr="deefd";//  long lInputLen=strlen(pInputStr);//  char *pOutputStr=new char[lInputLen+1];//  stringFilter(pInputStr,lInputLen,pOutputStr);//    cout<<"result is"<<endl;//  cout<<pOutputStr<<endl;//  delete[] pOutputStr;//}void main(){    char *pInputStr="abacacde";    long lInputLen=strlen(pInputStr);    char *pOutputStr=new char[lInputLen+1];    stringFilter3(pInputStr,lInputLen,pOutputStr);    cout<<"result is"<<endl;    cout<<pOutputStr<<endl;    delete[] pOutputStr;}
0 0
原创粉丝点击