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 "";
}
一段C语言的代码求解释
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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 ""; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 1
悬赏问题
- ¥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#的问题:自动化测试