题解:洛谷 P1307 [NOIP 2011 普及组] 数字反转

【题目来源】

洛谷:P1307 [NOIP 2011 普及组] 数字反转 - 洛谷 (luogu.com.cn)

【题目描述】

给定一个整数 \(N\),请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。

【输入】

一个整数 \(N\)

【输出】

一个整数,表示反转后的新数。

【输入样例】

123

【输出样例】

321

【算法标签】

《洛谷 P1307 数字反转》 #模拟# #字符串# #NOIP普及组# #2011#

【代码详解】

#include <bits/stdc++.h>  // 包含标准库头文件
using namespace std;

int main()
{
    int n, s = 0, t;  // n:输入整数, s:反转后的数, t:临时存储数字
    bool mark = false;  // 标记是否为负数
  
    // 输入整数n
    cin >> n;
  
    // 处理负数情况
    if (n < 0) {
        mark = true;    // 设置负数标记
        n = -1 * n;     // 转为正数处理
    }
  
    // 数字反转过程
    while (n != 0) {
        t = n % 10;     // 获取最后一位数字
        n /= 10;        // 去掉最后一位
        s = s * 10 + t; // 将数字添加到反转结果中
    }
  
    // 如果是负数,恢复负号
    if (mark) {
        s = -1 * s;
    }
  
    // 输出反转后的数字
    cout << s;
  
    return 0;
}

【运行结果】

-380
-83
posted @ 2026-02-16 15:20  团爸讲算法  阅读(5)  评论(0)    收藏  举报