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

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

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


微信图片_20230116142103.png


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

打印结果如下

微信图片_20230116142246.png

目录
相关文章
|
7月前
|
C#
C#学习相关系列之常用符号介绍
C#学习相关系列之常用符号介绍
C语言:十进制、BCD码互换
C语言:十进制、BCD码互换
C语言:十进制、BCD码互换
|
6月前
|
C语言
C语言----获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
C语言----获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
|
7月前
|
C语言
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
48 0
|
C语言
C语言:二进制、八进制、十六进制整数的书写及输出
C语言:二进制、八进制、十六进制整数的书写及输出
|
存储 编译器 C语言
【C语言】整数的二进制以及移位操作符
【C语言】整数的二进制以及移位操作符
111 0
|
存储 C语言
有符号位与无符号位超超超详解!!!
有符号位与无符号位超超超详解!!!
279 0
|
算法 C语言
10(可回看)【C语言 & 趣味算法】数制转换(常见,二进制、八进制、十进制、十六进制之间任意转换)
10(可回看)【C语言 & 趣味算法】数制转换(常见,二进制、八进制、十进制、十六进制之间任意转换)
10(可回看)【C语言 & 趣味算法】数制转换(常见,二进制、八进制、十进制、十六进制之间任意转换)
|
C语言
【C】替换空格,宏实现整数的二进制奇偶位交换
【C】替换空格,宏实现整数的二进制奇偶位交换
66 0
【C】替换空格,宏实现整数的二进制奇偶位交换
|
C语言
【C语言】写一个宏实现将一个整数的二进制的奇数位和偶数位交换
【C语言】写一个宏实现将一个整数的二进制的奇数位和偶数位交换
114 0
【C语言】写一个宏实现将一个整数的二进制的奇数位和偶数位交换