数字前后加上符号“*”----c代码

来源:互联网 发布:cors网络账号怎么获取 编辑:程序博客网 时间:2024/06/13 16:53

今天看到一道华为的题,描述如下


以下是c代码,在vs2003上调试成功,参考了网上大神的例子,没有用链表没有用c++,这道题本来是要求使用c++完成的,我一做嵌入式的码农,对C语言情有独钟,因此在这里使用c语言。

注:所有的变量最好是在函数前面进行定义,否则会出现C2143的错误, error C2143: 语法错误 : 缺少“;”(在“类型”的前面),这个我在另一篇博客也有说过。微笑


</pre><pre name="code" class="html">#include <stdio.h>#include <stdlib.h>int IsDigital(char c){if ( c >= '0' && c <= '9'){return 1;}return 0;}void InsertAsterisk(const char * str ,char *pNew ){const char *pStr = str;char *pNewTmp = pNew;while (*pStr){if ((IsDigital(*pStr) && !IsDigital(*(pNewTmp-1))) ||(!IsDigital(*pStr) && IsDigital(*(pNewTmp-1))))// 状态改变时就插入'*'号{*pNewTmp++ = '*';}*pNewTmp++ = *pStr++;}if (IsDigital(*(pNewTmp-1)))// 处理末尾是数字字符的情况{*pNewTmp++ = '*';}*pNewTmp = 0;// 加上结束符}int main(){char strOld[100];// "fds43d435f";char strNew[150] = {0}; printf("please input......\n");    gets(strOld);               // 新串长度要足够插入所有*号    InsertAsterisk(strOld ,strNew);puts(strNew);    return 0;}

打印结果如下


0 0