如何在C语言反转用户输入数字时去除输出结果末尾的0
反转数字截断末尾0实现方案
问题原因
现有代码逐位取余后直接打印,原数字末尾的0会作为反转结果的前导0输出,而整形变量存储时不会保留前导0,因此可以先计算完整反转值再统一打印,自动抹除无效前导0。
修改后代码
#include <stdio.h> int main(void) { int x, s, rev = 0; scanf("%i", &x); // 兼容输入为0的场景 if (x == 0) { printf("0"); return 0; } for (int i = x; i > 0; i /= 10) { s = i % 10; rev = rev * 10 + s; } printf("%i", rev); return 0; }
修改说明
- 新增反转结果变量
rev,初始值为0,逐位拼接反转数字过程中自动忽略前导0 - 循环内取消逐位打印,改为将当前位数字拼接到
rev末尾 - 新增输入为0的兼容逻辑,避免输入0时无输出
运行示例
输入420时,循环执行逻辑:
- i=420,s=0,rev=0*10+0=0,i=42
- i=42,s=2,rev=0*10+2=2,i=4
- i=4,s=4,rev=2*10+4=24,i=0,循环结束
最终打印24,符合需求。
内容的提问来源于stack exchange,提问作者codeloverfromkz
相关产品推荐
相关产品推荐

