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

C++实现数字对称比较输出功能,奇数位场景代码无输出求排查

问题分析与修复代码

原代码核心问题

  • 未正确提取数字的各数位值,直接用循环变量i、j做比较,和实际数位没有关联
  • 内层循环逻辑错误,j的初始值为末位数字的数值,循环判断条件j<middle完全不符合业务逻辑,大概率不会进入循环,因此无输出
  • 未实现中间位直接输出的逻辑,输出顺序也不符合需求要求
  • 偶数位的判断逻辑错误,题目要求偶数位也需要完成对称配对比较输出结果,不需要提示无中间位

修复思路

  1. 将输入数字的所有数位按顺序存入数组,方便对称位置快速取值
  2. 从最外侧的对称数位开始逐对向内比较,每次输出较大的数位值
  3. 若为奇数位数字,所有配对比较完成后直接输出中间数位的值

修复后可运行代码

#include <iostream>
#include <vector>
using namespace std;

int countDigit(int n) {
    int count = 0;
    while (n != 0) {
        count++;
        n /= 10;
    }
    return count;
}

int main() {
    int n;
    cin >> n;
    int count = countDigit(n);
    vector<int> digits(count);
    
    // 把数字的每一位存入数组,digits[0]是最高位,digits[count-1]是最低位
    int temp = n;
    for (int i = count - 1; i >= 0; i--) {
        digits[i] = temp % 10;
        temp /= 10;
    }
    
    int pairCount = count / 2;
    // 逐对比较对称位置的数位
    for (int i = 0; i < pairCount; i++) {
        int left = digits[i];
        int right = digits[count - 1 - i];
        cout << (left > right ? left : right) << " ";
    }
    // 奇数位输出中间位
    if (count % 2 != 0) {
        cout << digits[pairCount];
    }
    cout << endl;
    
    return 0;
}

测试验证

  • 输入13257(5位奇数),输出7 5 2,符合示例要求
  • 输入583241(6位偶数),输出5 8 3,符合示例要求

内容的提问来源于stack exchange,提问作者tupkon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:15:03