中易网

急!!!c++ 递归生成字符串首字母缩写

答案:3  悬赏:0  
解决时间 2021-04-08 14:11
给定一个由若干英文单词组成的字符串,用递归生成一个由各首字母组成的缩写词(acronym),其中的the,a,an,of,for及and被忽略。
例如:输入The Asia-Pacific Economic Cooperation
输出 APEC
最佳答案
#include
#include
#include

char *getAcronym(char *src, char *dest)
{
char arr[4];
char *p = src, *temp;
char *q = dest;

if (!*p)
return NULL;

if (isupper(*p))
{
temp = p;
switch (*p)
{
case 'A' : // 排除 a an and
if (*++temp == ' '
|| (*temp == 'n' && *++temp == ' ')
|| (*temp == 'd' && *++temp == ' '))
{
getAcronym(++p, q);
}
else
{
sprintf(q, "%c", *p);
getAcronym(++p, ++q);
}
break;
case 'O' : // 排除 of
if (*++temp == 'f' && *++temp == ' ')
{
getAcronym(++p, q);
}
else
{
sprintf(q, "%c", *p);
getAcronym(++p, ++q);
}
break;
case 'F' : // 排除 for
if (*++temp == 'o' && *++temp == 'r' && *++temp == ' ')
{
getAcronym(++p, q);
}
else
{
sprintf(q, "%c", *p);
getAcronym(++p, ++q);
}
break;
case 'T' : // 排除 the
if (*++temp == 'h' && *++temp == 'e' && *++temp == ' ')
{
getAcronym(++p, q);
}
else
{
sprintf(q, "%c", *p);
getAcronym(++p, ++q);
}
break;
default :
sprintf(q, "%c", *p);
getAcronym(++p, ++q);
break;
}
}
else
{
getAcronym(++p, q);
}

return NULL;
}

int main()
{
char s[] = {"The Asia-Pacific A Hw Of Lkd An Psad For Pds And Economic Cooperation"};
char d[20];

memset(d, 0, 10);

getAcronym(s, d);

printf("%s\n", d);

return 0;
}
全部回答

int length( char *lpstring )

{

    if ( !lpstring || !(*lpstring) )

    return 0;

    else

    return length( ++lpstring ) + 1;

}

根据例子,默认为首字母都是大写的哦 写的很乱,见谅了,嘿嘿~~~~~~~~~~~~ #include #include #include char *getAcronym(char *src, char *dest) { char arr[4]; char *p = src, *temp; char *q = dest; if (!*p) return NULL; if (isupper(*p)) { temp = p; switch (*p) { case 'A' : // 排除 a an and if (*++temp == ' ' || (*temp == 'n' && *++temp == ' ') || (*temp == 'd' && *++temp == ' ')) { getAcronym(++p, q); } else { sprintf(q, "%c", *p); getAcronym(++p, ++q); } break; case 'O' : // 排除 of if (*++temp == 'f' && *++temp == ' ') { getAcronym(++p, q); } else { sprintf(q, "%c", *p); getAcronym(++p, ++q); } break; case 'F' : // 排除 for if (*++temp == 'o' && *++temp == 'r' && *++temp == ' ') { getAcronym(++p, q); } else { sprintf(q, "%c", *p); getAcronym(++p, ++q); } break; case 'T' : // 排除 the if (*++temp == 'h' && *++temp == 'e' && *++temp == ' ') { getAcronym(++p, q); } else { sprintf(q, "%c", *p); getAcronym(++p, ++q); } break; default : sprintf(q, "%c", *p); getAcronym(++p, ++q); break; } } else { getAcronym(++p, q); } return NULL; } int main() { char s[] = {"The Asia-Pacific A Hw Of Lkd An Psad For Pds And Economic Cooperation"}; char d[20]; memset(d, 0, 10); getAcronym(s, d); printf("%s\n", d); return 0; }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
泗洪风情网酒店宾馆洗浴中心有没有招聘收银员
DNA连接酶的作用是将酶切后得到的两个粘性末
今天一不小心把我的手机摔了一下但是带着手机
聊城无缝钢管厂在哪里?
铜仁盖饭地址在哪,我要去那里办事
姓于的女孩名字属羊巨蟹座
小河清澈见底,如同什么?
从那下载幸亏没生在古代这手歌到手机里
苹果吃多了是不是会放屁?
中国民航大学的民航运输专业就业前景好吗?招
为什么有些人读书很认真,但成绩不好。而有些
国豪窗帘地址有知道的么?有点事想过去
我想在山东滕州开一个服装店
69年阳历8:30号出生阴历是什69年阳历8月30号
沈阳170路公交车路线到碧桂园银河城星座哪站
推荐资讯
无主之地2为什么按开始游戏后还是没反应
五个数字六个数字填填看
明豪两个字用来取名字好吗
椰子鲜的好波还是干的好剥皮
日语学到什么程度叫精通
刘安路/教育路(路口)我想知道这个在什么地方
某酒店客房有三人间,双人间,三人间150元一
jndi只能和web 项目使用吗?能和Java 项目使
计划任务没运行
我想去百国兴隆寺出家父母不同意可以吗
中国移动怎样实现在国外通话
为什么别人支付宝给我转账,我收不到
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?