數字前後加上符號“*”----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;
}

打印結果如下


發佈了28 篇原創文章 · 獲贊 19 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章