深信服软件测试笔试题

时间:2022-05-30 14:39:28

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

#include<iostream>
#include<string.h>
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<<ptr2<<endl;
free(str);
free(ptr);
return 0;
}