数字前后加上符号“*”----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

目录
相关文章
|
1月前
|
C#
C#学习相关系列之常用符号介绍
C#学习相关系列之常用符号介绍
|
7月前
|
C语言
C语言:二进制、八进制、十六进制整数的书写及输出
C语言:二进制、八进制、十六进制整数的书写及输出
|
7月前
|
存储 编译器 C语言
【C语言】整数的二进制以及移位操作符
【C语言】整数的二进制以及移位操作符
73 0
|
8月前
|
存储 人工智能 编译器
C语言之(有关%d和%u的有关内容,输出方法)(有符号和无符号在内存中的存储情况)(整形无符号数和有符号数是如何进行计算的,整形无符号数和有符号数在循环中的应用举例)
C语言之(有关%d和%u的有关内容,输出方法)(有符号和无符号在内存中的存储情况)(整形无符号数和有符号数是如何进行计算的,整形无符号数和有符号数在循环中的应用举例)
298 0
|
10月前
|
存储 C语言
有符号位与无符号位超超超详解!!!
有符号位与无符号位超超超详解!!!
218 0
|
11月前
【QT常见错误】 --- 数字与字符相加时,数字并不会发生隐式转换
【QT常见错误】 --- 数字与字符相加时,数字并不会发生隐式转换
63 0
【C语言】大小写字母判断、转化函数总结
以下函数的头文件都是 #include <ctype.h>
|
C++
C++ 各种无符号整型能够在溢出之前计算出斐波那契数列的最大项数是几?答案是24、47、93
C++ 各种无符号整型能够在溢出之前计算出斐波那契数列的最大项数是几?答案是24、47、93
61 0
【C语言】输入一个整数,输出该数二进制表示中1的个数,其中负数用补码表示
输入一个整数,输出该数二进制表示中1的个数,其中负数用补码表示
|
C语言
C语言中用二进制输出一个数字
C语言中用二进制输出一个数字
134 0