c++,将一个整数反转(包括负数)

用c++将一个数字反转
例如:123反转为321,-520反转为-25。最后一位数为0时不显示

下面是给出的程序:

#include<iostream>
#include<math.h>
using namespace std;

int main()
{
    int x;
    cin >> x;
    int n = abs(x);
    long num = 0;
    while (n != 0)
    {
        if (num<INT_MIN / 10 || num>INT_MAX / 10)//判断是否溢出
         {
           cout<<"数据过大";
           return 0
          }
        num = num * 10 + n % 10;
        n = n / 10;
    }
    if (x > 0)
       cout<< num;
    else
        cout<< -num;
        return 0;
}

这应该是很多人使用的方法

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个基于字符串实现的超长整数加减法的C++示例代码,可以满足上述要求: ```cpp #include <iostream> #include <string> #include <algorithm> using namespace std; // 去掉字符串前导0 string removeLeadingZeros(string s) { int i = 0; while (i < s.length() - 1 && s[i] == '0') { i++; } return s.substr(i); } // 超长整数加法 string add(string a, string b) { reverse(a.begin(), a.end()); // 字符串,从低位到高位相加 reverse(b.begin(), b.end()); int carry = 0; // 进位标志 string res; // 结果字符串 for (int i = 0; i < max(a.length(), b.length()); i++) { int x = i < a.length() ? a[i] - '0' : 0; int y = i < b.length() ? b[i] - '0' : 0; int s = x + y + carry; res += to_string(s % 10); carry = s / 10; } if (carry) { res += to_string(carry); } reverse(res.begin(), res.end()); // 去掉结果字符串的前导0并回来 return removeLeadingZeros(res); } // 超长整数减法 string subtract(string a, string b) { reverse(a.begin(), a.end()); // 字符串,从低位到高位相减 reverse(b.begin(), b.end()); int borrow = 0; // 借位标志 string res; // 结果字符串 for (int i = 0; i < max(a.length(), b.length()); i++) { int x = i < a.length() ? a[i] - '0' : 0; int y = i < b.length() ? b[i] - '0' : 0; int s = x - y - borrow; borrow = s < 0 ? 1 : 0; // 有借位时将借位标志设为1 res += to_string((s + 10) % 10); // 加10是为了保证结果为非负数 } reverse(res.begin(), res.end()); // 去掉结果字符串的前导0并回来 res = removeLeadingZeros(res); if (borrow) { res = "-" + res; // 如果结果为负数,加上负号 } return res; } // 主程序 int main() { string a, op, b; cin >> a >> op >> b; if (op == "+") { cout << add(a, b) << endl; } else if (op == "-") { cout << subtract(a, b) << endl; } else { cout << "Invalid operator" << endl; } return 0; } ``` 需要注意的是,在减法运算中,为了处理借位,需要将被减数和减数的相对大小进行比较,如果被减数小于减数,需要将它们交换位置,并在最终结果前加上负号。此外,由于C++的字符串类型不支持直接进行加减运算,需要使用字符数字的方法进行计算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值