C语言如何实现打印数组中排除含数字5的所有元素?
解决方法
判断逻辑说明
要过滤包含数字5的元素,核心逻辑是逐位检测数字的每一位是否等于5:
- 对目标数字取模10,得到当前个位的数值,判断是否为5
- 若当前位是5,直接判定该数字需要被过滤
- 若当前位不是5,将数字除以10去掉已检测的个位,重复上述步骤
- 直到数字被除为0时,说明所有位都不含5,可以打印
代码实现
首先在main函数外新增一个检测函数:
// 返回值为1说明数字包含5,返回值为0说明不包含5 int hasFive(int num) { // 兼容负数场景,你当前用的都是正整数可删除该行 num = num < 0 ? -num : num; while (num > 0) { if (num % 10 == 5) { return 1; } num /= 10; } return 0; }
之后在你现有代码的末尾,追加打印不含5元素的逻辑即可:
// 打印降序排列、不含数字5的所有元素 printf("以下为降序排列的不含数字5的所有元素:\n"); for(int m = 19; m >= 0; m--) { if (!hasFive(array[m])) { printf("%i\n", array[m]); } }
如果你不想单独封装函数,也可以把判断逻辑直接写到循环里:
printf("以下为降序排列的不含数字5的所有元素:\n"); for(int m = 19; m >= 0; m--) { int temp = array[m]; int has5 = 0; while (temp > 0) { if (temp %10 ==5) { has5 = 1; break; } temp /=10; } if (!has5) { printf("%i\n", array[m]); } }
内容的提问来源于stack exchange,提问作者Abdullah Mushtaq
相关产品推荐
相关产品推荐

