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

如何仅用整数、循环或条件交换数字首尾位(禁用函数)

解决数字首尾位交换的问题(无函数/swap限制)

没问题,我来帮你搞定这个需求!首先得提一句,你代码里用到的pow()函数违反了“禁止使用任何函数”的要求,咱们先把这部分换成循环实现,再一步步完成首尾位交换的逻辑。

核心思路

要完成首尾位交换,我们只需要拆解出数字的三个部分,再重新组合:

  • 提取首位数字
  • 提取末位数字
  • 提取去掉首尾后的中间部分
  • 用「末位×最高位权重 + 中间部分×10 + 首位」的公式组合成新数字

修改后的完整代码

#include <iostream>
using namespace std;

int main() {
    int numri, originalNum, digitCount = 0;
    cout << "Jep nje numer \n";
    cin >> numri;
    originalNum = numri;

    // 计算数字的位数,同时算出最高位的权重(完全用循环替代pow函数)
    int highestWeight = 1;
    while (originalNum != 0) {
        digitCount++;
        if (digitCount > 1) {
            highestWeight *= 10;
        }
        originalNum = originalNum / 10;
    }
    originalNum = numri; // 恢复原数

    // 特殊情况处理:如果数字只有一位,交换后还是它本身
    if (digitCount == 1) {
        cout << "交换后的数字:" << originalNum << endl;
        cin.get();
        return 0;
    }

    // 拆分出三个关键部分
    int firstDigit = originalNum / highestWeight;          // 首位数字
    int lastDigit = originalNum % 10;                      // 末位数字
    int middlePart = (originalNum % highestWeight) / 10;   // 去掉首尾的中间部分

    // 组合成交换后的新数字
    int swappedNumber = lastDigit * highestWeight + middlePart * 10 + firstDigit;

    // 输出结果
    cout << "交换后的数字:" << swappedNumber << endl;

    cin.get();
    return 0;
}

代码细节解释

  1. 替代pow函数:用循环遍历数字,每多一位就把最高位权重乘以10,完全靠整数运算实现,不依赖任何函数。
  2. 特殊情况处理:如果输入的是个位数(比如7),首尾交换后没有变化,直接输出原数即可。
  3. 拆分逻辑:
    • 首位:原数除以最高位权重(比如12345 ÷ 10000 = 1)
    • 末位:原数取模10(12345 % 10 = 5)
    • 中间部分:先去掉首位(12345 % 10000 = 2345),再去掉末位(2345 ÷ 10 = 234)
  4. 重新组合:把末位放到最高位的位置,中间部分保持原有位数(乘以10是因为它原本从十位开始),最后补上首位数字。

这样就完全符合你的要求:只用整数、循环和条件语句,没有使用任何函数或swap操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:30:27