C语言编程:如何判断数字是否存在右数第三位并正确输出?
解决C语言判断数字右数第三位的问题
核心判断逻辑
要确定数字的右数第三位是否存在,只需要判断数字的绝对值是否大于等于100:
- 当绝对值≥100时,数字至少有三位,右数第三位存在;
- 当绝对值<100时,数字不足三位,右数第三位不存在。
用abs()函数可以统一处理正负数字,需要包含头文件<stdlib.h>。
修改后的完整代码
#include <stdio.h> #include <stdlib.h> int main() { printf("enter num\n"); int num = 0; if(scanf("%d", &num) < 1){ printf("that's not a number"); return 1; } if (abs(num) >= 100) { // 存在右数第三位,输出该位的数值(不含符号) printf("%d\n", (abs(num) / 100) % 10); } else { // 不存在则输出0 printf("0\n"); } return 0; }
代码细节说明
abs(num):取数字绝对值,同时解决负数的位数判断和数值位计算问题;(abs(num) / 100) % 10:先将数字除以100去掉最后两位,再取模10得到右数第三位的数值;- 分支判断明确区分了“存在该位”和“不存在该位”的情况,避免了单纯计算结果为0时的歧义。
内容的提问来源于stack exchange,提问作者user1285764
相关产品推荐
相关产品推荐

