卑卑徕徕 2021-06-23 21:13 采纳率: 66.7%
浏览 15
已采纳

一段C语言的代码求解释

char * largestOddNumber(char * num){
  char *first = num;
  char *last = num + strlen(num) - 1;
  while (last >= first) {
      if (*last & 0x1) {
          *(last + 1) = '\0';
          return first;
      }
      last--;
  }
  return "";
}
  • 写回答

1条回答 默认 最新

  • 老衲要还俗娶婆娘 2021-06-23 22:06
    关注
    /*
    函数作用:将一串数字字符串从后往前遍历,找到第一次出现奇数的位置
    然后返回修改后的字符串
    例:24386
    返回:243
    输入:213546
    输出:2135
    */
    char * largestOddNumber(char * num){
      char *first = num;                    
      char *last = num + strlen(num) - 1;       //输出num最后一个字符,num是首地址,加上strlen(num)-1,last指向的就是最后一个字符
    
      while (last >= first) {           //循环条件是从后向前遍历num字符串
          if (*last & 0x1) {            //C语言中&表示按位与,0x开头的表示的是十六进制数,k&0x1表示k与0x1按位与,其效果为取k的二进制中最右边的数字
                                        //在这里作为判断条件,实际上就是找奇数,奇数的二进制最右边为1
              *(last + 1) = '\0';       //令他后面的字符变为空字符    
              return first;             
          }
          last--;           //指针前移
      }
      return "";
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试