C_C++_WY_01. 字符倒叙输出
- 题目描述:
编写一个函数,将字符串中的每个单词的倒序输出,字符串中以空格分割各个单词,如果碰到数字则跳过。
- 要求实现函数:
void vConvertMsg(char *pInputStr, long lInputLen, char *pOutputStr);
【输入】
char *pInputStr:指向一个字符串的指针
long lInputLen:该字符串的长度
char *pOutputStr:指向一块输出的内存,和输入的字符串是大小是(lInputLen+1)
【返回】 无
【注意】 只需要完成该函数功能算法,中间不需要有任何IO的输入输出
- 示例
输入:He is a man no12 3456.
返回:eH si a nam on12 3456.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | #include <iostream>#include <string.h>#include <ctype.h>using namespace std; void convertWord(char *head, char *tail){ char tmp; while (head < tail) { tmp = *head; *head = *tail; *tail = tmp; head++; tail--; }} void vConvertMsg(char *pInputStr, long lInputLen, char *pOutputStr){ if ((pInputStr == NULL) || (lInputLen <= 0)) { return; } char *head = pInputStr; char *tail = pInputStr; while (*tail != '\0') { head = tail; while (isalpha(*tail) && (*tail != '\0')) //find the end of a word. { tail++; } tail--; //point to the end of a word. convertWord(head, tail); tail++; //point to the first char that it's not a alpha. while ((!isalpha(*tail)) && (*tail != '\0')) //find the head of a word. { tail++; } } strcpy(pOutputStr, pInputStr);} int main() { char pInputStr[] = "He is a man no12 3456"; char pOutputStr[strlen(pInputStr)+1]; vConvertMsg(pInputStr, strlen(pInputStr), pOutputStr); cout << pOutputStr << endl; return 0;} |