You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言数字反转程序问题:输入01与10时反转结果异常

C语言数字反转程序:前导零输入处理问题

问题原因

你的代码用int类型存储输入,通过scanf("%d", &n)读取数据——C语言的整数类型会自动忽略前导零,输入01会被直接解析为整数1,反转后自然只能得到1,无法输出预期的10。整数本身不具备存储前导零的能力,要保留输入中的前导零信息,必须改用字符串来处理。

解决方案:字符串反转实现

直接将输入读取为字符串,通过反转字符串的方式输出,完整保留输入的所有字符(包括前导零):

#include<stdio.h>
#include<string.h>

int main(){
    char num[20];
    printf("Enter the number:");
    scanf("%s", num);
    
    int len = strlen(num);
    printf("Reverse of that number:");
    for(int i = len - 1; i >= 0; i--){
        printf("%c", num[i]);
    }
    printf("\n");
    return 0;
}

补充说明

  • 若需要确保输入为纯数字,可以在读取字符串后添加校验逻辑,遍历每个字符确认其为0-9的数字。
  • 原代码处理10时,输入会被解析为整数10,反转后得到的01作为整数输出时会自动去掉前导零,显示为1。如果期望输入10输出01,同样需要使用字符串处理方式。

内容的提问来源于stack exchange,提问作者Shushant Kumar Awasthi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 18:50:43