如何使用数组打印 10 位大数字的反转?

Posted

技术标签:

【中文标题】如何使用数组打印 10 位大数字的反转?【英文标题】:how can i print reverse of a big 10 digit number by using arrays? 【发布时间】:2021-04-23 12:40:57 【问题描述】:

我一直在尝试编写一个函数来打印最大 10 位数字的 reveres 版本使用数组...但这里的问题是我的代码无法打印反向一个大的 10 位数字(如 9999999999 或 9784562312)正确...我不知道问题出在哪里! 有人有意见吗? (对不起,如果我有语法错误,我不是母语人士)

这里是代码:

int main()

    const int size = 10;    
    int number, revers;
    
    cin >> number;
    revers = inverse( number, size );
    cout<<revers;



int inverse( int n, int size)

    int sum=0, array[size]=0, i=0;
        
        for( i=0 ; n>=1 ; i++ )
            
            array[i] = n % 10;
            n /= 10;
        
    
    int l=i;
        i--;
    
    for(int j=0 ; j<l ; j++, i--)
        sum += pow(10,i)*array[j];
    
    
    return sum;

【问题讨论】:

int 的范围是 -21474836482147483647 -- 如果需要有符号值,请使用较大的类型,例如 uint64_tint64_t std::string 是一个数组。 您不需要数组。 (并且你不应该使用 pow 处理整数问题。) 我也写了没有数组,但我只是想知道为什么它不能这样工作.. 【参考方案1】:

您应该使用类似unsigned long long 而不是int,因为该值超过了最大 int 类型。

【讨论】:

【参考方案2】:

您可以只使用标准库提供的可用函数。 std::string 数据类型是一个数组,如果你坚持的话:

#include <cstdint>
#include <string>
#include <algorithm>
#include <iostream>

void printr(std::uint64_t x) 
  std::string s = std::to_string(x);
  std::reverse(std::begin(s),std::end(s));
  std::cout << s;

【讨论】:

以上是关于如何使用数组打印 10 位大数字的反转?的主要内容,如果未能解决你的问题,请参考以下文章

使用splice()方法反转数组

Python使用循环结构编写:输入一个整数,将整数中的数字反转,并在控制打印出来?

如何使用循环反转numpy数组

如何反转数组输入

如何使用 XOR 赋值运算符 ^= 来反转 c 中的数组

如何使用 Neon Extension 有效地反转汇编语言 ARM 中的数组?