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

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


以下是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;
}

打印结果如下


发布了27 篇原创文章 · 获赞 19 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/muaxi8/article/details/52075954