深信服软件测试笔试题

输入一行字符串,将其中的数字转换成由英文组成的字符串,每个英文单词用空格进行间隔,字符串长度小于等于10;
输入描述:一个字符串。
输出描述:数字对应的英文字符串。
示例:
输入:1230-abc
输出:one two three zero - a b c

#include
#include
using namespace std;

int main()
{
    char* str = (char*)malloc(sizeof(char)*10);//最大10个字符开辟10个空间
    cin>>str;
    int count = 0;
    char* ptr = str;
    while(*ptr != '\0')//统计实际应开辟的空间
    {
        if(*ptr=='0' || *ptr=='4' || *ptr=='5' || *ptr=='9')
        {
            count+=5;
        }
        else if(*ptr=='1' || *ptr=='2' || *ptr=='6')
        {
            count+=4;
        }
        else if(*ptr=='3' || *ptr=='7' || *ptr=='8')
        {
            count+=6;
        }
        else
        {
            count+=2;
        }
        ++ptr;
    }
    ptr = (char*)malloc(sizeof(char)*count+1);
    memset(ptr,0,sizeof(char)*(count+1));
    char* ptr2 = ptr;//指向ptr的头
    char* ptr1 = str;//指向str的头
    char a = *ptr;
    while(*ptr1 != '\0')//从头开始判断每个字符并链接到ptr上。
    {
        if(*ptr1 == '0')
        {
            strcat(ptr,"zero ");
        }
        else if(*ptr1 == '1')
        {
            strcat(ptr,"one ");
        }
        else if(*ptr1 == '2')
        {
            strcat(ptr,"two ");
        }
        else if(*ptr1 == '3')
        {
            strcat(ptr,"three ");
        }
        else if(*ptr1 == '4')
        {
            strcat(ptr,"four ");
        }
        else if(*ptr1 == '5')
        {
            strcat(ptr,"five ");
        }
        else if(*ptr1 == '6')
        {
            strcpy(ptr,"six ");
        }
        else if(*ptr1 == '7')
        {
            strcat(ptr,"seven ");
        }
        else if(*ptr1 == '8')
        {
            strcat(ptr,"eigth ");
        }
        else if(*ptr1 == '9')
        {
            strcat(ptr,"nine ");
        }
        else
        {
            strncat(ptr,ptr1,1);
            strcat(ptr," ");
        }
        ++ptr1;
    }
    ptr[count-1] = '\0';
    cout<free(str);
    free(ptr);
    return 0;
}

你可能感兴趣的:(笔试题)